[FFmpeg-devel] [PATCH 1/4] avutil/pix{desc, fmt}: add new matrix coefficients from H.273 v3

Jan Ekström jeebjp at gmail.com
Wed Apr 3 22:08:41 EEST 2024


On Tue, Apr 2, 2024 at 8:58 PM Jan Ekström <jeebjp at gmail.com> wrote:
>
> On Mon, Apr 1, 2024 at 2:34 PM Jan Ekström <jeebjp at gmail.com> wrote:
> >
> > On Fri, Mar 29, 2024 at 8:32 PM Jan Ekström <jeebjp at gmail.com> wrote:
> > >
> > > On Fri, Mar 29, 2024 at 2:33 AM Jan Ekström <jeebjp at gmail.com> wrote:
> > > >
> > > > * SMPTE ST 2128 IPT-C2 defines the coefficients utilized in DoVi
> > > >   Profile 5. Profile 5 can thus now be represented in VUI as
> > > >   {AVCOL_RANGE_JPEG, AVCOL_PRI_BT2020, AVCOL_TRC_SMPTE2084,
> > > >    AVCOL_SPC_IPT_C2, AVCHROMA_LOC_LEFT} (although other chroma
> > > >   sample locations are allowed). AVCOL_TRC_SMPTE2084 should in
> > > >   this case be interpreted as 'PQ with reshaping'.
> > > > * YCgCo-Re and YCgCo-Ro define the bitexact YCgCo-R, where the
> > > >   number of bits added to a source RGB bit depth is 2 (i.e., even)
> > > >   and 1 (i.e., odd), respectively.
> > > > ---
> > > >  doc/APIchanges      | 4 ++++
> > > >  libavutil/pixdesc.c | 3 +++
> > > >  libavutil/pixfmt.h  | 3 +++
> > > >  libavutil/version.h | 2 +-
> > > >  4 files changed, 11 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/doc/APIchanges b/doc/APIchanges
> > > > index aa102b4925..296d87d8fb 100644
> > > > --- a/doc/APIchanges
> > > > +++ b/doc/APIchanges
> > > > @@ -2,6 +2,10 @@ The last version increases of all libraries were on 2024-03-07
> > > >
> > > >  API changes, most recent first:
> > > >
> > > > +2024-03-27 - xxxxxxxxxx - lavu 59.11.100 - pixfmt.h
> > > > +  Add AVCOL_SPC_IPT_C2, AVCOL_SPC_YCGCO_RE and AVCOL_SPC_YCGCO_RO
> > > > +  to map new matrix coefficients defined by H.273 v3.
> > > > +
> > > >  2024-03-27 - xxxxxxxxxx - lavu 59.10.100 - frame.h
> > > >    Add AVSideDataDescriptor, enum AVSideDataProps, and
> > > >    av_frame_side_data_desc().
> > > > diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
> > > > index 9c708520b1..1c0bcf2232 100644
> > > > --- a/libavutil/pixdesc.c
> > > > +++ b/libavutil/pixdesc.c
> > > > @@ -2854,6 +2854,9 @@ static const char * const color_space_names[] = {
> > > >      [AVCOL_SPC_CHROMA_DERIVED_NCL] = "chroma-derived-nc",
> > > >      [AVCOL_SPC_CHROMA_DERIVED_CL] = "chroma-derived-c",
> > > >      [AVCOL_SPC_ICTCP] = "ictcp",
> > > > +    [AVCOL_SPC_IPT_C2] = "ipt-c2",
> > > > +    [AVCOL_SPC_YCGCO_RE] = "ycgco-re",
> > > > +    [AVCOL_SPC_YCGCO_RO] = "ycgco-ro",
> > > >  };
> > > >
> > > >  static const char * const chroma_location_names[] = {
> > > > diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
> > > > index 4aa20e4e58..430118d3e1 100644
> > > > --- a/libavutil/pixfmt.h
> > > > +++ b/libavutil/pixfmt.h
> > > > @@ -623,6 +623,9 @@ enum AVColorSpace {
> > > >      AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system
> > > >      AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system
> > > >      AVCOL_SPC_ICTCP       = 14, ///< ITU-R BT.2100-0, ICtCp
> > > > +    AVCOL_SPC_IPT_C2      = 15, ///< SMPTE ST 2128
> > > > +    AVCOL_SPC_YCGCO_RE    = 16, ///< YCgCo-R, even addition of bits
> > > > +    AVCOL_SPC_YCGCO_RO    = 17, ///< YCgCo-R, odd addition of bits
> > > >      AVCOL_SPC_NB                ///< Not part of ABI
> > > >  };
> > >
> > > To aid in review as for whatever reason the 2023-09 H.273 v3 is not
> > > yet publicly available (even though H.274 is from the same September
> > > period), you can first of all see the summary in
> > > https://www.itu.int/itu-t/workprog/wp_item.aspx?isn=18689 .
> > >
> > > The latest related drafts from JVET-Experts
> > > (https://jvet-experts.org/doc_end_user/all_meeting.php being the
> > > index) are:
> > > - CICP/H.273: JVET-AD1003 v2 from
> > > https://jvet-experts.org/doc_end_user/current_document.php?id=12970
> > > - H.265: JVET-AF1006 from
> > > https://jvet-experts.org/doc_end_user/current_document.php?id=13584
> > > - H.264: JVET-AE1016 from
> > > https://jvet-experts.org/doc_end_user/current_document.php?id=13269
> > >
> > > Given that H.273 v3 got registered for AAP on 2023-07-21 and that the
> > > H.265 text is clearly from after the last call period of 2023-09-01 to
> > > 2023-09-28, I would consider them all matching being a pretty good
> > > indicator that the value 15 got utilized for IPT-C2, and 16+17 for
> > > YCgCo-R.
> >
> > Ping for this set.
>
> Got an LGTM from James for the set on IRC, so unless there are
> objections I will apply this tomorrow.

Applied set as:
29561c8e2d4ccecaa93afcaed73678e3f6011b0a
06c53efd233340762535957ad765ed4d9aafcddd
23d1b50175a6d07a0e2301ead347e4812c8c5dc8
16128f3c5595012719db7ae7851964d5a961c160

Small differences were that avutil got minor bumps so it went from
59.11 to 59.13, and after asking on IRC whether new values for
AVOptions should get a micro bump, I added those to avcodec and
avfilter. Additionally, a slight modification to a comment was made as
other comments also not only mentioned the spec but the format name as
well:

diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 430118d3e1..a7f50e1690 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -623,7 +623,7 @@ enum AVColorSpace {
     AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived
non-constant luminance system
     AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived
constant luminance system
     AVCOL_SPC_ICTCP       = 14, ///< ITU-R BT.2100-0, ICtCp
-    AVCOL_SPC_IPT_C2      = 15, ///< SMPTE ST 2128
+    AVCOL_SPC_IPT_C2      = 15, ///< SMPTE ST 2128, IPT-C2
     AVCOL_SPC_YCGCO_RE    = 16, ///< YCgCo-R, even addition of bits
     AVCOL_SPC_YCGCO_RO    = 17, ///< YCgCo-R, odd addition of bits
     AVCOL_SPC_NB                ///< Not part of ABI


Jan


More information about the ffmpeg-devel mailing list