mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '167e004e1aca7765686ed95d7cd8ea5064d4f6f6'
* commit '167e004e1aca7765686ed95d7cd8ea5064d4f6f6': h264: drop any pretense of support for data partitioning Conflicts: libavcodec/h264.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
392080cbe5
|
@ -1544,7 +1544,6 @@ again:
|
|||
init_get_bits(&hx->gb, ptr, bit_length);
|
||||
hx->intra_gb_ptr =
|
||||
hx->inter_gb_ptr = &hx->gb;
|
||||
hx->data_partitioning = 0;
|
||||
|
||||
if ((err = ff_h264_decode_slice_header(hx, h)))
|
||||
break;
|
||||
|
@ -1615,49 +1614,11 @@ again:
|
|||
}
|
||||
break;
|
||||
case NAL_DPA:
|
||||
if (h->avctx->flags & CODEC_FLAG2_CHUNKS) {
|
||||
av_log(h->avctx, AV_LOG_ERROR,
|
||||
"Decoding in chunks is not supported for "
|
||||
"partitioned slices.\n");
|
||||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
init_get_bits(&hx->gb, ptr, bit_length);
|
||||
hx->intra_gb_ptr =
|
||||
hx->inter_gb_ptr = NULL;
|
||||
|
||||
if ((err = ff_h264_decode_slice_header(hx, h))) {
|
||||
/* make sure data_partitioning is cleared if it was set
|
||||
* before, so we don't try decoding a slice without a valid
|
||||
* slice header later */
|
||||
h->data_partitioning = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
hx->data_partitioning = 1;
|
||||
break;
|
||||
case NAL_DPB:
|
||||
init_get_bits(&hx->intra_gb, ptr, bit_length);
|
||||
hx->intra_gb_ptr = &hx->intra_gb;
|
||||
break;
|
||||
case NAL_DPC:
|
||||
init_get_bits(&hx->inter_gb, ptr, bit_length);
|
||||
hx->inter_gb_ptr = &hx->inter_gb;
|
||||
|
||||
av_log(h->avctx, AV_LOG_ERROR, "Partitioned H.264 support is incomplete\n");
|
||||
break;
|
||||
|
||||
if (hx->redundant_pic_count == 0 &&
|
||||
hx->intra_gb_ptr &&
|
||||
hx->data_partitioning &&
|
||||
h->cur_pic_ptr && h->context_initialized &&
|
||||
(avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc) &&
|
||||
(avctx->skip_frame < AVDISCARD_BIDIR ||
|
||||
hx->slice_type_nos != AV_PICTURE_TYPE_B) &&
|
||||
(avctx->skip_frame < AVDISCARD_NONINTRA ||
|
||||
hx->slice_type_nos == AV_PICTURE_TYPE_I) &&
|
||||
avctx->skip_frame < AVDISCARD_ALL)
|
||||
context_count++;
|
||||
avpriv_request_sample(avctx, "data partitioning");
|
||||
ret = AVERROR(ENOSYS);
|
||||
goto end;
|
||||
break;
|
||||
case NAL_SEI:
|
||||
init_get_bits(&h->gb, ptr, bit_length);
|
||||
|
@ -1814,9 +1775,6 @@ static int h264_decode_frame(AVCodecContext *avctx, void *data,
|
|||
int ret;
|
||||
|
||||
h->flags = avctx->flags;
|
||||
/* reset data partitioning here, to ensure GetBitContexts from previous
|
||||
* packets do not get used. */
|
||||
h->data_partitioning = 0;
|
||||
|
||||
ff_h264_unref_picture(h, &h->last_pic_for_ec);
|
||||
|
||||
|
|
|
@ -363,7 +363,6 @@ typedef struct H264Context {
|
|||
|
||||
int qscale;
|
||||
int droppable;
|
||||
int data_partitioning;
|
||||
int coded_picture_number;
|
||||
int low_delay;
|
||||
|
||||
|
|
|
@ -1223,7 +1223,6 @@ static int h264_slice_header_init(H264Context *h, int reinit)
|
|||
c->chroma_y_shift = h->chroma_y_shift;
|
||||
c->qscale = h->qscale;
|
||||
c->droppable = h->droppable;
|
||||
c->data_partitioning = h->data_partitioning;
|
||||
c->low_delay = h->low_delay;
|
||||
c->mb_width = h->mb_width;
|
||||
c->mb_height = h->mb_height;
|
||||
|
|
Loading…
Reference in New Issue