14#define HDMI_EC_XVYCC601 0x00
15#define HDMI_EC_XVYCC709 0x01
16#define HDMI_EC_SYCC601 0x02
17#define HDMI_EC_ADOBEYCC601 0x03
18#define HDMI_EC_ADOBERGB 0x04
20#define HDMI_YQ_LIMITED_RANGE 0x00
21#define HDMI_YQ_FULL_RANGE 0x01
23#define HDMI_CN_NONE_OR_GRAPHICS 0x00
24#define HDMI_CN_PHOTO 0x01
25#define HDMI_CN_CINEMA 0x02
26#define HDMI_CN_GAME 0x03
34 DWORD dwFrameDuration;
38 { 0, 0, FALSE, 0, 0, 0, },
39 { 640, 480, FALSE, 4, 3, 166667, },
40 { 720, 480, FALSE, 4, 3, 166667, },
41 { 720, 480, FALSE, 16, 9, 166667, },
42 { 1280, 720, FALSE, 16, 9, 166667, },
43 { 1920, 1080, TRUE, 16, 9, 333333, },
44 { 720, 480, TRUE, 4, 3, 333333, },
45 { 720, 480, TRUE, 16, 9, 333333, },
46 { 720, 240, FALSE, 4, 3, 166667, },
47 { 720, 240, FALSE, 16, 9, 166667, },
48 { 2880, 480, TRUE, 4, 3, 333333, },
49 { 2880, 480, TRUE, 16, 9, 333333, },
50 { 2880, 240, FALSE, 4, 3, 166667, },
51 { 2880, 240, FALSE, 16, 9, 166667, },
52 { 1440, 480, FALSE, 4, 3, 166667, },
53 { 1440, 480, FALSE, 16, 9, 166667, },
54 { 1920, 1080, FALSE, 16, 9, 166667, },
55 { 720, 576, FALSE, 4, 3, 200000, },
56 { 720, 576, FALSE, 16, 9, 200000, },
57 { 1280, 720, FALSE, 16, 9, 200000, },
58 { 1920, 1080, TRUE, 16, 9, 400000, },
59 { 720, 576, TRUE, 4, 3, 400000, },
60 { 720, 576, TRUE, 16, 9, 400000, },
61 { 720, 288, FALSE, 4, 3, 200000, },
62 { 720, 288, FALSE, 16, 9, 200000, },
63 { 2880, 576, TRUE, 4, 3, 400000, },
64 { 2880, 576, TRUE, 4, 3, 400000, },
65 { 2880, 288, FALSE, 4, 3, 200000, },
66 { 2880, 288, FALSE, 16, 9, 200000, },
67 { 1440, 576, FALSE, 4, 3, 200000, },
68 { 1440, 576, FALSE, 16, 9, 200000, },
69 { 1920, 1080, FALSE, 16, 9, 200000, },
70 { 1920, 1080, FALSE, 16, 9, 416667, },
71 { 1920, 1080, FALSE, 16, 9, 400000, },
72 { 1920, 1080, FALSE, 16, 9, 333333, },
73 { 2880, 480, FALSE, 4, 3, 166667, },
74 { 2880, 480, FALSE, 16, 9, 166667, },
75 { 2880, 576, FALSE, 4, 3, 200000, },
76 { 2880, 576, FALSE, 16, 9, 200000, },
77 { 1920, 1080, TRUE, 16, 9, 400000, },
78 { 1920, 1080, TRUE, 16, 9, 200000, },
79 { 1280, 720, FALSE, 16, 9, 100000, },
80 { 720, 576, FALSE, 4, 3, 100000, },
81 { 720, 576, FALSE, 16, 9, 100000, },
82 { 720, 576, TRUE, 4, 3, 200000, },
83 { 720, 576, TRUE, 16, 9, 200000, },
84 { 1920, 1080, TRUE, 16, 9, 166667, },
85 { 1280, 720, FALSE, 16, 9, 83333, },
86 { 720, 480, FALSE, 4, 3, 83333, },
87 { 720, 480, FALSE, 16, 9, 83333, },
88 { 720, 480, TRUE, 4, 3, 166667, },
89 { 720, 480, TRUE, 16, 9, 166667, },
90 { 720, 576, FALSE, 4, 3, 50000, },
91 { 720, 576, FALSE, 16, 9, 50000, },
92 { 720, 576, TRUE, 4, 3, 100000, },
93 { 720, 576, TRUE, 16, 9, 100000, },
94 { 720, 480, FALSE, 4, 3, 41667, },
95 { 720, 480, FALSE, 16, 9, 41667, },
96 { 720, 480, TRUE, 4, 3, 83333, },
97 { 720, 480, TRUE, 16, 9, 83333, },
98 { 1280, 720, FALSE, 16, 9, 416667, },
99 { 1280, 720, FALSE, 16, 9, 400000, },
100 { 1280, 720, FALSE, 16, 9, 333333, },
101 { 1920, 1080, FALSE, 16, 9, 83333, },
102 { 1920, 1080, FALSE, 16, 9, 100000 },
106 { 0, 0, FALSE, 0, 0, 0, },
107 { 3840, 2160, FALSE, 16, 9, 333333, },
108 { 3840, 2160, FALSE, 16, 9, 400000, },
109 { 3840, 2160, FALSE, 16, 9, 416667, },
110 { 4096, 2160, FALSE, 16, 9, 416667 },
113static const BYTE g_abyDefaultYUV709VICs[] = {
114 0, 1, 4, 5, 16, 19, 20, 31, 32, 33, 34, 39, 40, 46, 47, 60, 61, 62, 63, 64
118typedef enum _HDMI_PIXEL_ENCODING {
119 HDMI_ENCODING_RGB_444 = 0,
120 HDMI_ENCODING_YUV_422 = 1,
121 HDMI_ENCODING_YUV_444 = 2,
122 HDMI_ENCODING_YUV_420 = 3
123} HDMI_PXIEL_ENCODING;
161 BYTE byMetadataDescriptorID;
163 BYTE display_primaries_lsb_x0;
164 BYTE display_primaries_msb_x0;
165 BYTE display_primaries_lsb_y0;
166 BYTE display_primaries_msb_y0;
168 BYTE display_primaries_lsb_x1;
169 BYTE display_primaries_msb_x1;
170 BYTE display_primaries_lsb_y1;
171 BYTE display_primaries_msb_y1;
173 BYTE display_primaries_lsb_x2;
174 BYTE display_primaries_msb_x2;
175 BYTE display_primaries_lsb_y2;
176 BYTE display_primaries_msb_y2;
178 BYTE white_point_lsb_x;
179 BYTE white_point_msb_x;
180 BYTE white_point_lsb_y;
181 BYTE white_point_msb_y;
183 BYTE max_display_mastering_lsb_luminance;
184 BYTE max_display_mastering_msb_luminance;
185 BYTE min_display_mastering_lsb_luminance;
186 BYTE min_display_mastering_msb_luminance;
188 BYTE maximum_content_light_level_lsb;
189 BYTE maximum_content_light_level_msb;
191 BYTE maximum_frame_average_light_level_lsb;
192 BYTE maximum_frame_average_light_level_msb;
197#define HDMI_AUDIO_CODING_TYPE_STREAM 0x00
198#define HDMI_AUDIO_CODING_TYPE_PCM 0x01
199#define HDMI_AUDIO_CODING_TYPE_AC3 0x02
200#define HDMI_AUDIO_CODING_TYPE_MPEG1 0x03
201#define HDMI_AUDIO_CODING_TYPE_MP3 0x04
202#define HDMI_AUDIO_CODING_TYPE_MPEG2 0x05
203#define HDMI_AUDIO_CODING_TYPE_AAC_LC 0x06
204#define HDMI_AUDIO_CODING_TYPE_DTS 0x07
205#define HDMI_AUDIO_CODING_TYPE_ATRAC 0x08
206#define HDMI_AUDIO_CODING_TYPE_DSD 0x09
207#define HDMI_AUDIO_CODING_TYPE_EAC3 0x0A
208#define HDMI_AUDIO_CODING_TYPE_DTS_HD 0x0B
210#define HDMI_AUDIO_SAMPLE_SIZE_STREAM 0x00
211#define HDMI_AUDIO_SAMPLE_SIZE_16BIT 0x01
212#define HDMI_AUDIO_SAMPLE_SIZE_20BIT 0x02
213#define HDMI_AUDIO_SAMPLE_SIZE_24BIT 0x03
215#define HDMI_AUDIO_SAMPLE_RATE_STREAM 0x00
216#define HDMI_AUDIO_SAMPLE_RATE_32000 0x01
217#define HDMI_AUDIO_SAMPLE_RATE_44100 0x02
218#define HDMI_AUDIO_SAMPLE_RATE_48000 0x03
219#define HDMI_AUDIO_SAMPLE_RATE_88200 0x04
220#define HDMI_AUDIO_SAMPLE_RATE_96000 0x05
221#define HDMI_AUDIO_SAMPLE_RATE_176400 0x06
222#define HDMI_AUDIO_SAMPLE_RATE_192000 0x07
225 BYTE byChannelCount : 3;
226 BYTE byReserved1 : 1;
227 BYTE byAudioCodingType : 4;
229 BYTE bySampleSize : 2;
230 BYTE bySampleFrequency : 3;
231 BYTE byReserved2 : 3;
233 BYTE byAudioCodingExtensionType : 5;
234 BYTE byReserved3 : 3;
236 BYTE byChannelAllocation;
238 BYTE byLFEPlaybackLevel : 2;
239 BYTE byReserved4 : 1;
240 BYTE byLevelShiftValue : 4;
241 BYTE byDownMixInhibitFlag : 1;
245#define HDMI_SPD_SORUCE_UNKOWN 0x00
246#define HDMI_SPD_SORUCE_DIGITAL_STB 0x01
247#define HDMI_SPD_SORUCE_DVD_PLAYER 0x02
248#define HDMI_SPD_SORUCE_D_VHS 0x03
249#define HDMI_SPD_SORUCE_HDD_RECORDER 0x04
250#define HDMI_SPD_SORUCE_DVC 0x05
251#define HDMI_SPD_SORUCE_DSC 0x06
252#define HDMI_SPD_SORUCE_VIDEO_CD 0x07
253#define HDMI_SPD_SORUCE_GAME 0x08
254#define HDMI_SPD_SORUCE_PC_GENERAL 0x09
255#define HDMI_SPD_SORUCE_BLUE_RAY_DISC 0x0A
256#define HDMI_SPD_SORUCE_SUPER_AUDIO_CD 0x0B
257#define HDMI_SPD_SORUCE_HD_DVD 0x0C
258#define HDMI_SPD_SORUCE_PMP 0x0D
261 CHAR achVendorName[8];
262 CHAR achProductDescription[16];
263 BYTE bySourceInformation;
267#define HDMI14B_VS_REGISTRATION_ID 0x000C03
269#define HDMI14B_VS_FORMAT_NONE 0x00
270#define HDMI14B_VS_FORMAT_EXT_RES 0x01
271#define HDMI14B_VS_FORMAT_3D_FORMAT 0x02
274#define HDMI14B_3DS_FRAME_PACKING 0x00
275#define HDMI14B_3DS_FIELD_ALTERNATIVE 0x01
276#define HDMI14B_3DS_LINE_ALTERNATIVE 0x02
277#define HDMI14B_3DS_SIDE_BY_SIDE_FULL 0x03
278#define HDMI14B_3DS_TOP_AND_BOTTOM 0x06
279#define HDMI14B_3DS_SIDE_BY_SIDE_HALF 0x08
282#define HDMI_SUB_SAMPLING_HORIZONTAL_00 0x00
283#define HDMI_SUB_SAMPLING_HORIZONTAL_01 0x01
284#define HDMI_SUB_SAMPLING_HORIZONTAL_10 0x02
285#define HDMI_SUB_SAMPLING_HORIZONTAL_11 0x03
286#define HDMI_SUB_SAMPLING_QUINCUNX_ODD_ODD 0x04
287#define HDMI_SUB_SAMPLING_QUINCUNX_ODD_EVEN 0x05
288#define HDMI_SUB_SAMPLING_QUINCUNX_EVEN_ODD 0x06
289#define HDMI_SUB_SAMPLING_QUINCUNX_EVEN_EVEN 0x07
296 BYTE byReserved1 : 3;
297 BYTE by3DMetaPresent : 1;
298 BYTE by3DStructure : 4;
300 BYTE byReserved2 : 4;
301 BYTE by3DExtData : 4;
303 BYTE by3DMetadataLength : 5;
304 BYTE by3DMetadataType : 3;
308 BYTE byReserved1 : 5;
309 BYTE byHDMIVideoFormat : 3;
319 BYTE abyRegistrationId[3];
329 return payload->abyRegistrationId[0] | (payload->abyRegistrationId[1] << 8)
330 | (payload->abyRegistrationId[2] << 16);
334#define HDMI_INFOFRAME_TYPE_VS 0x81
335#define HDMI_INFOFRAME_TYPE_AVI 0x82
336#define HDMI_INFOFRAME_TYPE_SPD 0x83
337#define HDMI_INFOFRAME_TYPE_AUDIO 0x84
338#define HDMI_INFOFRAME_TYPE_MS 0x85
339#define HDMI_INFOFRAME_TYPE_VBI 0x86
340#define HDMI_INFOFRAME_TYPE_HDR 0x87
377 unsigned char *pbyData = (
unsigned char *)&info->
header;
381 while (cbData-- != 0)
struct _HDMI_INFOFRAME_PACKET HDMI_INFOFRAME_PACKET
HDMI_INFOFRAME_PACKET.
struct _HDMI_INFOFRAME_HEADER HDMI_INFOFRAME_HEADER
HDMI_INFOFRAME_HEADER.
struct _HDMI_AVI_INFOFRAME_PAYLOAD HDMI_AVI_INFOFRAME_PAYLOAD
HDMI_AVI_INFOFRAME_PAYLOAD.
Definition: MWHDMIPackets.h:295
Definition: MWHDMIPackets.h:291
Definition: MWHDMIPackets.h:307
Definition: MWHDMIPackets.h:224
HDMI_AVI_INFOFRAME_PAYLOAD.
Definition: MWHDMIPackets.h:130
BYTE byVIC
Video identification code.
Definition: MWHDMIPackets.h:146
BYTE byRGBQuantizationRange
RGB quantization range.
Definition: MWHDMIPackets.h:142
BYTE byNonUniformPictureScaling
Non-uniform picture ratio.
Definition: MWHDMIPackets.h:141
BYTE byYCCQuantizationRange
YCCC quantization range.
Definition: MWHDMIPackets.h:151
WORD wStartOfRightBar
Unsigned integer, representing the first pixel of the vertical letterbox bar on the right....
Definition: MWHDMIPackets.h:156
BYTE byPixelRepetitionFactor
Pixel repetition factor.
Definition: MWHDMIPackets.h:149
WORD wStartOfBottomBar
Unsigned integers represent the first line of the letterbox bar at the bottom of the horizontal scree...
Definition: MWHDMIPackets.h:154
BYTE byITContent
IT content.
Definition: MWHDMIPackets.h:144
BYTE byCodedFrameAspectRatio
Frame Aspect Ratio.
Definition: MWHDMIPackets.h:138
BYTE byActiveFormatInfoPresent
Whether the active format is present.
Definition: MWHDMIPackets.h:133
BYTE byColorimetry
Colorimetry,This field is used with Extended Colorimetry to indicate the color code of the video sour...
Definition: MWHDMIPackets.h:139
WORD wEndOfTopBar
Unsigned integers represent the last line of the letterbox bar area at the top of the screen....
Definition: MWHDMIPackets.h:153
BYTE byActivePortionAspectRatio
Active Format Aspect Ratio.
Definition: MWHDMIPackets.h:137
BYTE byITContentType
IT content type.
Definition: MWHDMIPackets.h:150
BYTE byFutureUseByte1
Reserved.
Definition: MWHDMIPackets.h:135
BYTE byScanInfo
scan information
Definition: MWHDMIPackets.h:131
BYTE byExtendedColorimetry
Extended Colorimetry.
Definition: MWHDMIPackets.h:143
BYTE byRGB_YCbCr
RGB or YCbCr.
Definition: MWHDMIPackets.h:134
WORD wEndOfLeftBar
Unsigned integer, representing the last pixel of the vertical letterbox bar on the left....
Definition: MWHDMIPackets.h:155
BYTE byFutureUseByte4
Reserved.
Definition: MWHDMIPackets.h:147
BYTE byBarDataPresent
Whether the Bar data is valid.
Definition: MWHDMIPackets.h:132
Definition: MWHDMIPackets.h:159
HDMI_INFOFRAME_HEADER.
Definition: MWHDMIPackets.h:348
BYTE byLength
length of infoframe
Definition: MWHDMIPackets.h:351
BYTE byVersion
HDMI version.
Definition: MWHDMIPackets.h:350
BYTE byReservedZero
Reserved.
Definition: MWHDMIPackets.h:352
BYTE byPacketType
HDMI infoframe type.
Definition: MWHDMIPackets.h:349
HDMI_INFOFRAME_PACKET.
Definition: MWHDMIPackets.h:361
HDMI_AUDIO_INFOFRAME_PAYLOAD audioInfoFramePayload
audio infoframe payload
Definition: MWHDMIPackets.h:368
HDMI_INFOFRAME_HEADER header
HDMI infoframe header.
Definition: MWHDMIPackets.h:362
BYTE abyPayload[27]
aby payload
Definition: MWHDMIPackets.h:366
BYTE byChecksum
checksum
Definition: MWHDMIPackets.h:363
HDMI_SPD_INFOFRAME_PAYLOAD spdInfoFramePayload
spd infoframe payload
Definition: MWHDMIPackets.h:369
HDMI_HDR_INFOFRAME_PAYLOAD hdrInfoFramePayload
hdr infoframe payload
Definition: MWHDMIPackets.h:371
HDMI_AVI_INFOFRAME_PAYLOAD aviInfoFramePayload
avi infoframe payload
Definition: MWHDMIPackets.h:367
HDMI_VS_INFOFRAME_PAYLOAD vsInfoFramePayload
vs infoframe payload
Definition: MWHDMIPackets.h:370
Definition: MWHDMIPackets.h:260
Definition: MWHDMIPackets.h:28
Definition: MWHDMIPackets.h:318