sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

edid.h (3215B)


      1 typedef unsigned char uchar;
      2 typedef struct MonitorInfo MonitorInfo;
      3 typedef struct Timing Timing;
      4 typedef struct DetailedTiming DetailedTiming;
      5 
      6 typedef enum
      7 {
      8     UNDEFINED,
      9     DVI,
     10     HDMI_A,
     11     HDMI_B,
     12     MDDI,
     13     DISPLAY_PORT
     14 } Interface;
     15 
     16 typedef enum
     17 {
     18     UNDEFINED_COLOR,
     19     MONOCHROME,
     20     RGB,
     21     OTHER_COLOR
     22 } ColorType;
     23 
     24 typedef 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 
     35 struct Timing
     36 {
     37     int width;
     38     int height;
     39     int frequency;
     40 };
     41 
     42 struct 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     } ad;
     78 };
     79 
     80 struct 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     } ad;
    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 
    164 MonitorInfo *decode_edid (const uchar *data);
    165 void         dump_monitor_info (MonitorInfo *info);
    166 char *       make_display_name (const char        *output_name,
    167 				const MonitorInfo *info);