h264: update the current bit depth/chroma type in init_slice_header()
authorAnton Khirnov <anton@khirnov.net>
Sun, 12 Apr 2015 17:13:56 +0000 (19:13 +0200)
committerAnton Khirnov <anton@khirnov.net>
Wed, 29 Apr 2015 03:52:58 +0000 (05:52 +0200)
With frame threading, it is currently only updated in the context where
the change occurs, but not in any other contexts.

libavcodec/h264_slice.c

index a760068..92fc51e 100644 (file)
@@ -1014,6 +1014,8 @@ static int h264_slice_header_init(H264Context *h, int reinit)
 
     h->avctx->bits_per_raw_sample = h->sps.bit_depth_luma;
     h->pixel_shift                = h->sps.bit_depth_luma > 8;
+    h->chroma_format_idc          = h->sps.chroma_format_idc;
+    h->bit_depth_luma             = h->sps.bit_depth_luma;
 
     ff_h264dsp_init(&h->h264dsp, h->sps.bit_depth_luma,
                     h->sps.chroma_format_idc);
@@ -1158,11 +1160,8 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
         h->sps = *h->sps_buffers[h->pps.sps_id];
 
         if (h->bit_depth_luma    != h->sps.bit_depth_luma ||
-            h->chroma_format_idc != h->sps.chroma_format_idc) {
-            h->bit_depth_luma    = h->sps.bit_depth_luma;
-            h->chroma_format_idc = h->sps.chroma_format_idc;
+            h->chroma_format_idc != h->sps.chroma_format_idc)
             needs_reinit         = 1;
-        }
 
         if (h->flags & CODEC_FLAG_LOW_DELAY ||
             (h->sps.bitstream_restriction_flag &&