LibMISB - LibMISB Introduction - What is LibMISB
LibMISB |
---|
Introduction |
Supported Standards |
Getting Started |
Examples |
Evaluating |
Contact Us |
LibMISB Overview
Metadata in video streams have been used to provide information about streams, audio, or video files. That metadata could be included in video streaming or as a separate file within a media container; the metadata can include information about the entire video stream, file, or specific frames of the stream.
There is a set of standard specifications defined by the Motion Imagery Standards Board (MISB), which they represent standards for review in the area of Motion Imagery, as well as associated metadata and multimedia. Put another way, MISB standards define how metadata should be processed before being sent to a receiver, or received by a sender. Importantly, this standard uses the Key-Length-Value (KLV) data encoding protocol.
Key Length Value (KLV) Metadata
KLV is a byte-level data encoding protocol for the representation of data elements and data groups. It defines a data structure that is independent of the application or transport method being used. The standard defines a KLV triplet as a data exchange protocol, the key identifies the data, and the length specifies the length of the data and the value of the data itself.
KLV data is any binary data that we need to move from one end to the other while keeping the data associated with the correct video frame. It is up to the user of the video encoding stream and the user of the video decoding stream to understand the meaning and encoding of the KLV data.
To give a concrete KLV encoding example, here is a terse description of the SMPTE 336M-2007 Data Encoding Protocol using Key-Length Value, which is used by the MISB standard.
Key | Length | Value |
---|---|---|
Fixed length (1, 2, 4, or 16 bytes), size known to both sender and receiver, encoding the key. There are very specific rules on how keys are encoded and how both, the sender and receiver, know the meaning of the encoded key. |
Fixed or variable length (1, 2, 4, or BER) indication of the number of bytes of data used to encode the value. |
Variable length value whose meaning is agreed to by both the sender and the receiver. |
As an example (from Wikipedia KLV entry),
Key | Length | Value | |
---|---|---|---|
42 | 2 | 0 | 3 |
Which could be passed in as a 4-byte binary blob of 0x2A 0x02 0x00 0x03. The transport of the KLV doesn't need to know the actual encoding, just that it is 4 bytes long and the actual KLV data.
As another example (not MISB compliant), you could have the length be 8 and the data be 0x46 0x4F 0x4F 0x3D 0x42 0x41 0x52 0x00, which works out to be the NULL-terminated ASCII string FOO=BAR. The transport doesn't care about the encoding, just so both the sending and receiver are in agreement.
Motion Imagery Standards Board (MISB)
This project provides the support of MISB standards that comply with the KLV protocol. Allows users to easily manipulate their encode and decode depending on MISB standards. If you want more information about MISB standards, please follow the next link Motion Imagery Standards Board (MISB).