* [FFmpeg-devel] [PATCH] avcodec/decode: sync initial_pict_type and intra_only_flag with thread worker's avctx (PR #20535)
@ 2025-09-16 17:06 James Almer via ffmpeg-devel
0 siblings, 0 replies; only message in thread
From: James Almer via ffmpeg-devel @ 2025-09-16 17:06 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: James Almer
PR #20535 opened by James Almer (jamrial)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20535
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20535.patch
Regression since 5acbdd2264d3b90dc11369f9e031e762f260882e, which removed setting both values from PerThreadContext.
Given the pthread code calls ff_decode_receive_frame_internal() on the frame, any value set before it will be overwritten, so instead sync each thread's DecodeContext and let ff_decode_receive_frame_internal() handle these values.
Fixes issue #20534.
>From 5a13405484f70c29930c878a828c8419ea856c05 Mon Sep 17 00:00:00 2001
From: James Almer <jamrial@gmail.com>
Date: Tue, 16 Sep 2025 13:56:18 -0300
Subject: [PATCH] avcodec/decode: sync initial_pict_type and intra_only_flag
with thread worker's avctx
Regression since 5acbdd2264d3b90dc11369f9e031e762f260882e, which removed
setting both values from PerThreadContext.
Given the pthread code calls ff_decode_receive_frame_internal() on the frame,
any value set before it will be overwritten, so instead sync each thread's
DecodeContext and let ff_decode_receive_frame_internal() handle these values.
Signed-off-by: James Almer <jamrial@gmail.com>
---
libavcodec/decode.c | 2 ++
libavcodec/pthread_frame.c | 11 -----------
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index ae86e270df..d8e523f327 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -2320,6 +2320,8 @@ void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src)
const DecodeContext *src_dc = decode_ctx(src->internal);
DecodeContext *dst_dc = decode_ctx(dst->internal);
+ dst_dc->initial_pict_type = src_dc->initial_pict_type;
+ dst_dc->intra_only_flag = src_dc->intra_only_flag;
av_refstruct_replace(&dst_dc->lcevc, src_dc->lcevc);
}
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index 4ea5dd3698..abf0d5a199 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -115,10 +115,6 @@ typedef struct PerThreadContext {
int hwaccel_threadsafe;
atomic_int debug_threads; ///< Set if the FF_DEBUG_THREADS option is set.
-
- /// The following two fields have the same semantics as the DecodeContext field
- int intra_only_flag;
- enum AVPictureType initial_pict_type;
} PerThreadContext;
/**
@@ -820,13 +816,6 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free,
AVCodecContext *copy;
int err;
- p->initial_pict_type = AV_PICTURE_TYPE_NONE;
- if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY) {
- p->intra_only_flag = AV_FRAME_FLAG_KEY;
- if (avctx->codec_type == AVMEDIA_TYPE_VIDEO)
- p->initial_pict_type = AV_PICTURE_TYPE_I;
- }
-
atomic_init(&p->state, STATE_INPUT_READY);
copy = av_memdup(avctx, sizeof(*avctx));
--
2.49.1
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-09-16 17:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-16 17:06 [FFmpeg-devel] [PATCH] avcodec/decode: sync initial_pict_type and intra_only_flag with thread worker's avctx (PR #20535) James Almer via ffmpeg-devel
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git