[FFmpeg-cvslog] h264: fix bit depth changes with frame threading

Janne Grunau git at videolan.org
Thu Mar 21 12:03:14 CET 2013


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Wed Mar 20 12:57:46 2013 +0100| [a157c7f2b8ac05188a116dbfc2fec401c1d4957a] | committer: Janne Grunau

h264: fix bit depth changes with frame threading

AVCodecContext.bits_per_raw_sample is updated from the previous thread
in the generic update function before the codec specific update_thread
function is called. The check for reinitialization of dsp functions uses
bits_per_raw_sample. When called from update_thread_context it will be
already at the current value and the dsp functions aren't updated if
only the bit depth changes.

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

 libavcodec/h264.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 98ace67..fe4acd6 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1573,6 +1573,11 @@ static int decode_update_thread_context(AVCodecContext *dst,
          h->sps.chroma_format_idc != h1->sps.chroma_format_idc ||
          h->sps.colorspace        != h1->sps.colorspace)) {
 
+        /* set bits_per_raw_sample to the previous value. the check for changed
+         * bit depth in h264_set_parameter_from_sps() uses it and sets it to
+         * the current value */
+        h->avctx->bits_per_raw_sample = h->sps.bit_depth_luma;
+
         av_freep(&h->bipred_scratchpad);
 
         h->width     = h1->width;



More information about the ffmpeg-cvslog mailing list