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