AOMediaCodec / av1-avif

AV1 Image File Format Specification - ISO-BMFF/HEIF derivative
https://aomediacodec.github.io/av1-avif/
BSD 2-Clause "Simplified" License
451 stars 40 forks source link

New HDR images properties in HEIF #79

Closed cconcolato closed 3 years ago

cconcolato commented 4 years ago

HEIF 2nd Edition Amd1 specifies new property types:

AVIF current refers to MIAF for the first 2 (https://aomediacodec.github.io/av1-avif/#other-item-property) and does not mention the third one.

cconcolato commented 3 years ago

Actually those box definitions are now part of ISOBMFF 6th edition (to be published, which integrates ISO/IEC 14496-12:2015/Amd 2:2018 freely available here), and the cclv box is defined as

class ContentColourVolumeBox extends Box('cclv'){
  unsigned int(1) reserved1 = 0; // ccv_cancel_flag
  unsigned int(1) reserved2 = 0; // ccv_persistence_flag
  unsigned int(1) ccv_primaries_present_flag;
  unsigned int(1) ccv_min_luminance_value_present_flag;
  unsigned int(1) ccv_max_luminance_value_present_flag;
  unsigned int(1) ccv_avg_luminance_value_present_flag;
  unsigned int(2) ccv_reserved_zero_2bits = 0;
  if( ccv_primaries_present_flag ) {
    for( c = 0; c < 3; c++ ) {
      signed int(32) ccv_primaries_x[ c ];
      signed int(32) ccv_primaries_y[ c ];
    }
  }
  if( ccv_min_luminance_value_present_flag )
    unsigned int(32) ccv_min_luminance_value;
  if( ccv_max_luminance_value_present_flag )
    unsigned int(32) ccv_max_luminance_value;
  if( ccv_avg_luminance_value_present_flag )
    unsigned int(32) ccv_avg_luminance_value;
}
cconcolato commented 3 years ago

We welcome experts to comment on the need for the cclv box.

wantehchang commented 3 years ago

Cyril: Since the AV1 spec has metadata_hdr_mdcv() and metadata_hdr_cll() OBUs, the metadata OBUs may potentially conflict with the new mdcv and clli HEIF properties. The AVIF spec could describe how to resolve conflicts if both the metadata OBUs and HEIF properties are present, such as by precedence (e.g., HEIF properties override metadata OBUs).

dwbuiten commented 3 years ago

@wantehchang The AV1-ISOMBFF spec already requires those values to match the OBU values, doesn't it?

For sample entries corresponding to HDR content, the MasteringDisplayColourVolumeBox mdcv and ContentLightLevelBox clli SHOULD be present, and their values SHALL match the values of contained in the Metadata OBUs of type METADATA_TYPE_HDR_CLL and METADATA_TYPE_HDR_MDCV, if present (in the configOBUs or in the samples).

Or am I misunderstanding what you mean?

Edit: I meant, can we add the same for AVIF?

wantehchang commented 3 years ago

Hi Derek:

You understand my comment correctly. I didn't check the AV1-ISOMBFF spec when I wrote my comment.

The relation between the AVIF and AV1-ISOBMFF specs is not very clear to me. I believe AVIF only uses some types defined in AV1-ISOBMFF. Without checking the specs carefully, I am not sure if the AVIF spec "inherits" that requirement from the AV1-ISOBMFF spec. So it may be good to add the same requirement to AVIF.

dwbuiten commented 3 years ago

Yes, it is/was unclear to me too, apologies!

cconcolato commented 3 years ago

@dwbuiten The provisions in AV1-ISOBMFF are only applicable to AVIF image sequences. For items, AVIF depends on MIAF/HEIF. Regarding properties and metadata OBUs, the current spec says:

Metadata OBUs, if present, shall match the values given in other item properties, such as the PixelInformationProperty or ColourInformationBox.