diff options
author | Anton Khirnov <anton@khirnov.net> | 2017-01-15 13:56:42 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2020-04-10 15:46:09 +0200 |
commit | 29445374305fcc422fb2abe55bb5a877b95c0ef2 (patch) | |
tree | 38b13a8c01f42573abffe13d2b43cc1f0ce80726 /libavcodec | |
parent | b630a270f55647a758fefc1deb91932c0521c3c4 (diff) | |
download | ffmpeg-29445374305fcc422fb2abe55bb5a877b95c0ef2.tar.gz |
pthread_frame: do not copy a range of AVCodecContext fields at once
This is extremely fragile against reordering and hides what is actually
being copied. Copy all the fields manually instead.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/pthread_frame.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 2a3c15549f..f0a162bc92 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -322,7 +322,6 @@ FF_ENABLE_DEPRECATION_WARNINGS */ static int update_context_from_user(AVCodecContext *dst, AVCodecContext *src) { -#define copy_fields(s, e) memcpy(&dst->s, &src->s, (char*)&dst->e - (char*)&dst->s); dst->flags = src->flags; dst->draw_horiz_band= src->draw_horiz_band; @@ -336,7 +335,9 @@ static int update_context_from_user(AVCodecContext *dst, AVCodecContext *src) dst->flags2 = src->flags2; dst->export_side_data = src->export_side_data; - copy_fields(skip_loop_filter, subtitle_header); + dst->skip_loop_filter = src->skip_loop_filter; + dst->skip_idct = src->skip_idct; + dst->skip_frame = src->skip_frame; dst->frame_number = src->frame_number; dst->reordered_opaque = src->reordered_opaque; @@ -354,7 +355,6 @@ static int update_context_from_user(AVCodecContext *dst, AVCodecContext *src) } dst->slice_count = src->slice_count; return 0; -#undef copy_fields } /// Releases the buffers that this decoding thread was the last user of. |