Home | History | Annotate | Download | only in decoder
      1 /*
      2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 
     12 #include "dboolhuff.h"
     13 #include "vpx_ports/mem.h"
     14 #include "vpx_mem/vpx_mem.h"
     15 
     16 DECLARE_ALIGNED(16, const unsigned char, vp8dx_bitreader_norm[256]) =
     17 {
     18     0, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     19     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     20     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     21     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     22     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     23     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     24     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     25     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
     26 };
     27 
     28 
     29 int vp8dx_start_decode(BOOL_DECODER *br,
     30                        const unsigned char *source,
     31                        unsigned int source_sz)
     32 {
     33     br->user_buffer_end = source+source_sz;
     34     br->user_buffer     = source;
     35     br->value    = 0;
     36     br->count    = -8;
     37     br->range    = 255;
     38 
     39     if (source_sz && !source)
     40         return 1;
     41 
     42     /* Populate the buffer */
     43     vp8dx_bool_decoder_fill(br);
     44 
     45     return 0;
     46 }
     47 
     48 
     49 void vp8dx_bool_decoder_fill(BOOL_DECODER *br)
     50 {
     51     const unsigned char *bufptr;
     52     const unsigned char *bufend;
     53     VP8_BD_VALUE         value;
     54     int                  count;
     55     bufend = br->user_buffer_end;
     56     bufptr = br->user_buffer;
     57     value = br->value;
     58     count = br->count;
     59 
     60     VP8DX_BOOL_DECODER_FILL(count, value, bufptr, bufend);
     61 
     62     br->user_buffer = bufptr;
     63     br->value = value;
     64     br->count = count;
     65 }
     66