diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c index f0c90dec16..75e5fb7483 100644 --- a/libavcodec/h264_cavlc.c +++ b/libavcodec/h264_cavlc.c @@ -419,20 +419,13 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, else coeff_token = get_vlc2(gb, chroma422_dc_coeff_token_vlc_table, CHROMA422_DC_COEFF_TOKEN_VLC_BITS, 1); - total_coeff= coeff_token>>2; }else{ - if(n >= LUMA_DC_BLOCK_INDEX){ - total_coeff= pred_non_zero_count(h, sl, (n - LUMA_DC_BLOCK_INDEX)*16); - coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], - COEFF_TOKEN_VLC_BITS, 2); - total_coeff= coeff_token>>2; - }else{ - total_coeff= pred_non_zero_count(h, sl, n); - coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], - COEFF_TOKEN_VLC_BITS, 2); - total_coeff= coeff_token>>2; - } + total_coeff = pred_non_zero_count(h, sl, n >= LUMA_DC_BLOCK_INDEX ? + (n - LUMA_DC_BLOCK_INDEX) * 16 : n); + coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], + COEFF_TOKEN_VLC_BITS, 2); } + total_coeff = coeff_token >> 2; sl->non_zero_count_cache[scan8[n]] = total_coeff; //FIXME set last_non_zero?