diff --git a/libavcodec/codec.h b/libavcodec/codec.h index 50a22f6e3c..de050b2815 100644 --- a/libavcodec/codec.h +++ b/libavcodec/codec.h @@ -258,6 +258,11 @@ typedef struct AVCodec { * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. */ int (*update_thread_context)(struct AVCodecContext *dst, const struct AVCodecContext *src); + + /** + * Copy variables back to the user-facing context + */ + int (*update_thread_context_for_user)(struct AVCodecContext *dst, const struct AVCodecContext *src); /** @} */ /** diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 9176027f15..ae5b000d97 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -326,6 +326,8 @@ FF_DISABLE_DEPRECATION_WARNINGS dst->coded_frame = src->coded_frame; FF_ENABLE_DEPRECATION_WARNINGS #endif + if (dst->codec->update_thread_context_for_user) + err = dst->codec->update_thread_context_for_user(dst, src); } else { if (dst->codec->update_thread_context) err = dst->codec->update_thread_context(dst, src);