Documentation for <libdisplay-info/displayid.h>

Back to index

Table of contents

struct di_displayid

struct di_displayid;

DisplayID data structure.

struct di_displayid_data_block

struct di_displayid_data_block;

A DisplayID data block.

di_displayid_data_block_get_display_params()

const struct di_displayid_display_params *di_displayid_data_block_get_display_params(​const struct di_displayid_data_block *data_block);

Get display parameters from a DisplayID data block.

Returns NULL if the data block tag isn't DI_DISPLAYID_DATA_BLOCK_DISPLAY_PARAMS.

di_displayid_data_block_get_tag()

enum di_displayid_data_block_tag di_displayid_data_block_get_tag(​const struct di_displayid_data_block *data_block);

Get a DisplayID data block tag.

di_displayid_data_block_get_tiled_topo()

const struct di_displayid_tiled_topo *di_displayid_data_block_get_tiled_topo(​const struct di_displayid_data_block *data_block);

Get tiled display topology from a DisplayID data block.

Returns NULL if the data block tag isn't DI_DISPLAYID_DATA_BLOCK_TILED_DISPLAY_TOPO.

di_displayid_data_block_get_type_i_timings()

const struct di_displayid_type_i_ii_vii_timing **di_displayid_data_block_get_type_i_timings(​const struct di_displayid_data_block *data_block);

Get type I timings from a DisplayID data block.

The returned array is NULL-terminated.

Returns NULL if the data block tag isn't DI_DISPLAYID_DATA_BLOCK_TYPE_I_TIMING.

di_displayid_data_block_get_type_ii_timings()

const struct di_displayid_type_i_ii_vii_timing **di_displayid_data_block_get_type_ii_timings(​const struct di_displayid_data_block *data_block);

Get type II timings from a DisplayID data block.

The returned array is NULL-terminated.

Returns NULL if the data block tag isn't DI_DISPLAYID_DATA_BLOCK_TYPE_II_TIMING.

di_displayid_data_block_get_type_iii_timings()

const struct di_displayid_type_iii_timing **di_displayid_data_block_get_type_iii_timings(​const struct di_displayid_data_block *data_block);

Get type III timings from a DisplayID data block.

The returned array is NULL-terminated.

Returns NULL if the data block tag isn't DI_DISPLAYID_DATA_BLOCK_TYPE_III_TIMING.

enum di_displayid_data_block_tag

enum di_displayid_data_block_tag {
	/*Product Identification Data Block */
	DI_DISPLAYID_DATA_BLOCK_PRODUCT_ID,
	/* Display Parameters Data Block */
	DI_DISPLAYID_DATA_BLOCK_DISPLAY_PARAMS,
	/* Color Characteristics Data Block */
	DI_DISPLAYID_DATA_BLOCK_COLOR_CHARACT,
	/* Video Timing Modes Type I - Detailed Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_I_TIMING,
	/* Video Timing Modes Type II - Detailed Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_II_TIMING,
	/* Video Timing Modes Type III - Short Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_III_TIMING,
	/* Video Timing Modes Type IV - DMT Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_IV_TIMING,
	/* Supported Timing Modes - VESA DMT Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_VESA_TIMING,
	/* Supported Timing Modes - CTA-861 Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_CEA_TIMING,
	/* Video Timing Range Data Block */
	DI_DISPLAYID_DATA_BLOCK_TIMING_RANGE_LIMITS,
	/* Product Serial Number Data Block */
	DI_DISPLAYID_DATA_BLOCK_PRODUCT_SERIAL,
	/* General-purpose ASCII String Data Block */
	DI_DISPLAYID_DATA_BLOCK_ASCII_STRING,
	/* Display Device Data Data Block */
	DI_DISPLAYID_DATA_BLOCK_DISPLAY_DEVICE_DATA,
	/* Interface Power Sequencing Data Block */
	DI_DISPLAYID_DATA_BLOCK_INTERFACE_POWER_SEQ,
	/* Transfer Characteristics Data Block */
	DI_DISPLAYID_DATA_BLOCK_TRANSFER_CHARACT,
	/* Display Interface Data Block */
	DI_DISPLAYID_DATA_BLOCK_DISPLAY_INTERFACE,
	/* Stereo Display Interface Data Block */
	DI_DISPLAYID_DATA_BLOCK_STEREO_DISPLAY_INTERFACE,
	/* Video Timing Modes Type V - Short Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_V_TIMING,
	/* Tiled Display Topology Data Block */
	DI_DISPLAYID_DATA_BLOCK_TILED_DISPLAY_TOPO,
	/* Video Timing Modes Type VI - Detailed Timings Data Block */
	DI_DISPLAYID_DATA_BLOCK_TYPE_VI_TIMING,
};

