This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new d3953237d1 avcodec/h264_slice: don't force ff_get_format 
unconditionally after flush
d3953237d1 is described below

commit d3953237d127f82889d27d1a5094cc32fc09d328
Author:     Zhao Zhili <[email protected]>
AuthorDate: Fri Nov 14 23:46:04 2025 +0800
Commit:     Zhao Zhili <[email protected]>
CommitDate: Fri Dec 5 13:54:08 2025 +0000

    avcodec/h264_slice: don't force ff_get_format unconditionally after flush
    
    h->context_initialized is zero after flush, which triggers call to
    ff_get_format unconditionally. ff_get_format can be heavy with
    ff_hwaccel_uninit and hwaccel_init. For example, it takes 20 ms on
    macOS with videotoolbox. ff_get_format should not be called if
    nothing changed. ff_get_format is guarantee to be called at the
    first time and when video information changed with
    (must_reinit || needs_reinit).
    
    Fix #20760.
---
 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 d91f04fa67..69f70c90bb 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1150,7 +1150,7 @@ static int h264_init_ps(H264Context *h, const 
H264SliceContext *sl, int first_sl
         if (flush_changes)
             ff_h264_flush_change(h);
 
-        if ((ret = get_pixel_format(h, 1)) < 0)
+        if ((ret = get_pixel_format(h, must_reinit || needs_reinit)) < 0)
             return ret;
         h->avctx->pix_fmt = ret;
 

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to