<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Header for a metadata block containing offsets and lengths to UTF-16LE descriptive strings. <ahref="structMetadataBlockHeader.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Header for a CICM XML metadata block (identifier == BlockType::CicmBlock). <ahref="structCicmMetadataBlock.html#details">More...</a><br/></td></tr>
<divclass="textblock"><p>Packed on-disk metadata block headers for descriptive strings and CICM XML (if present). </p>
<p>Two metadata-related block header layouts are defined:</p><ul>
<li><aclass="el"href="structMetadataBlockHeader.html">MetadataBlockHeader</a> (BlockType::MetadataBlock): offsets + lengths for several UTF-16LE strings.</li>
<li><aclass="el"href="structCicmMetadataBlock.html">CicmMetadataBlock</a> (BlockType::CicmBlock): length of embedded CICM XML metadata payload.</li>
</ul>
<p>All multi-byte integers are little-endian. Structures are packed (1-byte alignment). All textual fields referenced by offsets are UTF-16LE, null-terminated (0x0000). Length fields include the terminating null (i.e. length >= 2 and an even number). Offsets are relative to the start of the corresponding block header (byte 0 = first byte of the header). No padding is implicitly added between strings; producers may pack them tightly or align them manually (alignment not required by the specification).</p>
<p>Metadata block layout (conceptual): <aclass="el"href="structMetadataBlockHeader.html"title="Header for a metadata block containing offsets and lengths to UTF-16LE descriptive strings.">MetadataBlockHeader</a> (fixed size) <variable region holding each present UTF-16LE string in any order chosen by the writer></p>
<p>Invariants / validation recommendations for <aclass="el"href="structMetadataBlockHeader.html"title="Header for a metadata block containing offsets and lengths to UTF-16LE descriptive strings.">MetadataBlockHeader</a>:</p><ul>
<li>For every (offset,length) pair where length > 0:<ul>
<li>offset >= sizeof(MetadataBlockHeader)</li>
<li>offset + length <= blockSize</li>
<li>length % 2 == 0</li>
<li>The 16-bit code unit at (offset + length - 2) == 0x0000 (null terminator)</li>
</ul>
</li>
<li>mediaSequence >= 0 and lastMediaSequence >= 0; if lastMediaSequence > 0 then 0 <= mediaSequence < lastMediaSequence</li>
</ul>
<p>CICM metadata block layout: <aclass="el"href="structCicmMetadataBlock.html"title="Header for a CICM XML metadata block (identifier == BlockType::CicmBlock).">CicmMetadataBlock</a> (header) <length bytes of UTF-8 or XML text payload (implementation-defined, not null-terminated)></p>
<p>NOTE: The library code reading these blocks must not assume strings are present; a zero length means the corresponding field is omitted. Offsets for omitted fields MAY be zero or arbitrary; readers should skip them whenever length == 0. </p>
<pclass="definition">Definition in file <aclass="el"href="metadata_8h_source.html">metadata.h</a>.</p>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.15.0 </li>