[FFmpeg-cvslog] Revert "avcodec/h264: remove redundant and bogus get_format call"

wm4 git at videolan.org
Thu Oct 15 20:20:15 CEST 2015


ffmpeg | branch: master | wm4 <nfxjfg at googlemail.com> | Thu Oct 15 20:19:55 2015 +0200| [17fe18d21ad9caba5dec08237b511c7fb89e88b3] | committer: wm4

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=17fe18d21ad9caba5dec08237b511c7fb89e88b3
---

 libavcodec/h264_slice.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 1272319..a346ccb 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;



More information about the ffmpeg-cvslog mailing list