I tested your ([PATCH v2] lavc/vvc/refs: export keyframe and picture type in output frames) implementation and it works correctly.
For instance, I found different output from my original implementation in SUBPIC_D_ERICSSON_1.bit[1]. Thanks you. [1] https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/SUBPIC_D_ERICSSON_1.zip On Wed, Jan 8, 2025 at 5:56 PM Rubén Gonzalez <rgonza...@fluendo.com> wrote: > Sounds very good, thanks! > > Issue: https://trac.ffmpeg.org/ticket/11406 > > I would be glad to try it. > > > On Wed, Jan 8, 2025 at 2:04 PM Nuo Mi <nuomi2...@gmail.com> wrote: > >> >> >> On Wed, Jan 8, 2025 at 12:35 AM Rubén Gonzalez <rgonza...@fluendo.com> >> wrote: >> >>> Hi Nuo Mi, >>> >>> thanks for your feedback. Unfortunately I don't have enough >>> knowledge/time to improve the patch. I only mimicked H.26[45]. >>> >>> IMHO, reporting AV_FRAME_FLAG_KEY is better than nothing, so I will send >>> a new patch only with AV_FRAME_FLAG_KEY logic and create a bug report in >>> trac to support pict_type. >>> >>> - if (!IS_IDR(s)) >>> + if (IS_IDR(s)) >>> + fc->frame->flags |= AV_FRAME_FLAG_KEY; >>> + else >>> ff_vvc_bump_frame(s, fc); >>> >> >> Hi Ruben, >> Unfortunately, this is also incorrect. In VVC, an intra random access >> point (IRAP) can indeed serve as a key frame. >> Please go ahead and create an issue—I will send a patch and add you as a >> co-author. >> Your help in reviewing the patch would be greatly appreciated >> >> Thank you >> >>> >>> On Sat, Jan 4, 2025 at 2:35 PM Nuo Mi <nuomi2...@gmail.com> wrote: >>> >>>> Hi Ruben, >>>> Thank you for the patch. >>>> A B/P frame's first slice may be an I slice, so it can't be used to >>>> determine the picture type. >>>> The ph_inter_slice_allowed_flag can quickly identify an I frame, but >>>> B/P frame still requires checking all slices. >>>> >>>> On Fri, Jan 3, 2025 at 12:19 AM Ruben Gonzalez <rgonza...@fluendo.com> >>>> wrote: >>>> >>>>> Update VVC decoder to show frames info with ffprobe and other tools. >>>>> >>>>> Tested with: >>>>> ``` >>>>> wget >>>>> https://www.itu.int/wftp3/av-arch/jvet-site/bitstream_exchange/VVC/draft_conformance/draft6/CodingToolsSets_E_Tencent_1.zip >>>>> unzip CodingToolsSets_E_Tencent_1.zip CodingToolsSets_E_Tencent_1.bit >>>>> ffprobe -hide_banner CodingToolsSets_E_Tencent_1.bit -select_streams v >>>>> -show_frames -show_entries frame=pict_type,key_frame -of csv >>>>> ``` >>>>> >>>>> From >>>>> ``` >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> frame,0,? >>>>> ``` >>>>> >>>>> To: >>>>> ``` >>>>> frame,1,I >>>>> frame,0,B >>>>> frame,0,B >>>>> frame,0,B >>>>> frame,0,B >>>>> frame,0,B >>>>> frame,0,B >>>>> frame,0,P >>>>> frame,0,B >>>>> ``` >>>>> >>>>> Signed-off-by: Ruben Gonzalez <rgonza...@fluendo.com> >>>>> --- >>>>> libavcodec/vvc/dec.c | 13 ++++++++++++- >>>>> 1 file changed, 12 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>>>> index 1cb168de7e..71408caf7b 100644 >>>>> --- a/libavcodec/vvc/dec.c >>>>> +++ b/libavcodec/vvc/dec.c >>>>> @@ -712,7 +712,18 @@ static int frame_start(VVCContext *s, >>>>> VVCFrameContext *fc, SliceContext *sc) >>>>> if ((ret = ff_vvc_set_new_ref(s, fc, &fc->frame)) < 0) >>>>> goto fail; >>>>> >>>>> - if (!IS_IDR(s)) >>>>> + if (sc->sh.r->sh_slice_type == VVC_SLICE_TYPE_B) >>>>> + fc->frame->pict_type = AV_PICTURE_TYPE_B; >>>>> + >>>>> + if (sc->sh.r->sh_slice_type == VVC_SLICE_TYPE_P) >>>>> + fc->frame->pict_type = AV_PICTURE_TYPE_P; >>>>> + >>>>> + if (sc->sh.r->sh_slice_type == VVC_SLICE_TYPE_I) >>>>> + fc->frame->pict_type = AV_PICTURE_TYPE_I; >>>>> + >>>>> + if (IS_IDR(s)) >>>>> + fc->frame->flags |= AV_FRAME_FLAG_KEY; >>>>> + else >>>>> ff_vvc_bump_frame(s, fc); >>>>> >>>>> av_frame_unref(fc->output_frame); >>>>> -- >>>>> 2.47.1 >>>>> >>>>> _______________________________________________ >>>>> ffmpeg-devel mailing list >>>>> ffmpeg-devel@ffmpeg.org >>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>>>> >>>>> To unsubscribe, visit link above, or email >>>>> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". >>>>> >>>> -- _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".