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

Should the spec have recommendations on how encoders/decoders handle draft features? #190

Open leo-barnes opened 2 years ago

leo-barnes commented 2 years ago

This was discussed in the last meeting. In order to make sure that draft-features work in practice, you want to implement them before the draft is published. But this can cause issues since the draft may change before it is published. The consensus was that the following is a good approach:

Do we want to add a short recommendation in the spec so that we document that this is how we think it should work?

baumanj commented 2 years ago

Do we want to add a short recommendation in the spec so that we document that this is how we think it should work?

Yeah, I think that sounds great. While it sounds very simple/obvious in theory, I think in the real world it can be kind of subtle because it's easy to forget about the complex N:M interactions of many different writers (and versions thereof) interacting with many different readers.

One thing it brings up for me is whether we should restrict the language to features or write more broadly about specification changes. Or perhaps the two cases should be handled differently, which means we'll need to define what the distinction is relatively precisely. Two real world examples I think will help test whether the language we want to write is achieving the goal:

  1. The interpretation of imir changed in ISO/IEC 23008-12:2017/DAmd 2, reversing what the spec says to align it with the overwhelming (but technically backward) implementations in the wild. This is a good change, but tricky because it puts implementations trying to follow the spec in direct conflict with what the majority of users will expect.
  2. The quantity requirement of "at most one" colr box was relaxed in DIS 23008-12, but because of the inherent ambiguity prior to that codification, a conformant reader would appropriately reject inputs with multiple colr boxes. That seems to operate more like a feature where it seems safe for readers to implement the change before it's published as long as writers require an explicit override to use multiple colr boxes.