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

Reply via email to