KlvLib
1.58
|
KLV (Key-Length-Value) is a data encoding standard used for binary data byte-packing and metadata embedding into video feeds. Data is 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. KLV encoding protocol defines a data structure which is independent of the application or transportation method used. KLV encoder C++ library allows seamless integration at the encoding/streaming side, while KLV decoder module may be used at the client side in order to extract encoded data.
Unmanned Air Systems use two types of KLV encoded metadata. Universal Data Set (UDS) - the 16-byte key, basic encoding rules (BER) formatted length, and data value is appropriate for applications where bandwidth isn't a concern. However, transmitting the 16-byte universal key quickly uses up the available bandwidth. UAS airborne platforms use a wireless communications channel where the bandwidth allocated for metadata is limited. Because of the bandwidth disadvantages of using a Universal Data Set, it is more desirable to use a Local Data Set for transmission over a UAS Datalink. Local Data Set can use a 1, 2 or 4-byte key with a 1, 2, 4-byte, or BER encoded length. For more info about KLV use in UAS application see KLV in UAS applications
KLVLib supports BER Short Form Length Encoding and BER Long Form Length Encoding
KLVLib contains classes and functions for Klv Data manipulation.
KlvLib SDK provides examples with source code to help you get started using the library. Here is a brief demo on how to use KlvLib for metadata encoding (LDS).
For more info see Using KlvLib sample or Using KlvLib (16 bytes Keys) sample