DisplayID data block tag.

struct di_displayid_display_params

struct di_displayid_display_params {
	/* Image size in millimeters accurate to the thenths place, zero if unset */
	float horiz_image_mm, vert_image_mm;
	/* Native format size in pixels, zero if unset */
	int32_t horiz_pixels, vert_pixels;
	/* Feature flags */
	const struct di_displayid_display_params_features *features;
	/* Transfer characteristic gamma, zero if unset */
	float gamma;
	/* Aspect ratio (long axis divided by short axis) */
	float aspect_ratio;
	/* Color bit depth (dynamic range) */
	int32_t bits_per_color_overall, bits_per_color_native;
};

Display parameters data block, defined in section 4.2.

struct di_displayid_display_params_features

struct di_displayid_display_params_features {
	/* Audio support on video interface */
	 bool audio;
	/* Audio inputs are provided separately from the video interface */
	 bool separate_audio_inputs;
	/* Audio information received via the video interface will automatically
	 * override any other audio input channels provided */
	 bool audio_input_override;
	/* Display supports the VESA Display Power Management (DPM) standard */
	 bool power_management;
	/* Display is capable of only a single fixed timing */
	 bool fixed_timing;
	/* Display is capable of supporting timings at only a single fixed pixel
	 * format */
	 bool fixed_pixel_format;
	/* Display supports ACP, ISRC1 or ISRC2 packets */
	 bool ai;
	/* Display by default will de-interlace any interlaced video input */
	 bool deinterlacing;
};

Display parameters feature support flags, defined in section 4.2.3.

di_displayid_get_data_blocks()

const struct di_displayid_data_block **di_displayid_get_data_blocks(​const struct di_displayid *displayid);

Get DisplayID data blocks.

The returned array is NULL-terminated.

di_displayid_get_product_type()

enum di_displayid_product_type di_displayid_get_product_type(​const struct di_displayid *displayid);

Get the DisplayID product type.

di_displayid_get_revision()

int di_displayid_get_revision(​const struct di_displayid *displayid);

Get the DisplayID revision.

di_displayid_get_version()

int di_displayid_get_version(​const struct di_displayid *displayid);

Get the DisplayID version.

enum di_displayid_product_type

enum di_displayid_product_type {
	/* Extension section */
	DI_DISPLAYID_PRODUCT_TYPE_EXTENSION,
	/* Test structure or equipment */
	DI_DISPLAYID_PRODUCT_TYPE_TEST,
	/* Display panel or other transducer, LCD or PDP module, etc. */
	DI_DISPLAYID_PRODUCT_TYPE_DISPLAY_PANEL,
	/* Standalone display device, desktop monitor, TV monitor, etc. */
	DI_DISPLAYID_PRODUCT_TYPE_STANDALONE_DISPLAY,
	/* Television receiver */
	DI_DISPLAYID_PRODUCT_TYPE_TV_RECEIVER,
	/* Repeater/translator */
	DI_DISPLAYID_PRODUCT_TYPE_REPEATER,
	/* Direct drive monitor */
	DI_DISPLAYID_PRODUCT_TYPE_DIRECT_DRIVE,
};

Product type identifier, defined in section 2.3.

struct di_displayid_tiled_topo

struct di_displayid_tiled_topo {
	/* Capabilities */
	const struct di_displayid_tiled_topo_caps *caps;
	
	/* Total number of horizontal/vertical tiles */
	int32_t total_horiz_tiles, total_vert_tiles;
	/* Horizontal/vertical tile location */
	int32_t horiz_tile_location, vert_tile_location;
	/* Horizontal/vertical size in pixels */
	int32_t horiz_tile_pixels, vert_tile_lines;
	
	/* Bezel information, NULL if unset */
	const struct di_displayid_tiled_topo_bezel *bezel;
	
	/* Vendor PnP ID, product code and serial number */
	char vendor_id[];
	uint16_t product_code;
	uint32_t serial_number;
};

Tiled display topology, defined in section 4.14.

struct di_displayid_tiled_topo_bezel

struct di_displayid_tiled_topo_bezel {
	float top_px, bottom_px, right_px, left_px;
};

Tiled display bezel information.

The lengths are measured in pixels, accurate to the tenths place.

struct di_displayid_tiled_topo_caps

struct di_displayid_tiled_topo_caps {
	/* The tiled display is within a single physical display enclosure */
	 bool single_enclosure;
	
	/* Behavior when subsets of the tiles of the entire tiled display are
	 * receiving images from source */
	enum di_displayid_tiled_topo_missing_recv_behavior missing_recv_behavior;
	enum di_displayid_tiled_topo_single_recv_behavior single_recv_behavior;
};

