[FFmpeg-devel] [PATCH v2 10/11] avcodec: add vvc metadata bsf

James Almer jamrial at gmail.com
Sat Jan 9 17:53:25 EET 2021


On 1/9/2021 12:11 PM, Nuo Mi wrote:
> Hi James,
> On Sat, Jan 9, 2021 at 10:53 PM James Almer <jamrial at gmail.com> wrote:
> 
>> On 1/9/2021 4:34 AM, Nuo Mi wrote:
>>> use following command to test:
>>> ffmpeg -i in.bin  -c:v copy -bsf vvc_metadata -f vvc out.bin
>>>
>>> 79.11%(197/249) can bit match with original clips
>>> 6.83%(17/249) are not bit match, the original clips has redundant
>> emulation prevent bytes
>>> other all failed since vvdec failed to decode the first frame
>>
>> You don't (or shouldn't) need a decoder in order to do bitstream
>> filtering, since it works on packets (codec copy) and not frames.
>>
>> Since the decoder you submitted is, if committed, going to be external,
>> it will not be present in most libavcodec builds out there. This means
>> that you should ensure parsing of such files can succeed without a
>> decoder, so bsfs can run without it. If not possible already in the
>> state you wrote it in patch 8/11, it can be achieved by temporarily
>> setting some values in the parser until an internal decoder is implemented.
>> For AV1 i had to set avctx dimensions and pixel format, both things i
>> removed once the internal decoder (as barebones as it is) was
>> introduced, since it's its job. I assume h266 will require the same.
> 
> Thanks for suggestion. I will try it.
> I tried to disable hevc native decoder, and use hevc bsf only. It got the
> same error as vvc.
> Do we need fix this too?

For now, the objective is not requiring the presence of an external 
decoder to ensure an unrelated internal module works.

Fixing this same issue when it happens after disabling an internal 
decoder could be looked into, too, but that's unrelated.

> 
> 
> 
> 
>>> ---
>>>    configure                      |   1 +
>>>    libavcodec/Makefile            |   1 +
>>>    libavcodec/bitstream_filters.c |   1 +
>>>    libavcodec/vvc_metadata_bsf.c  | 243 +++++++++++++++++++++++++++++++++
>>>    4 files changed, 246 insertions(+)
>>>    create mode 100644 libavcodec/vvc_metadata_bsf.c
>>>
>>> diff --git a/configure b/configure
>>> index 5ff743d9c2..b41f2af151 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -3184,6 +3184,7 @@ mjpeg2jpeg_bsf_select="jpegtables"
>>>    mpeg2_metadata_bsf_select="cbs_mpeg2"
>>>    trace_headers_bsf_select="cbs"
>>>    vp9_metadata_bsf_select="cbs_vp9"
>>> +vvc_metadata_bsf_select="cbs_h266"
>>
>> For the sake of consistency, this bsf should be called h266_metadata and
>> not vcc_metadata, seeing the other two are h264 and h265 respectively.
>> It's part of what i suggested, but guess it got mixed in between the rest.
>>
> This is a funny part. Seems the filter name is hevc_metadata. But the class
> name is h265_metadata_bsf...

Well, that's surprising. Maybe follow suit and call the file 
h266_metadata_bsf.c, too, but otherwise guess it's fine as is, and the 
bsf can be named vvc_metadata.

> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> 



More information about the ffmpeg-devel mailing list