Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Стандарт кодирования данных (KV) - стандарт кодирования данных, часто используемый для встраивания информации в видео. Стандарт использует схему кодирования типа "длина" "значение". Элементы кодируются в триплетные значения длины ключа, где ключ идентифицирует данные, длина определяет длину данных, а значение - это сами данные. Он определен в SMPTE 336M 2007 (Протокол кодирования данных с использованием значения длины ключа), одобренном Обществом инженеров кино и телевидения. В связи с высокой степенью совместимости KLV, он также был принят Советом по стандартам кинематографии.
Data encoding standard
the data encoding standard
KLV (Key Length Value) is a data encoding standard, often used to embed information in video feeds. The standard uses a type–length–value encoding scheme. Items are encoded into Key Length Value triplets, where key identifies the data, length specifies the data's length, and value is the data itself. It is defined in SMPTE 336M 2007 (Data Encoding Protocol Using Key Length Value), approved by the Society of Motion Picture and Television Engineers. Due to KLV's large degree of interoperability, it has also been adopted by the Motion Imagery Standards Board.
Поле ключа
Первые несколько байтов являются ключевыми, как ключ в стандартной структуре данных хэш-таблицы. Ключи могут быть длиной 1, 2, 4 или 16 байтов. Предположительно, в отдельном документе спецификации вы согласитесь на длину ключа для данного приложения. Шестнадцатибайтовые ключи обычно зарезервированы для использования в качестве глобально зарегистрированных уникальных идентификаторов, и часть "Ценность" такого пакета обычно содержит серию большего количества наборов KLV с меньшими ключами.
The first few bytes are the Key, much like a key in a standard hash table data structure. Keys can be 1, 2, 4, or 16 bytes in length. Presumably in a separate specification document you would agree on a key length for a given application. Sixteen byte keys are usually reserved for use as globally registered unique identifiers, and the Value portion of such a packet usually contains a series of more KLV sets with smaller keys.
Поле длины
После байтов для ключа есть байты для поля длина, которое скажет вам, сколько байтов следуют за полем длины и составляют часть значения. Существует четыре вида кодирования для поля Length: 1 байт, 2 байт, 4 байт и Basic Encoding Rules (BER). Варианты 1, 2 и 4 байт довольно просты: сделайте неподписанное целое число из байтов, и это целое число - это количество следующих байтов. Кодирование длины BER немного сложнее, но наиболее гибкое. Если первый байт в поле длины не имеет высокого битового набора (0x80), то этот единственный байт представляет собой целое число от 0 до 127 и указывает количество байтов значения, которое сразу последует. Если высокий бит установлен, то нижние семь битов указывают, сколько байтов следуют за ними, которые сами составляют поле длины. Например, если первый байт поля длины BER является двоичным 10000010, это будет указывать, что следующие два байта составляют целое число, которое затем указывает, сколько байтов Value следует. Поэтому для определения длины было взято в общей сложности три байта.
Following the bytes for the Key are bytes for the Length field which will tell you how many bytes follow the length field and make up the Value portion. There are four kinds of encoding for the Length field: 1 byte, 2 byte, 4 byte and Basic Encoding Rules (BER). The 1 , 2 , and 4 byte variants are pretty straightforward: make an unsigned integer out of the bytes, and that integer is the number of bytes that follow. BER length encoding is a bit more complicated but the most flexible. If the first byte in the length field does not have the high bit set (0x80), then that single byte represents an integer between 0 and 127 and indicates the number of Value bytes that immediately follows. If the high bit is set, then the lower seven bits indicate how many bytes follow that themselves make up a length field. For example if the first byte of a BER length field is binary 10000010, that would indicate that the next two bytes make up an integer that then indicates how many Value bytes follow. Therefore a total of three bytes were taken up to specify a length.
Поле "значение"
Остальные байты - это поле "Ценность", и его содержимое может быть любым, включая цепочку из большего количества наборов KLV, как это часто бывает.
The remaining bytes are the Value field, and its contents can be whatever you like, including a chain of more KLV sets, as is often the case.