X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fcabac.c;h=7b5e5b1de425edda44e5ea2c5fb8f3a4c0d9bc11;hb=34630b93dc7cf028a4b483c19c4f6ca4162c25c0;hp=91db6c33eaa8122a7a12b1a6f264c2e4688ae71d;hpb=f24a51593145dd471ce5bdbb0694caae1fbead61;p=ffmpeg diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c index 91db6c33eaa..7b5e5b1de42 100644 --- a/libavcodec/cabac.c +++ b/libavcodec/cabac.c @@ -17,18 +17,17 @@ * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * */ /** - * @file cabac.c + * @file * Context Adaptive Binary Arithmetic Coder. */ #include -#include "common.h" -#include "bitstream.h" +#include "libavutil/common.h" +#include "get_bits.h" #include "cabac.h" static const uint8_t lps_range[64][4]= { @@ -51,7 +50,7 @@ static const uint8_t lps_range[64][4]= { }; uint8_t ff_h264_mlps_state[4*64]; -uint8_t ff_h264_lps_range[4][2*64]; +uint8_t ff_h264_lps_range[4*2*64]; uint8_t ff_h264_lps_state[2*64]; uint8_t ff_h264_mps_state[2*64]; @@ -152,8 +151,8 @@ void ff_init_cabac_states(CABACContext *c){ for(i=0; i<64; i++){ for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save - ff_h264_lps_range[j][2*i+0]= - ff_h264_lps_range[j][2*i+1]= lps_range[i][j]; + ff_h264_lps_range[j*2*64+2*i+0]= + ff_h264_lps_range[j*2*64+2*i+1]= lps_range[i][j]; } ff_h264_mlps_state[128+2*i+0]= @@ -179,23 +178,27 @@ void ff_init_cabac_states(CABACContext *c){ } } -#if 0 //selftest +#ifdef TEST #define SIZE 10240 +#include "libavutil/lfg.h" #include "avcodec.h" +#include "cabac.h" -int main(){ +int main(void){ CABACContext c; uint8_t b[9*SIZE]; uint8_t r[9*SIZE]; int i; uint8_t state[10]= {0}; + AVLFG prng; + av_lfg_init(&prng, 1); ff_init_cabac_encoder(&c, b, SIZE); - ff_init_cabac_states(&c, ff_h264_lps_range, ff_h264_mps_state, ff_h264_lps_state, 64); + ff_init_cabac_states(&c); for(i=0; i