Skip to content

Commit

Permalink
Add list of required boxes for image items.
Browse files Browse the repository at this point in the history
Closes #167.
This is a rebase and fixup of PR #170.
The section on box requirements for sequences has been removed until someone has taken the time to fully go through it.
  • Loading branch information
leo-barnes committed Sep 11, 2024
1 parent b9ea3d8 commit c1f956f
Showing 1 changed file with 359 additions and 1 deletion.
360 changes: 359 additions & 1 deletion index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ url: https://www.iso.org/standard/68960.html; spec: ISOBMFF; type: property;
text: mdcv
text: clap
text: iloc
text: mdat
text: idat

url: https://www.iso.org/standard/74417.html; spec: MIAF; type: property;
text: miaf
Expand Down Expand Up @@ -431,11 +433,367 @@ A file containing a 'pict' track compliant with this profile is expected to list
<code>avis, msf1, miaf, MA1A</code>
</div>

<h2 id="box-lists">Box requirements</h2>

<h3 id="avif-boxes">Image item boxes</h3>
This section discusses the box requirements for an AVIF file containing only image items.

<h4 id="avif-required-boxes">Minimum set of boxes</h4>

<p>As indicated in [[#file-constraints]], an AVIF file is a compliant [[!MIAF]] file. As a consequence, some [[!ISOBMFF]] or [[!HEIF]] boxes are required, as indicated in the following table. The order of the boxes is indicative in the table. The specifications listed in the "Specification"
column may require a specific order for the box or for its children and shall be respected. For example, per [[!ISOBMFF]], the <code>FileTypeBox</code> is required to appear first in an AVIF file.
The "Version(s)" column in the following table lists the version(s) of the boxes allowed by this brand.
Other versions of the boxes shall not be used. "-" means that the box does not have a version.</p>

<table class="data">
<thead>
<tr>
<th>Top-Level</th>
<th>Level 1</th>
<th>Level 2</th>
<th>Level 3</th>
<th>Version(s)</th>
<th>Specification</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>ftyp</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>meta</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>hdlr</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>pitm</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0, 1</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>iloc</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0, 1, 2</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>iinf</td>
<td></td>
<td>&nbsp;</td>
<td>0, 1</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>infe</td>
<td>&nbsp;</td>
<td>2, 3</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>iprp</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>ipco</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>av1C</td>
<td>-</td>
<td>AVIF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>ispe</td>
<td>0</td>
<td>HEIF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>pixi</td>
<td>0</td>
<td>HEIF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>ipma</td>
<td>&nbsp;</td>
<td>0, 1</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>mdat</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>The coded payload may be placed in 'idat' rather than 'mdat', in which case 'mdat' is not required.</td>
</tr>
</tbody>
</table>

<h4 id="avif-required-boxes-additional">Requirements on additional image item related boxes</h4>

<p>The boxes indicated in the following table may be present in an AVIF file to provide additional signaling for image items. The boxes may be present inside the box indicated in the "Containing box" column. If present, they shall use the version indicated in the table and AVIF readers are expected to understand them. The order of the boxes is indicative in the table. Specifications may require specific order and shall be respected. Additionally, the <code>free</code> and <code>skip</code> boxes may be present at any level in the hierarchy. AVIF readers are expected to ignore them. Additional boxes in the <code>meta</code> hierarchy not listed in the following table may also be present and may be ignored by AVIF readers.</p>
<table class="data">
<thead>
<tr>
<th>Level 1</th>
<th>Level 2</th>
<th>Version(s)</th>
<th>Specification</th>
<th>Containing Box</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>dinf</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>meta</td>
<td>Used to indicate the location of the media information in a track</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>dref</td>
<td>0</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>iref</td>
<td>&nbsp;</td>
<td>0, 1</td>
<td>ISOBMFF</td>
<td>meta</td>
<td>Used to indicate directional relationships between images or metadata</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>auxl</td>
<td>-</td>
<td>HEIF</td>
<td>&nbsp;</td>
<td>Used when an image is auxiliary to another image</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>thmb</td>
<td>-</td>
<td>HEIF</td>
<td>&nbsp;</td>
<td>Used when an image is a thumbnail of another image</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>dimg</td>
<td>-</td>
<td>HEIF</td>
<td>&nbsp;</td>
<td>Used when an image is derived from another image</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>prem</td>
<td>-</td>
<td>HEIF</td>
<td>&nbsp;</td>
<td>Used when when an alpha image contains premultiplied color values from another image</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>cdsc</td>
<td>-</td>
<td>HEIF</td>
<td>&nbsp;</td>
<td>Used to link metadata with an image</td>
</tr>
<tr>
<td>idat</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>meta</td>
<td>Used to store derived image definitions</td>
</tr>
<tr>
<td>grpl</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>meta</td>
<td>Used to indicate that multiple images are semantically grouped</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>altr</td>
<td>0</td>
<td>ISOBMFF</td>
<td>&nbsp;</td>
<td>Used when images in a group are alternative to each other</td>
</tr>
<tr>
<td>pasp</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal pixel aspect ratio. If present, shall indicate a pixel aspect ratio of 1:1</td>
</tr>
<tr>
<td>colr</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal information such as color primaries.</td>
</tr>
<tr>
<td>auxC</td>
<td>&nbsp;</td>
<td>0</td>
<td>HEIF</td>
<td>ipco</td>
<td>Used to signal the type of an auxiliary image (e.g. alpha, depth).</td>
</tr>
<tr>
<td>clap</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal cropping applied to an image</td>
</tr>
<tr>
<td>irot</td>
<td>&nbsp;</td>
<td>-</td>
<td>HEIF</td>
<td>ipco</td>
<td>Used to signal a rotation applied to an image</td>
</tr>
<tr>
<td>imir</td>
<td>&nbsp;</td>
<td>-</td>
<td>HEIF</td>
<td>ipco</td>
<td>Used to signal a mirroring applied to an image</td>
</tr>
<tr>
<td>clli</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal HDR light level information for an image</td>
</tr>
<tr>
<td>cclv</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal HDR color volume for an image</td>
</tr>
<tr>
<td>mdcv</td>
<td>&nbsp;</td>
<td>-</td>
<td>ISOBMFF</td>
<td>ipco</td>
<td>Used to signal HDR mastering information for an image</td>
</tr>
<tr>
<td>a1op</td>
<td>&nbsp;</td>
<td>-</td>
<td>AVIF</td>
<td>ipco</td>
<td>Used to configure rendering of a multiple operating points image</td>
</tr>
<tr>
<td>lsel</td>
<td>&nbsp;</td>
<td>-</td>
<td>HEIF</td>
<td>ipco</td>
<td>Used to configure rendering of a multilayered image</td>
</tr>
<tr>
<td>a1lx</td>
<td>&nbsp;</td>
<td>-</td>
<td>AVIF</td>
<td>ipco</td>
<td>Used to assist reader in parsing a multilayered image</td>
</tr>
</tbody>
</table>

<h2 id="mime-registration">AVIF Media Type Registration</h2>

<p>The media type <code>"image/avif"</code> is officially registered with IANA and available at: <a href="https://www.iana.org/assignments/media-types/image/avif">https://www.iana.org/assignments/media-types/image/avif</a>.</p>

<h2 id="change-list">Changes since v1.1.0 release</h2>
- EDITORIAL: <a href="https://github.com/AOMediaCodec/av1-avif/pull/223">Stop using `dfn value` for definitions.</a>
- EDITORIAL: <a href="https://github.com/AOMediaCodec/av1-avif/pull/222">Add assert-ids in the spec for conformance file testing and ComplianceWarden</a>

- <a href="https://github.com/AOMediaCodec/av1-avif/pull/225">Add required list of boxes for AVIF files</a>

0 comments on commit c1f956f

Please sign in to comment.