LCOV - code coverage report
Current view: top level - third_party/aom/aom_dsp - daalaboolreader.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 9 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
       3             :  *
       4             :  * This source code is subject to the terms of the BSD 2 Clause License and
       5             :  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
       6             :  * was not distributed with this source code in the LICENSE file, you can
       7             :  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
       8             :  * Media Patent License 1.0 was not distributed with this source code in the
       9             :  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
      10             :  */
      11             : 
      12             : #ifndef AOM_DSP_DAALABOOLREADER_H_
      13             : #define AOM_DSP_DAALABOOLREADER_H_
      14             : 
      15             : #include "aom/aom_integer.h"
      16             : #include "aom_dsp/entdec.h"
      17             : #include "aom_dsp/prob.h"
      18             : #if CONFIG_ACCOUNTING
      19             : #include "av1/decoder/accounting.h"
      20             : #endif
      21             : #if CONFIG_BITSTREAM_DEBUG
      22             : #include <stdio.h>
      23             : #include "aom_util/debug_util.h"
      24             : #endif  // CONFIG_BITSTREAM_DEBUG
      25             : 
      26             : #ifdef __cplusplus
      27             : extern "C" {
      28             : #endif
      29             : 
      30             : struct daala_reader {
      31             :   const uint8_t *buffer;
      32             :   const uint8_t *buffer_end;
      33             :   od_ec_dec ec;
      34             : #if CONFIG_ACCOUNTING
      35             :   Accounting *accounting;
      36             : #endif
      37             : };
      38             : 
      39             : typedef struct daala_reader daala_reader;
      40             : 
      41             : int aom_daala_reader_init(daala_reader *r, const uint8_t *buffer, int size);
      42             : const uint8_t *aom_daala_reader_find_end(daala_reader *r);
      43             : uint32_t aom_daala_reader_tell(const daala_reader *r);
      44             : uint32_t aom_daala_reader_tell_frac(const daala_reader *r);
      45             : 
      46           0 : static INLINE int aom_daala_read(daala_reader *r, int prob) {
      47             :   int bit;
      48             : #if CONFIG_EC_SMALLMUL
      49           0 :   int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
      50             : #else
      51             :   int p = ((prob << 15) + 256 - prob) >> 8;
      52             : #endif
      53             : #if CONFIG_BITSTREAM_DEBUG
      54             : /*{
      55             :   const int queue_r = bitstream_queue_get_read();
      56             :   const int frame_idx = bitstream_queue_get_frame_read();
      57             :   if (frame_idx == 0 && queue_r == 0) {
      58             :     fprintf(stderr, "\n *** bitstream queue at frame_idx_r %d queue_r %d\n",
      59             :             frame_idx, queue_r);
      60             :   }
      61             : }*/
      62             : #endif
      63             : 
      64           0 :   bit = od_ec_decode_bool_q15(&r->ec, p);
      65             : 
      66             : #if CONFIG_BITSTREAM_DEBUG
      67             :   {
      68             :     int i;
      69             :     int ref_bit, ref_nsymbs;
      70             :     aom_cdf_prob ref_cdf[16];
      71             :     const int queue_r = bitstream_queue_get_read();
      72             :     const int frame_idx = bitstream_queue_get_frame_read();
      73             :     bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs);
      74             :     if (ref_nsymbs != 2) {
      75             :       fprintf(stderr,
      76             :               "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs "
      77             :               "%d queue_r %d\n",
      78             :               frame_idx, 2, ref_nsymbs, queue_r);
      79             :       assert(0);
      80             :     }
      81             :     if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) ||
      82             :         (ref_cdf[1] != 32767)) {
      83             :       fprintf(stderr,
      84             :               "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d",
      85             :               frame_idx, p, 32767, ref_cdf[0]);
      86             :       for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]);
      87             :       fprintf(stderr, "} queue_r %d\n", queue_r);
      88             :       assert(0);
      89             :     }
      90             :     if (bit != ref_bit) {
      91             :       fprintf(stderr,
      92             :               "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d "
      93             :               "queue_r %d\n",
      94             :               frame_idx, bit, ref_bit, queue_r);
      95             :       assert(0);
      96             :     }
      97             :   }
      98             : #endif
      99             : 
     100           0 :   return bit;
     101             : }
     102             : 
     103             : #if CONFIG_RAWBITS
     104             : static INLINE int aom_daala_read_bit(daala_reader *r) {
     105             :   return od_ec_dec_bits(&r->ec, 1, "aom_bits");
     106             : }
     107             : #endif
     108             : 
     109           0 : static INLINE int aom_daala_reader_has_error(daala_reader *r) {
     110           0 :   return r->ec.error;
     111             : }
     112             : 
     113           0 : static INLINE int daala_read_symbol(daala_reader *r, const aom_cdf_prob *cdf,
     114             :                                     int nsymbs) {
     115             :   int symb;
     116           0 :   symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs);
     117             : 
     118             : #if CONFIG_BITSTREAM_DEBUG
     119             :   {
     120             :     int i;
     121             :     int cdf_error = 0;
     122             :     int ref_symb, ref_nsymbs;
     123             :     aom_cdf_prob ref_cdf[16];
     124             :     const int queue_r = bitstream_queue_get_read();
     125             :     const int frame_idx = bitstream_queue_get_frame_read();
     126             :     bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs);
     127             :     if (nsymbs != ref_nsymbs) {
     128             :       fprintf(stderr,
     129             :               "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d "
     130             :               "queue_r %d\n",
     131             :               frame_idx, nsymbs, ref_nsymbs, queue_r);
     132             :       cdf_error = 0;
     133             :       assert(0);
     134             :     } else {
     135             :       for (i = 0; i < nsymbs; ++i)
     136             :         if (cdf[i] != ref_cdf[i]) cdf_error = 1;
     137             :     }
     138             :     if (cdf_error) {
     139             :       fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx,
     140             :               cdf[0]);
     141             :       for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]);
     142             :       fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]);
     143             :       for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]);
     144             :       fprintf(stderr, "} queue_r %d\n", queue_r);
     145             :       assert(0);
     146             :     }
     147             :     if (symb != ref_symb) {
     148             :       fprintf(
     149             :           stderr,
     150             :           "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n",
     151             :           frame_idx, symb, ref_symb, queue_r);
     152             :       assert(0);
     153             :     }
     154             :   }
     155             : #endif
     156             : 
     157           0 :   return symb;
     158             : }
     159             : 
     160             : #ifdef __cplusplus
     161             : }  // extern "C"
     162             : #endif
     163             : 
     164             : #endif

Generated by: LCOV version 1.13