Tiled display capabilities.

enum di_displayid_tiled_topo_missing_recv_behavior

enum di_displayid_tiled_topo_missing_recv_behavior {
	/* Undefined */
	DI_DISPLAYID_TILED_TOPO_MISSING_RECV_UNDEF,
	/* The image is displayed on the tile only */
	DI_DISPLAYID_TILED_TOPO_MISSING_RECV_TILE_ONLY,
};

Behavior when more than 1 tile and less than total number of tiles are driven by the source.

enum di_displayid_tiled_topo_single_recv_behavior

enum di_displayid_tiled_topo_single_recv_behavior {
	/* Undefined */
	DI_DISPLAYID_TILED_TOPO_SINGLE_RECV_UNDEF,
	/* Image is displayed on the tile only */
	DI_DISPLAYID_TILED_TOPO_SINGLE_RECV_TILE_ONLY,
	/* Image is scaled to fit the entire tiled display */
	DI_DISPLAYID_TILED_TOPO_SINGLE_RECV_SCALED,
	/* Image is cloned to all other tiles of the entire tiled display */
	DI_DISPLAYID_TILED_TOPO_SINGLE_RECV_CLONED,
};

Behavior of this tile when it is the only tile receiving an image from the source.

enum di_displayid_timing_aspect_ratio

enum di_displayid_timing_aspect_ratio {
	DI_DISPLAYID_TIMING_ASPECT_RATIO_1_1,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_5_4,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_4_3,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_15_9,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_16_9,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_16_10,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_64_27,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_256_135,
	DI_DISPLAYID_TIMING_ASPECT_RATIO_UNDEFINED,
};

struct di_displayid_type_i_ii_vii_timing

struct di_displayid_type_i_ii_vii_timing {
	double pixel_clock_mhz; /* mega-hertz */
	bool preferred;
	enum di_displayid_type_i_ii_vii_timing_stereo_3d stereo_3d;
	bool interlaced;
	enum di_displayid_timing_aspect_ratio aspect_ratio;
	int32_t horiz_active, vert_active;
	int32_t horiz_blank, vert_blank;
	int32_t horiz_offset, vert_offset;
	int32_t horiz_sync_width, vert_sync_width;
	enum di_displayid_type_i_ii_vii_timing_sync_polarity horiz_sync_polarity, vert_sync_polarity;
};

Type I timing, defined in DisplayID 1.3 section 4.4.1 and Type II timing, defined in DisplayID 1.3 section 4.4.2 and Type VII timing, defined in DisplayID 2.0 section 4.3.1.

enum di_displayid_type_i_ii_vii_timing_stereo_3d

enum di_displayid_type_i_ii_vii_timing_stereo_3d {
	/* This timing is always displayed monoscopic (no stereo) */
	DI_DISPLAYID_TYPE_I_II_VII_TIMING_STEREO_3D_NEVER,
	/* This timing is always displayed in stereo */
	DI_DISPLAYID_TYPE_I_II_VII_TIMING_STEREO_3D_ALWAYS,
	/* This timing is displayed in mono or stereo depending on a user action
	 * (wearing the stereo glasses, etc.) */
	DI_DISPLAYID_TYPE_I_II_VII_TIMING_STEREO_3D_USER,
};

enum di_displayid_type_i_ii_vii_timing_sync_polarity

enum di_displayid_type_i_ii_vii_timing_sync_polarity {
	DI_DISPLAYID_TYPE_I_II_VII_TIMING_SYNC_NEGATIVE,
	DI_DISPLAYID_TYPE_I_II_VII_TIMING_SYNC_POSITIVE,
};

struct di_displayid_type_iii_timing

struct di_displayid_type_iii_timing {
	bool preferred;
	enum di_displayid_type_iii_timing_algo algo;
	enum di_displayid_timing_aspect_ratio aspect_ratio;
	/* Horizontal Active Image (in pixels) */
	int32_t horiz_active;
	bool interlaced;
	/* Frame/Field Refresh Rate (in Hz) */
	int32_t refresh_rate_hz;
};

Type III timing, defined in section 4.4.3.

enum di_displayid_type_iii_timing_algo

enum di_displayid_type_iii_timing_algo {
	/* VESA CVT, standard blanking */
	DI_DISPLAYID_TYPE_III_TIMING_CVT_STANDARD_BLANKING,
	/* VESA CVT, reduced blanking */
	DI_DISPLAYID_TYPE_III_TIMING_CVT_REDUCED_BLANKING,
};

Formula/algorithm for type III timings.