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".