KLV

KLV (Key-Length-Value) är en datakodningsstandard som ofta används för att bädda in information i videoflöden. Standarden använder ett kodningsschema för typ-längd-värde . Objekt kodas till Key-Length-Value-tripletter, där nyckel identifierar data, längd anger datas längd och värde är själva data. Den definieras i SMPTE 336M-2007 (Data Encoding Protocol Using Key-Length Value), godkänd av Society of Motion Picture and Television Engineers . På grund av KLV:s stora grad av interoperabilitet har den även antagits av Motion Imagery Standards Board.

Byte packning

I en binär dataström bryts en KLV-uppsättning ned på följande sätt, med all heltalstolkning som big endian :

Nyckelfält

De första byten är nyckeln, ungefär som en nyckel i en standard hashtabelldatastruktur. Nycklar kan vara 1, 2, 4 eller 16 byte långa. Förmodligen skulle ni i ett separat specifikationsdokument komma överens om en nyckellängd för en given applikation. Sexton byte-nycklar är vanligtvis reserverade för användning som globalt registrerade unika identifierare, och värdedelen av ett sådant paket innehåller vanligtvis en serie fler KLV-uppsättningar med mindre nycklar.

Längdfält

Efter byte för nyckeln kommer byte för längdfältet som berättar hur många byte som följer längdfältet och utgör värdedelen. Det finns fyra typer av kodning för längdfältet: 1-byte, 2-byte, 4-byte och Basic Encoding Rules (BER). 1-, 2- och 4-bytevarianterna är ganska enkla: gör ett osignerat heltal av byten, och det heltal är antalet byte som följer.

BER-längdkodning är lite mer komplicerad men den mest flexibla. Om den första byten i längdfältet inte har den höga biten inställd (0x80), så representerar den enstaka byten ett heltal mellan 0 och 127 och indikerar antalet värdebyte som omedelbart följer. Om den höga biten är inställd, anger de lägre sju bitarna hur många byte som följer som själva utgör ett längdfält.

Till exempel om den första byten i ett BER-längdfält är binärt 10000010, skulle det indikera att de nästa två byten utgör ett heltal som sedan indikerar hur många värdebyte som följer. Därför togs totalt tre byte upp för att ange en längd.

Värdefält

De återstående byten är fältet Värde, och dess innehåll kan vara vad du vill, inklusive en kedja av fler KLV-uppsättningar, som ofta är fallet.

Exempel

I följande exempel representerar de fyra byten en KLV-uppsättning där nyckeln är en byte, längdfältet är en byte (eller möjligen BER - du kan inte avgöra från exemplet), och värdet är två byte: en noll och en tre . I din ansökan skulle du tidigare ha gått med på att a) använda en-byte-nycklar och b) använda en-byte-kodning. Förmodligen skulle också nyckelvärdet "42" betyda något för dig, kanske indikerar det att värdet byte 0x00 och 0x03 är ett heltal som representerar värdet på din cykels vägmätare.

Nyckel Längd Värde
42 2 0 3

externa länkar