2025-07-31 23:01:22 +01:00
|
|
|
=== Metadata Block (`META`)
|
2025-07-31 18:52:32 +01:00
|
|
|
|
|
|
|
|
The metadata block contains descriptive information related to the media source, which is not part of the original media data itself.
|
|
|
|
|
Typical fields may include the manufacturer name, device model, acquisition sequence identifiers, and other contextual attributes.
|
|
|
|
|
|
|
|
|
|
All string values within this block are encoded as little-endian UTF-16 and terminated with a null character.
|
|
|
|
|
|
|
|
|
|
[source,c]
|
|
|
|
|
#define META_MAGIC 0x4154454D
|
|
|
|
|
/**Metadata block, contains metadata */
|
|
|
|
|
typedef struct MetadataBlockHeader
|
|
|
|
|
{
|
|
|
|
|
/**Identifier, <see cref="BlockType.MetadataBlock" /> */
|
|
|
|
|
uint32_t identifier;
|
|
|
|
|
/**Size in uint8_ts of this whole metadata block */
|
|
|
|
|
uint32_t blockSize;
|
|
|
|
|
/**Sequence of media set this media beint64_ts to */
|
|
|
|
|
int32_t mediaSequence;
|
|
|
|
|
/**Total number of media on the media set this media beint64_ts to */
|
|
|
|
|
int32_t lastMediaSequence;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t creatorOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t creatorLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t commentsOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t commentsLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaTitleOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaTitleLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaManufacturerOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaManufacturerLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaModelOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaModelLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaSerialNumberOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaSerialNumberLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaBarcodeOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaBarcodeLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t mediaPartNumberOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t mediaPartNumberLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t driveManufacturerOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t driveManufacturerLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t driveModelOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t driveModelLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t driveSerialNumberOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t driveSerialNumberLength;
|
|
|
|
|
/**Offset to start of creator string from start of this block */
|
|
|
|
|
uint32_t driveFirmwareRevisionOffset;
|
|
|
|
|
/**Length in uint8_ts of the null-terminated UTF-16LE creator string */
|
|
|
|
|
uint32_t driveFirmwareRevisionLength;
|
|
|
|
|
} MetadataBlockHeader;
|
|
|
|
|
|
|
|
|
|
==== Field Descriptions
|
|
|
|
|
|
|
|
|
|
[cols="2,2,2,6",options="header"]
|
|
|
|
|
|===
|
|
|
|
|
|Type
|
|
|
|
|
|Size
|
|
|
|
|
|Name
|
|
|
|
|
|Description
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|identifier
|
2025-07-31 23:04:41 +01:00
|
|
|
|The metadata table identifier, always `META`
|
2025-07-31 18:52:32 +01:00
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|blockSize
|
|
|
|
|
|The size of this block including all of its data.
|
|
|
|
|
|
|
|
|
|
|int32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaSequence
|
|
|
|
|
|The number of heads.
|
|
|
|
|
|
|
|
|
|
|int32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|lastMediaSequence
|
|
|
|
|
|The number of sectors per track.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|creatorOffset
|
|
|
|
|
|Offset to start of creator string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|creatorLength
|
|
|
|
|
|Length in bytes of the creator string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|commentsOffset
|
|
|
|
|
|Offset to start of comments string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|commentsLength
|
|
|
|
|
|Length in bytes of the comments string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaTitleOffset
|
|
|
|
|
|Offset to start of media title string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaTitleLength
|
|
|
|
|
|Length in bytes of the media title string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaManufacturerOffset
|
|
|
|
|
|Offset to start of media manufacturer string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaManufacturerLength
|
|
|
|
|
|Length in bytes of the media manufacturer string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaModelOffset
|
|
|
|
|
|Offset to start of media model string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaModelLength
|
|
|
|
|
|Length in bytes of the media model string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaSerialNumberOffset
|
|
|
|
|
|Offset to start of media serial number string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaSerialNumberLength
|
|
|
|
|
|Length in bytes of the media serial number string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaBarcodeOffset
|
|
|
|
|
|Offset to start of media barcode string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaBarcodeLength
|
|
|
|
|
|Length in bytes of the media barcode string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaPartNumberOffset
|
|
|
|
|
|Offset to start of media part number string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|mediaPartNumberLength
|
|
|
|
|
|Length in bytes of the media part number string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveManufacturerOffset
|
|
|
|
|
|Offset to start of drive manufacturer string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveManufacturerLength
|
|
|
|
|
|Length in bytes of the drive manufacturer string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveModelOffset
|
|
|
|
|
|Offset to start of drive model string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveModelLength
|
|
|
|
|
|Length in bytes of the drive model string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveSerialNumberOffset
|
|
|
|
|
|Offset to start of drive serial number string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveSerialNumberLength
|
|
|
|
|
|Length in bytes of the drive serial number string.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveFirmwareRevisionOffset
|
|
|
|
|
|Offset to start of drive firmware revision string from start of this block.
|
|
|
|
|
|
|
|
|
|
|uint32_t
|
|
|
|
|
|4 bytes
|
|
|
|
|
|driveFirmwareRevisionLength
|
|
|
|
|
|Length in bytes of the drive firmware revision string.
|
|
|
|
|
|===
|