---
libavcodec/cabac.c | 6 ++++++
libavcodec/h264.c | 3 ++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c
index 50f086e..e1cd811 100644
--- a/libavcodec/cabac.c
+++ b/libavcodec/cabac.c
@@ -137,6 +137,10 @@ void ff_init_cabac_decoder(CABACContext *c, const uint8_t
*buf, int buf_size){
void ff_init_cabac_states(void)
{
int i, j;
+ static int initialized = 0;
+
+ if (initialized)
+ return;
for(i=0; i<64; i++){
for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save
@@ -158,4 +162,6 @@ void ff_init_cabac_states(void)
for(i=0; i< 63; i++){
ff_h264_last_coeff_flag_offset_8x8[i] = last_coeff_flag_offset_8x8[i];
}
+
+ initialized = 1;
}
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 77f4fc0..73de784 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1462,6 +1462,8 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx)
ff_h264_decode_init_vlc();
+ ff_init_cabac_states();
+
h->pixel_shift = 0;
h->sps.bit_depth_luma = avctx->bits_per_raw_sample = 8;
@@ -4158,7 +4160,6 @@ static int decode_slice(struct AVCodecContext *avctx,
void *arg)
align_get_bits(&h->gb);
/* init cabac */
- ff_init_cabac_states();
ff_init_cabac_decoder(&h->cabac,
h->gb.buffer + get_bits_count(&h->gb) / 8,
(get_bits_left(&h->gb) + 7) / 8);
--
1.7.10.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel