stringtranslate.com

KLV

KLV (Key-Length-Value) es un estándar de codificación de datos que se utiliza a menudo para incorporar información en transmisiones de vídeo. El estándar utiliza un esquema de codificación tipo-longitud-valor . Los elementos se codifican en tripletes de clave-longitud-valor, donde la clave identifica los datos, la longitud especifica la longitud de los datos y el valor son los datos en sí. Se define en SMPTE 336M-2007 (Data Encoding Protocol Using Key-Length Value), aprobado por la Society of Motion Picture and Television Engineers . Debido al alto grado de interoperabilidad de KLV, también ha sido adoptado por la Motion Imagery Standards Board.

Empaquetado de bytes

En un flujo binario de datos, un conjunto KLV se descompone de la siguiente manera, siendo toda la interpretación de números enteros big endian :

Campo clave

Los primeros bytes son la clave, muy similar a una clave en una estructura de datos de tabla hash estándar. Las claves pueden tener una longitud de 1, 2, 4 o 16 bytes. Es de suponer que en un documento de especificaciones independiente se acordaría una longitud de clave para una aplicación determinada. Las claves de dieciséis bytes suelen reservarse para su uso como identificadores únicos registrados globalmente , y la parte de valor de un paquete de este tipo suele contener una serie de conjuntos KLV más grandes con claves más pequeñas.

Campo de longitud

Después de los bytes de la clave, se encuentran los bytes del campo Longitud, que le indicarán cuántos bytes siguen al campo Longitud y conforman la parte Valor. Hay cuatro tipos de codificación para el campo Longitud: 1 byte, 2 bytes, 4 bytes y Reglas de codificación básicas (BER). Las variantes de 1, 2 y 4 bytes son bastante sencillas: haga un entero sin signo a partir de los bytes, y ese entero es la cantidad de bytes que siguen.

La codificación de longitud BER es un poco más complicada, pero la más flexible. Si el primer byte del campo de longitud no tiene el bit alto configurado (0x80), ese byte único representa un número entero entre 0 y 127 e indica la cantidad de bytes de valor que siguen inmediatamente. Si el bit alto está configurado, los siete bits inferiores indican cuántos bytes siguen y que, por sí mismos, forman un campo de longitud.

Por ejemplo, si el primer byte de un campo de longitud de BER es binario 10000010, eso indicaría que los dos bytes siguientes forman un entero que indica cuántos bytes de valor siguen. Por lo tanto, se utilizaron tres bytes en total para especificar una longitud.

Campo de valor

Los bytes restantes son el campo Valor, y su contenido puede ser el que desee, incluida una cadena de más conjuntos KLV, como suele ser el caso.

Ejemplo

En el siguiente ejemplo, los cuatro bytes representan un conjunto KLV donde la clave es un byte, el campo de longitud es un byte (o posiblemente BER, no se puede saber a partir del ejemplo) y el valor son dos bytes: un cero y un tres. En su aplicación, usted habría acordado previamente a) utilizar claves de un byte y b) utilizar codificación de longitud de un byte. También es de suponer que el valor de la clave "42" significaría algo para usted, tal vez indica que los bytes de valor 0x00 y 0x03 son un número entero que representa el valor del odómetro de su bicicleta.

Enlaces externos