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

Jan Ekström jeebjp at gmail.com
Fri Mar 29 20:32:37 EET 2024


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.

Jan


More information about the ffmpeg-devel mailing list