[FFmpeg-devel] [PATCH 2/6] avcodec: add h266 codec id and profiles

James Almer jamrial at gmail.com
Sat Jan 2 18:22:12 EET 2021


On 1/2/2021 12:38 AM, Nuo Mi wrote:
> Hi James,
> Thanks, it works for me.
> It's wired no error prompt for my previous command line.

Looks like there are other modules with "aud" options in your build, 
like libx264, nvenc or amfenc, and for some reason the CLI considers 
they have a global scope.

> 
> 
> On Sat, Jan 2, 2021 at 10:26 AM James Almer <jamrial at gmail.com> wrote:
> 
>> On 1/1/2021 11:06 PM, Nuo Mi wrote:
>>> Hi Mark & all,
>>> Happy new year!
>>> I have implemented the h266 metadata bsf. For all vvdec decodable clips,
>>> the metadata pass-through mode can get a bit matched result.
>>> Could you align with James about the name convention, so I can send the
>>> second patchset?
>>>
>>> BTW: could you share the hevc aud adding command line?
>>> I tried "ffmpeg -i input.265  -c:v copy -bsf h266_metadata -aud insert
>>> output.265", but the output.265 has no aud.
>>
>> bsf options are passed the same way as filter options, so "-bsf:v
>> filter_name=key1=value1:key2=value2"
>>
>>>
>>> thanks
>>>
>>>
>>> On Sat, Dec 26, 2020 at 9:37 AM Nuo Mi <nuomi2021 at gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021 at gmail.com> wrote:
>>>>
>>>>>
>>>>> Hi James,
>>>>> thanks for the review.
>>>>>
>>>>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial at gmail.com>
>> wrote:
>>>>>
>>>>>> On 12/21/2020 3:07 AM, Nuo Mi wrote:
>>>>>>> ---
>>>>>>>     libavcodec/avcodec.h    | 2 ++
>>>>>>>     libavcodec/codec_desc.c | 8 ++++++++
>>>>>>>     libavcodec/codec_id.h   | 2 ++
>>>>>>>     libavcodec/profiles.c   | 5 +++++
>>>>>>>     libavcodec/profiles.h   | 1 +
>>>>>>>     5 files changed, 18 insertions(+)
>>>>>>>
>>>>>>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>>>>>>> index 1d3099d50a..f7ea4d5849 100644
>>>>>>> --- a/libavcodec/avcodec.h
>>>>>>> +++ b/libavcodec/avcodec.h
>>>>>>> @@ -1961,6 +1961,8 @@ typedef struct AVCodecContext {
>>>>>>>     #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE          3
>>>>>>>     #define FF_PROFILE_HEVC_REXT                        4
>>>>>>>
>>>>>>> +#define FF_PROFILE_H266_MAIN_10                      1
>>>>>>
>>>>>> We should decide first what we are going to use, if VVC or h266.
>>>>>>
>>>>>> My suggestion was to use VVC for decoder, parser, demuxer and public
>>>>>> defines, which is what's exposed to the user, and h266 for CBS, which
>>>>>> makes things simpler to implement and is proper consider it's written
>>>>>> using the ITU spec.
>>>>>>
>>>>> Sorry for missed this. But seems mark and you have a different
>>>>> suggestion.  Could you align with him and other maintainers?
>>>>> I can continue to address other issues. It's not too later to change
>> this
>>>>> before I checked the patch set.
>>>>>
>>>> Hi Mark,
>>>> Most of the issue are addressed.  I will send the second reversion of
>> this
>>>> patchset.
>>>> Are you ok with James's suggestion?
>>>>
>>>> thanks.
>>>>
>>>>>
>>>>>>> +
>>>>>>>     #define FF_PROFILE_AV1_MAIN                         0
>>>>>>>     #define FF_PROFILE_AV1_HIGH                         1
>>>>>>>     #define FF_PROFILE_AV1_PROFESSIONAL                 2
>>>>>>> diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
>>>>>>> index 404c460f8f..62fe0f453d 100644
>>>>>>> --- a/libavcodec/codec_desc.c
>>>>>>> +++ b/libavcodec/codec_desc.c
>>>>>>> @@ -1426,6 +1426,14 @@ static const AVCodecDescriptor
>>>>>> codec_descriptors[] = {
>>>>>>>             .long_name = NULL_IF_CONFIG_SMALL("Microsoft Paint (MSP)
>>>>>> version 2"),
>>>>>>>             .props     = AV_CODEC_PROP_INTRA_ONLY |
>>>>>> AV_CODEC_PROP_LOSSLESS,
>>>>>>>         },
>>>>>>> +    {
>>>>>>> +        .id        = AV_CODEC_ID_H266,
>>>>>>> +        .type      = AVMEDIA_TYPE_VIDEO,
>>>>>>> +        .name      = "h266",
>>>>>>
>>>>>> Ditto.
>>>>>>
>>>>>>> +        .long_name = NULL_IF_CONFIG_SMALL("H.266 / VVC (Versatile
>>>>>> Video Coding)"),
>>>>>>> +        .props     = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER,
>>>>>>> +        .profiles  = NULL_IF_CONFIG_SMALL(ff_h266_profiles),
>>>>>>> +    },
>>>>>>>         {
>>>>>>>             .id        = AV_CODEC_ID_Y41P,
>>>>>>>             .type      = AVMEDIA_TYPE_VIDEO,
>>>>>>> diff --git a/libavcodec/codec_id.h b/libavcodec/codec_id.h
>>>>>>> index 6133e03bb9..7a8a896bfe 100644
>>>>>>> --- a/libavcodec/codec_id.h
>>>>>>> +++ b/libavcodec/codec_id.h
>>>>>>> @@ -244,6 +244,8 @@ enum AVCodecID {
>>>>>>>         AV_CODEC_ID_PGX,
>>>>>>>         AV_CODEC_ID_AVS3,
>>>>>>>         AV_CODEC_ID_MSP2,
>>>>>>> +    AV_CODEC_ID_VVC,
>>>>>>> +#define AV_CODEC_ID_H266 AV_CODEC_ID_VVC
>>>>>>
>>>>>> This chunk is good as is.
>>>>>>
>>>>>>>
>>>>>>>         AV_CODEC_ID_Y41P = 0x8000,
>>>>>>>         AV_CODEC_ID_AVRP,
>>>>>>> diff --git a/libavcodec/profiles.c b/libavcodec/profiles.c
>>>>>>> index e59a3a5c12..710f2c01e2 100644
>>>>>>> --- a/libavcodec/profiles.c
>>>>>>> +++ b/libavcodec/profiles.c
>>>>>>> @@ -74,6 +74,11 @@ const AVProfile ff_h264_profiles[] = {
>>>>>>>         { FF_PROFILE_UNKNOWN },
>>>>>>>     };
>>>>>>>
>>>>>>> +const AVProfile ff_h266_profiles[] = {
>>>>>>> +    { FF_PROFILE_H266_MAIN_10, "Main 10" },
>>>>>>> +    { FF_PROFILE_UNKNOWN },
>>>>>>> +};
>>>>>>> +
>>>>>>>     const AVProfile ff_hevc_profiles[] = {
>>>>>>>         { FF_PROFILE_HEVC_MAIN,                 "Main"
>> },
>>>>>>>         { FF_PROFILE_HEVC_MAIN_10,              "Main 10"
>>   },
>>>>>>> diff --git a/libavcodec/profiles.h b/libavcodec/profiles.h
>>>>>>> index 6baaba5701..7a353dbf3d 100644
>>>>>>> --- a/libavcodec/profiles.h
>>>>>>> +++ b/libavcodec/profiles.h
>>>>>>> @@ -60,6 +60,7 @@ extern const AVProfile ff_aac_profiles[];
>>>>>>>     extern const AVProfile ff_dca_profiles[];
>>>>>>>     extern const AVProfile ff_dnxhd_profiles[];
>>>>>>>     extern const AVProfile ff_h264_profiles[];
>>>>>>> +extern const AVProfile ff_h266_profiles[];
>>>>>>>     extern const AVProfile ff_hevc_profiles[];
>>>>>>>     extern const AVProfile ff_jpeg2000_profiles[];
>>>>>>>     extern const AVProfile ff_mpeg2_video_profiles[];
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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".
>>>
>>
>> _______________________________________________
>> 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