edid.h (3209B)
1typedef unsigned char uchar; 2typedef struct MonitorInfo MonitorInfo; 3typedef struct Timing Timing; 4typedef struct DetailedTiming DetailedTiming; 5 6typedef enum 7{ 8 UNDEFINED, 9 DVI, 10 HDMI_A, 11 HDMI_B, 12 MDDI, 13 DISPLAY_PORT 14} Interface; 15 16typedef enum 17{ 18 UNDEFINED_COLOR, 19 MONOCHROME, 20 RGB, 21 OTHER_COLOR 22} ColorType; 23 24typedef enum 25{ 26 NO_STEREO, 27 FIELD_RIGHT, 28 FIELD_LEFT, 29 TWO_WAY_RIGHT_ON_EVEN, 30 TWO_WAY_LEFT_ON_EVEN, 31 FOUR_WAY_INTERLEAVED, 32 SIDE_BY_SIDE 33} StereoType; 34 35struct Timing 36{ 37 int width; 38 int height; 39 int frequency; 40}; 41 42struct DetailedTiming 43{ 44 int pixel_clock; 45 int h_addr; 46 int h_blank; 47 int h_sync; 48 int h_front_porch; 49 int v_addr; 50 int v_blank; 51 int v_sync; 52 int v_front_porch; 53 int width_mm; 54 int height_mm; 55 int right_border; 56 int top_border; 57 int interlaced; 58 StereoType stereo; 59 60 int digital_sync; 61 union 62 { 63 struct 64 { 65 int bipolar; 66 int serrations; 67 int sync_on_green; 68 } analog; 69 70 struct 71 { 72 int composite; 73 int serrations; 74 int negative_vsync; 75 int negative_hsync; 76 } digital; 77 }; 78}; 79 80struct MonitorInfo 81{ 82 int checksum; 83 char manufacturer_code[4]; 84 int product_code; 85 unsigned int serial_number; 86 87 int production_week; /* -1 if not specified */ 88 int production_year; /* -1 if not specified */ 89 int model_year; /* -1 if not specified */ 90 91 int major_version; 92 int minor_version; 93 94 int is_digital; 95 96 union 97 { 98 struct 99 { 100 int bits_per_primary; 101 Interface interface; 102 int rgb444; 103 int ycrcb444; 104 int ycrcb422; 105 } digital; 106 107 struct 108 { 109 double video_signal_level; 110 double sync_signal_level; 111 double total_signal_level; 112 113 int blank_to_black; 114 115 int separate_hv_sync; 116 int composite_sync_on_h; 117 int composite_sync_on_green; 118 int serration_on_vsync; 119 ColorType color_type; 120 } analog; 121 }; 122 123 int width_mm; /* -1 if not specified */ 124 int height_mm; /* -1 if not specified */ 125 double aspect_ratio; /* -1.0 if not specififed */ 126 127 double gamma; /* -1.0 if not specified */ 128 129 int standby; 130 int suspend; 131 int active_off; 132 133 int srgb_is_standard; 134 int preferred_timing_includes_native; 135 int continuous_frequency; 136 137 double red_x; 138 double red_y; 139 double green_x; 140 double green_y; 141 double blue_x; 142 double blue_y; 143 double white_x; 144 double white_y; 145 146 Timing established[24]; /* Terminated by 0x0x0 */ 147 Timing standard[8]; 148 149 int n_detailed_timings; 150 DetailedTiming detailed_timings[4]; /* If monitor has a preferred 151 * mode, it is the first one 152 * (whether it has, is 153 * determined by the 154 * preferred_timing_includes 155 * bit. 156 */ 157 158 /* Optional product description */ 159 char dsc_serial_number[14]; 160 char dsc_product_name[14]; 161 char dsc_string[14]; /* Unspecified ASCII data */ 162}; 163 164MonitorInfo *decode_edid (const uchar *data); 165void dump_monitor_info (MonitorInfo *info); 166char * make_display_name (const char *output_name, 167 const MonitorInfo *info);