| @@ -221,7 +221,6 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, | |||
| { | |||
| int i, si, di; | |||
| uint8_t *dst; | |||
| int bufidx; | |||
| // src[0]&0x80; // forbidden bit | |||
| h->nal_ref_idc = src[0] >> 5; | |||
| @@ -283,11 +282,9 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, | |||
| return src; | |||
| } | |||
| // use second escape buffer for inter data | |||
| bufidx = h->nal_unit_type == NAL_DPC ? 1 : 0; | |||
| av_fast_malloc(&h->rbsp_buffer[bufidx], &h->rbsp_buffer_size[bufidx], | |||
| av_fast_malloc(&h->rbsp_buffer, &h->rbsp_buffer_size, | |||
| length + FF_INPUT_BUFFER_PADDING_SIZE); | |||
| dst = h->rbsp_buffer[bufidx]; | |||
| dst = h->rbsp_buffer; | |||
| if (!dst) | |||
| return NULL; | |||
| @@ -394,10 +391,8 @@ void ff_h264_free_tables(H264Context *h, int free_rbsp) | |||
| av_freep(&hx->er.mbskip_table); | |||
| if (free_rbsp) { | |||
| av_freep(&hx->rbsp_buffer[1]); | |||
| av_freep(&hx->rbsp_buffer[0]); | |||
| hx->rbsp_buffer_size[0] = 0; | |||
| hx->rbsp_buffer_size[1] = 0; | |||
| av_freep(&hx->rbsp_buffer); | |||
| hx->rbsp_buffer_size = 0; | |||
| } | |||
| if (i) | |||
| av_freep(&h->thread_context[i]); | |||
| @@ -717,10 +712,8 @@ static int decode_init_thread_copy(AVCodecContext *avctx) | |||
| h->slice_ctx[i].h264 = h; | |||
| h->avctx = avctx; | |||
| h->rbsp_buffer[0] = NULL; | |||
| h->rbsp_buffer[1] = NULL; | |||
| h->rbsp_buffer_size[0] = 0; | |||
| h->rbsp_buffer_size[1] = 0; | |||
| h->rbsp_buffer = NULL; | |||
| h->rbsp_buffer_size = 0; | |||
| h->context_initialized = 0; | |||
| return 0; | |||
| @@ -1535,8 +1528,6 @@ again: | |||
| idr(h); // FIXME ensure we don't lose some frames if there is reordering | |||
| case NAL_SLICE: | |||
| init_get_bits(&hx->gb, ptr, bit_length); | |||
| hx->intra_gb_ptr = | |||
| hx->inter_gb_ptr = &hx->gb; | |||
| if ((err = ff_h264_decode_slice_header(hx, sl, h))) | |||
| break; | |||
| @@ -500,12 +500,6 @@ typedef struct H264Context { | |||
| uint8_t *list_counts; ///< Array of list_count per MB specifying the slice type | |||
| // data partitioning | |||
| GetBitContext intra_gb; | |||
| GetBitContext inter_gb; | |||
| GetBitContext *intra_gb_ptr; | |||
| GetBitContext *inter_gb_ptr; | |||
| /* 0x100 -> non null luma_dc, 0x80/0x40 -> non null chroma_dc (cb/cr), 0x?0 -> chroma_cbp(0, 1, 2), 0x0? luma_cbp */ | |||
| uint16_t *cbp_table; | |||
| @@ -539,8 +533,8 @@ typedef struct H264Context { | |||
| int nal_ref_idc; | |||
| int nal_unit_type; | |||
| uint8_t *rbsp_buffer[2]; | |||
| unsigned int rbsp_buffer_size[2]; | |||
| uint8_t *rbsp_buffer; | |||
| unsigned int rbsp_buffer_size; | |||
| /** | |||
| * Used to parse AVC variant of h264 | |||
| @@ -636,7 +636,7 @@ static av_always_inline int decode_luma_residual(H264Context *h, H264SliceContex | |||
| AV_ZERO128(sl->mb_luma_dc[p]+8); | |||
| AV_ZERO128(sl->mb_luma_dc[p]+16); | |||
| AV_ZERO128(sl->mb_luma_dc[p]+24); | |||
| if( decode_residual(h, sl, h->intra_gb_ptr, sl->mb_luma_dc[p], LUMA_DC_BLOCK_INDEX+p, scan, NULL, 16) < 0){ | |||
| if (decode_residual(h, sl, gb, sl->mb_luma_dc[p], LUMA_DC_BLOCK_INDEX + p, scan, NULL, 16) < 0) { | |||
| return -1; //FIXME continue if partitioned and other return -1 too | |||
| } | |||
| @@ -646,7 +646,7 @@ static av_always_inline int decode_luma_residual(H264Context *h, H264SliceContex | |||
| for(i8x8=0; i8x8<4; i8x8++){ | |||
| for(i4x4=0; i4x4<4; i4x4++){ | |||
| const int index= i4x4 + 4*i8x8 + p*16; | |||
| if( decode_residual(h, sl, h->intra_gb_ptr, sl->mb + (16*index << pixel_shift), | |||
| if( decode_residual(h, sl, gb, sl->mb + (16*index << pixel_shift), | |||
| index, scan + 1, h->dequant4_coeff[p][qscale], 15) < 0 ){ | |||
| return -1; | |||
| } | |||
| @@ -1083,7 +1083,7 @@ decode_intra_mb: | |||
| int i4x4, i8x8, chroma_idx; | |||
| int dquant; | |||
| int ret; | |||
| GetBitContext *gb= IS_INTRA(mb_type) ? h->intra_gb_ptr : h->inter_gb_ptr; | |||
| GetBitContext *gb = &h->gb; | |||
| const uint8_t *scan, *scan8x8; | |||
| const int max_qp = 51 + 6*(h->sps.bit_depth_luma-8); | |||
| @@ -528,10 +528,8 @@ int ff_h264_update_thread_context(AVCodecContext *dst, | |||
| return ret; | |||
| } | |||
| for (i = 0; i < 2; i++) { | |||
| h->rbsp_buffer[i] = NULL; | |||
| h->rbsp_buffer_size[i] = 0; | |||
| } | |||
| h->rbsp_buffer = NULL; | |||
| h->rbsp_buffer_size = 0; | |||
| h->bipred_scratchpad = NULL; | |||
| h->edge_emu_buffer = NULL; | |||