Use the following code example for Dynamic Range and Mastering (HDR) InfoFrames:
typedef struct XHdmiC_DRM_InfoFrame {
XHdmiC_DRM_EOTF EOTF;
XHdmiC_DRM_Static_Metadata_Descp_Id Static_Metadata_Descriptor_ID;
struct {
u16 x,y;
} disp_primaries[3];
struct {
u16 x,y;
} white_point;
u16 Max_Disp_Mastering_Luminance;
u16 Min_Disp_Mastering_Luminance;
u16 Max_Content_Light_Level;
u16 Max_Frame_Average_Light_Level;
} XHdmiC_DRMInfoFrame;
The following API functions are defined in the HDMI Common driver to facilitate the construction of the InfoFrame packets. You must set the corresponding fields in the data structure and use the call functions below based on InfoFrame type. The API function constructs the packet and simultaneously calculates a CRC for both packet header and packet body.
XHdmiC_Aux XV_HdmiC_AVIIF_GeneratePacket(XHdmiC_AVI_InfoFrame *infoFramePtr);
XHdmiC_Aux XV_HdmiC_AudioIF_GeneratePacket(XHdmiC_AudioInfoFrame *AudioInfoFrame);
XHdmiC_Aux XV_HdmiC_VSIF_GeneratePacket(XHdmiC_VSIF *VSIFPtr);
void XV_HdmiC_DRMIF_GeneratePacket(XHdmiC_DRMInfoFrame *DRMInfoFrame, XHdmiC_Aux *aux);