From 17fe18d21ad9caba5dec08237b511c7fb89e88b3 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 15 Oct 2015 20:19:55 +0200 Subject: [PATCH] Revert "avcodec/h264: remove redundant and bogus get_format call" This reverts commit be583c6fd3a6f06844b56619653b9b0e4561870d. This was not approved, and was accidentally pushed. I'm very sorry. --- libavcodec/h264_slice.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 1272319635..a346ccbc00 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1129,6 +1129,17 @@ fail: return ret; } +static enum AVPixelFormat non_j_pixfmt(enum AVPixelFormat a) +{ + switch (a) { + case AV_PIX_FMT_YUVJ420P: return AV_PIX_FMT_YUV420P; + case AV_PIX_FMT_YUVJ422P: return AV_PIX_FMT_YUV422P; + case AV_PIX_FMT_YUVJ444P: return AV_PIX_FMT_YUV444P; + default: + return a; + } +} + /** * Decode a slice header. * This will (re)intialize the decoder and call h264_frame_start() as needed. @@ -1312,6 +1323,9 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl) || h->mb_width != h->sps.mb_width || h->mb_height != h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag) )); + if (h->avctx->pix_fmt == AV_PIX_FMT_NONE + || (non_j_pixfmt(h->avctx->pix_fmt) != non_j_pixfmt(get_pixel_format(h, 0)))) + must_reinit = 1; if (first_slice && av_cmp_q(h->sps.sar, h->avctx->sample_aspect_ratio)) must_reinit = 1;