mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
h264: do not reinitialize the global cabac tables at each slice header
This commit is contained in:
parent
e880418660
commit
cab8c5f8e1
@ -137,6 +137,10 @@ void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size){
|
|||||||
void ff_init_cabac_states(void)
|
void ff_init_cabac_states(void)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
static int initialized = 0;
|
||||||
|
|
||||||
|
if (initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
for(i=0; i<64; i++){
|
for(i=0; i<64; i++){
|
||||||
for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save
|
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++){
|
for(i=0; i< 63; i++){
|
||||||
ff_h264_last_coeff_flag_offset_8x8[i] = last_coeff_flag_offset_8x8[i];
|
ff_h264_last_coeff_flag_offset_8x8[i] = last_coeff_flag_offset_8x8[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initialized = 1;
|
||||||
}
|
}
|
||||||
|
@ -1548,6 +1548,8 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
ff_h264_decode_init_vlc();
|
ff_h264_decode_init_vlc();
|
||||||
|
|
||||||
|
ff_init_cabac_states();
|
||||||
|
|
||||||
h->pixel_shift = 0;
|
h->pixel_shift = 0;
|
||||||
h->sps.bit_depth_luma = avctx->bits_per_raw_sample = 8;
|
h->sps.bit_depth_luma = avctx->bits_per_raw_sample = 8;
|
||||||
|
|
||||||
@ -4244,7 +4246,6 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg)
|
|||||||
align_get_bits(&h->gb);
|
align_get_bits(&h->gb);
|
||||||
|
|
||||||
/* init cabac */
|
/* init cabac */
|
||||||
ff_init_cabac_states();
|
|
||||||
ff_init_cabac_decoder(&h->cabac,
|
ff_init_cabac_decoder(&h->cabac,
|
||||||
h->gb.buffer + get_bits_count(&h->gb) / 8,
|
h->gb.buffer + get_bits_count(&h->gb) / 8,
|
||||||
(get_bits_left(&h->gb) + 7) / 8);
|
(get_bits_left(&h->gb) + 7) / 8);
|
||||||
|
Loading…
Reference in New Issue
Block a user