[FFmpeg-devel] [PATCH] h264_slice: Copy the value of x264_build before calling h264_slice_header_init during thread init
Carl Eugen Hoyos
ceffmpeg at gmail.com
Mon Oct 8 21:23:56 EEST 2018
2018-10-08 17:36 GMT+02:00, Derek Buitenhuis <derek.buitenhuis at gmail.com>:
> If we don't copy this value first, it is seen as 0 by
> h264_slice_header_init,
> due to zero-allocation of the new context, triggering an old hack that
> multiplied the denominator by 2 for files produced by old x264 versions, but
> only if more than one thread was used.
>
> Fixes #7475.
>
> Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
> ---
> libavcodec/h264_slice.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 58e1aaf02f..d09cee4b13 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -358,6 +358,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
> h->mb_num = h1->mb_num;
> h->mb_stride = h1->mb_stride;
> h->b_stride = h1->b_stride;
> + h->x264_build = h1->x264_build;
>
> if (h->context_initialized || h1->context_initialized) {
> if ((err = h264_slice_header_init(h)) < 0) {
> @@ -399,7 +400,6 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
>
> h->enable_er = h1->enable_er;
> h->workaround_bugs = h1->workaround_bugs;
> - h->x264_build = h1->x264_build;
I cannot reproduce ticket #7475 (it says "framerate num 30 den 1"
no matter how many threads I use, tested with up to 8), and - more
related to this patch - the sample from ticket #7475 reaches neither
line 358 nor line 400 in h264_slice.c here when running the command
shown in the ticket.
$ md5sum crew_cif_timecode-2.h264
43fbbb4ead1af31ed19dbb6582761d73 crew_cif_timecode-2.h264
Do you know what I am doing wrong?
Carl Eugen
More information about the ffmpeg-devel
mailing list