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