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:
Michael Niedermayer 2015-01-27 16:03:23 +01:00
commit 392080cbe5
3 changed files with 3 additions and 47 deletions

View File

@ -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);

View File

@ -363,7 +363,6 @@ typedef struct H264Context {
int qscale;
int droppable;
int data_partitioning;
int coded_picture_number;
int low_delay;

View File

@ -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;