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

Git pushed a commit to branch master
in repository ffmpeg.

commit c422dfdd677304ba2ba95c7bb046ff45a0b16e52
Author:     Uraza Aru <[email protected]>
AuthorDate: Wed Oct 14 02:14:02 2026 +0500
Commit:     Lynne <[email protected]>
CommitDate: Sat Nov 7 08:36:02 2026 +0000

    avcodec/vulkan_encode_av1: use PRIMARY_REF_NONE for key frames
    
    primary_ref_frame is only set in the P and B branches, so key frames
    keep the initial 0. A shown key frame is error resilient: its header
    signals no primary reference and decoders start from the default CDFs
    for the frame's base_q_idx. With primary_ref_frame = 0, NVIDIA's
    encoder evidently starts from other CDFs; the two agree only while
    base_q_idx <= 20 (the first coefficient CDF q context). Above that,
    every key frame and everything after it is undecodable: dav1d reports
    a symbol decoder overread in the first tile and hardware decoders show
    garbage. This is why streams at modest bitrates (e.g. 1280x720 at 60
    fps and 10 Mbit/s, key frame base_q_idx 39) failed while very high
    bitrates worked.
    
    Set primary_ref_frame to STD_VIDEO_AV1_PRIMARY_REF_NONE for key frames,
    as NVIDIA's Vulkan Video samples do.
    
    Tested on an RTX 4090 (Linux driver 615.78.08): CBR 2-60 Mbit/s and
    CQP 40-200 now decode, up to 2560x1440 at 120 fps and 3840x2160 at 60
    fps.
    
    Fixes #25046.
    
    Assisted-by: Claude Opus 5.5
    Signed-off-by: Uraza Aru <[email protected]>
---
 libavcodec/vulkan_encode_av1.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavcodec/vulkan_encode_av1.c b/libavcodec/vulkan_encode_av1.c
index 67d81d189b..379b9f2eb9 100644
--- a/libavcodec/vulkan_encode_av1.c
+++ b/libavcodec/vulkan_encode_av1.c
@@ -355,6 +355,7 @@ static int init_pic_params(AVCodecContext *avctx, 
FFHWBaseEncodePicture *pic,
         av_assert0(pic->nb_refs[0] == 0 || pic->nb_refs[1]);
         ap->av1pic_info.frame_type = STD_VIDEO_AV1_FRAME_TYPE_KEY;
         ap->av1pic_info.refresh_frame_flags = 0xFF;
+        ap->av1pic_info.primary_ref_frame = STD_VIDEO_AV1_PRIMARY_REF_NONE;
         quantization->base_q_idx = enc->q_idx_idr;
         ap->slot = 0;
         ap->last_idr_frame = pic->display_order;

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to