diff mbox series

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

Message ID 20201221060710.12230-2-nuomi2021@gmail.com
State Superseded
Headers show
Series [FFmpeg-devel,1/6] avcodec/h266: add shared header for h266 | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Nuo Mi Dec. 21, 2020, 6:07 a.m. UTC
---
 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(+)

Comments

James Almer Dec. 21, 2020, 3:13 p.m. UTC | #1
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.

> +
>   #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[];
>
Nuo Mi Dec. 22, 2020, 10:37 a.m. UTC | #2
Hi James,
thanks for the review.

On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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.

>
> > +
> >   #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@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Nuo Mi Dec. 26, 2020, 1:37 a.m. UTC | #3
On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:

>
> Hi James,
> thanks for the review.
>
> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
>
Nuo Mi Jan. 2, 2021, 2:06 a.m. UTC | #4
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.

thanks


On Sat, Dec 26, 2020 at 9:37 AM Nuo Mi <nuomi2021@gmail.com> wrote:

>
>
> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:
>
>>
>> Hi James,
>> thanks for the review.
>>
>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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@ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>
>>
James Almer Jan. 2, 2021, 2:18 a.m. UTC | #5
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@gmail.com> wrote:
> 
>>
>>
>> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:
>>
>>>
>>> Hi James,
>>> thanks for the review.
>>>
>>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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@ffmpeg.org
>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>
>>>> To unsubscribe, visit link above, or email
>>>> ffmpeg-devel-request@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-request@ffmpeg.org with subject "unsubscribe".
>
Nuo Mi Jan. 2, 2021, 3:38 a.m. UTC | #6
Hi James,
Thanks, it works for me.
It's wired no error prompt for my previous command line.


On Sat, Jan 2, 2021 at 10:26 AM James Almer <jamrial@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@gmail.com> wrote:
> >
> >>
> >>
> >> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:
> >>
> >>>
> >>> Hi James,
> >>> thanks for the review.
> >>>
> >>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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@ffmpeg.org
> >>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>>>
> >>>> To unsubscribe, visit link above, or email
> >>>> ffmpeg-devel-request@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-request@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-request@ffmpeg.org with subject "unsubscribe".
James Almer Jan. 2, 2021, 4:22 p.m. UTC | #7
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@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@gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:
>>>>
>>>>>
>>>>> Hi James,
>>>>> thanks for the review.
>>>>>
>>>>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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@ffmpeg.org
>>>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>>>
>>>>>> To unsubscribe, visit link above, or email
>>>>>> ffmpeg-devel-request@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-request@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-request@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-request@ffmpeg.org with subject "unsubscribe".
>
Nuo Mi Jan. 7, 2021, 11:33 a.m. UTC | #8
On Sat, Jan 2, 2021 at 10:06 AM Nuo Mi <nuomi2021@gmail.com> 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.
>
> thanks
>
>
> On Sat, Dec 26, 2020 at 9:37 AM Nuo Mi <nuomi2021@gmail.com> wrote:
>
>>
>>
>> On Tue, Dec 22, 2020 at 6:37 PM Nuo Mi <nuomi2021@gmail.com> wrote:
>>
>>>
>>> Hi James,
>>> thanks for the review.
>>>
>>> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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?
>>
>
Hi Mark,
ping.
Mark Thompson Jan. 7, 2021, 10:07 p.m. UTC | #9
On 22/12/2020 10:37, Nuo Mi wrote:
> Hi James,
> thanks for the review.
> 
> On Mon, Dec 21, 2020 at 11:14 PM James Almer <jamrial@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 have a preference for the ITU names, but in the end it's not very strong.

Please do go with the suggestion from James to use the VVC name in the external things, and h266 for cbs internals.

Thanks,

- Mark
diff mbox series

Patch

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
+
 #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",
+        .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
 
     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[];