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