AOMediaCodec / av1-avif

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

Shared coded data between image and sequence contradicts still_picture=1 #216

Open y-guyon opened 9 months ago

y-guyon commented 9 months ago

Running libavif's ChangeSettingTest.AOM with -DAVIF_ENABLE_COMPLIANCE_WARDEN=ON gives:

Specification description: AVIF v1.0.0, 19 February 2019 https://aomediacodec.github.io/av1-avif/ [avif][Rule #3] Warning: [ItemId=1] still_picture flag set to 0 [avif][Rule #4] Warning: [ItemId=1] reduced_still_picture_header flag set to 0

This matches AV1-AVIF v1.1.0 (also v1.0.0):

If the AV1 Image Item Data consists of a single frame (i.e. when using a single layer),

  • It should have its still_picture flag set to 1.
  • It should have its reduced_still_picture_header flag set to 1.

libavif currently generates a meta box and image items alongside tracks when encoding sequences. I think this is the expected behavior because of ISO 23008-12 (HEIF):

Files containing an image sequence should also contain a file-level MetaBox with a primary item that is an image item as specified in Clause 6, for cases in which temporal presentation is either undesirable, or not possible (e.g. printing).
NOTE The primary item can share coded data with one of the intra-coded images in the sequence.

However the "shared coded data" will not have its still_picture and reduced_still_picture_header fields set to 0 because it is a sequence. So the note contradicts the other recommendations.

The recommendations on still_picture and reduced_still_picture_header were removed for Image Sequences in https://github.com/AOMediaCodec/av1-avif/pull/112. I suggest we do the same for Image Items.