| /* |
| * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the dboolhuff.LICENSE file in this directory. |
| * See the libvpx original distribution for more information, |
| * including patent information, and author information. |
| */ |
| |
| |
| #include "dboolhuff.h" |
| |
| #ifdef _MSC_VER |
| __declspec(align(16)) const unsigned char vp8_norm[256] = { |
| #else |
| const unsigned char vp8_norm[256] __attribute__ ((aligned (16))) = { |
| #endif |
| 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, |
| 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, |
| 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, |
| 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, |
| 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, |
| 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, |
| 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, |
| 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}; |
| |
| int |
| vp8dx_start_decode (BOOL_DECODER * br, |
| const unsigned char *source, unsigned int source_sz) |
| { |
| br->user_buffer_end = source + source_sz; |
| br->user_buffer = source; |
| br->value = 0; |
| br->count = -8; |
| br->range = 255; |
| |
| if (source_sz && !source) |
| return 1; |
| |
| /* Populate the buffer */ |
| vp8dx_bool_decoder_fill (br); |
| |
| return 0; |
| } |
| |
| |
| void |
| vp8dx_bool_decoder_fill (BOOL_DECODER * br) |
| { |
| const unsigned char *bufptr; |
| const unsigned char *bufend; |
| VP8_BD_VALUE value; |
| int count; |
| bufend = br->user_buffer_end; |
| bufptr = br->user_buffer; |
| value = br->value; |
| count = br->count; |
| |
| VP8DX_BOOL_DECODER_FILL (count, value, bufptr, bufend); |
| |
| br->user_buffer = bufptr; |
| br->value = value; |
| br->count = count; |
| } |