AUX Packets - 1.2 English

HDMI 2.1 Transmitter Subsystem v1.2 Product Guide (PG350)

Document ID
PG350
Release Date
2023-10-18
Version
1.2 English

For HDMI, all data island packets consist of a 4-byte packet header and a 32 bytes of packet contents. The packet header, represented in the following figure, contains 24 data bits (3 bytes) and 8 bits (1 byte) of BCH ECC parity.

Figure 1. Packet Header

The packet body, represented in the following figure, is made from four subpackets; each subpacket includes 56 bits (7 bytes) of data and 8 bits (1 byte) of BCH ECC parity.

Figure 2. Packet Body
Note:
  • ECC is calculated in the HDMI 2.1 TX Subsystem. Therefore, you must construct HB0...HB2, and PB0, PB1...PB26, PB27 according to HDMI specs in the software.
  • When calculating the checksum value (PB0), the ECC values are ignored.
  • Refer to section 5.2.3.4 and 5.2.3.5 of the HDMI 1.4 specification (https://www.hdmi.org/spec/index) for more information on the Aux packet structure.

In the following table, the packet types are identified as handled by hardware and handled by software.

Table 1. Hardware and Software Packet Types
Packet Type Value Packet Type
0x00 1 Null
0x01 1 Audio Clock Regeneration (N/CTS)
0x02 1 Audio Sample (L-PCM and IEC 61937 compressed formats)
0x03 1 General Control
0x04 ACP Packet
0x05 ISRC1 Packet
0x06 ISRC2 Packet
0x07 One Bit Audio Sample Packet
0x08 DST Audio Packet
0x09 1 High Bitrate (HBR) Audio Stream Packet (IEC 61937)
0x0A Gamut Metadata Packet
0x0B 1 3D Audio Sample Packet (LPCM Format Only)
0x0C One Bit 3D Audio Sample Packet
0x0D 2 Audio MetaData Packet
0x80+InfoFrame Type InfoFrame Packet
0x00 Reserved
0x01 2 Vendor-Specific 3
0x02 2 Auxiliary Video Information (AVI)
0x03 Source Product Descriptor
0x04 2 Audio
0x05 MPEG Source
0x06 NTSC VBI
0x07 2 Dynamic Range and Mastering (HDR)
  1. Handled by hardware.
  2. Handled by software.
  3. HDMI 2.1 TX SS drivers have an API available to generate only H14B/HDMI LLC VSIF. To generate HF-VSIF, construct, and send to IP via a common API defined for sending auxiliary packets in application software.

In the HDMI 2.1 TX Subsystem driver, a common API is defined for sending auxiliary packets.

u32 XV_HdmiTxSs1_SendGenericAuxInfoframe(XV_HdmiTxSs1 *InstancePtr, void *AuxPtr);

where,

  • InstancePtr is a pointer to the HDMI 2.1 TX Subsystem instance.
  • Aux is a 36 byte array contains the complete AUX packet.

The AUX packet data structure defined in the driver is:

typedef union {
    u32 Data;  
    u8 Byte[4]; 
} XHdmiC_AuxHeader;
typedef union {
    u32 Data[8];  
    u8 Byte[32];  
} XHdmiC_AuxData;
typedef struct {
  XHdmiC_AuxHeader Header; 
  XHdmiC_AuxData Data;
} XHdmiC_Aux;

For packet types not highlighted in the previous table (MPEG Source, NTSC VBI), you can construct packets with respect to the specification, and send them using the same API call. In this case, you must calculate the CRC whenever needed and place the CRC at the right location so that the HDMI Sink can decode the packet.