mirror of
https://github.com/openharmony/drivers_framework.git
synced 2026-08-27 02:42:28 -04:00
7bb1798788
Signed-off-by: yanghaizhou <yanghaizhou1@huawei.com>
802 lines
25 KiB
C
802 lines
25 KiB
C
/*
|
|
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
|
*
|
|
* HDF is dual licensed: you can use it either under the terms of
|
|
* the GPL, or the BSD license, at your option.
|
|
* See the LICENSE file in the root of this repository for complete details.
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup HDMI
|
|
* @{
|
|
*
|
|
* @brief Declares standard APIs of basic High-Definition Multimedia Interface (HDMI) capabilities.
|
|
*
|
|
* You can use this module to access the HDMI and enable the driver to operate an HDMI sink device.
|
|
* These capabilities include start and stop tramnsfer on HDMI, setting some attributes,
|
|
* and read sink device's EDID data.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
|
|
/**
|
|
* @file hdmi_if.h
|
|
*
|
|
* @brief Declares the standard HDMI interface functions.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
|
|
#ifndef HDMI_IF_H
|
|
#define HDMI_IF_H
|
|
|
|
#include "platform_if.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
/**
|
|
* @brief Indicates that maximum length of an HDMI sink device's EDID is 512 bytes.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
#define HDMI_EDID_MAX_LEN 512
|
|
|
|
/**
|
|
* @brief Enumerates deep color,
|
|
* see the section 6.2.4 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiDeepColor {
|
|
HDMI_DEEP_COLOR_24BITS = 0,
|
|
HDMI_DEEP_COLOR_30BITS = 1,
|
|
HDMI_DEEP_COLOR_36BITS = 2,
|
|
HDMI_DEEP_COLOR_48BITS = 3,
|
|
HDMI_DEEP_COLOR_OFF = 0xff,
|
|
HDMI_DEEP_COLOR_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates video bit depth
|
|
* see the section 6.6 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiVideoBitDepth {
|
|
HDMI_VIDEO_BIT_DEPTH_8 = 0,
|
|
HDMI_VIDEO_BIT_DEPTH_10 = 1,
|
|
HDMI_VIDEO_BIT_DEPTH_12 = 2,
|
|
HDMI_VIDEO_BIT_DEPTH_16 = 3,
|
|
HDMI_VIDEO_BIT_DEPTH_OFF,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates color space,
|
|
* see the section 6 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiColorSpace {
|
|
HDMI_COLOR_SPACE_RGB = 0,
|
|
HDMI_COLOR_SPACE_YCBCR422 = 1,
|
|
HDMI_COLOR_SPACE_YCBCR444 = 2,
|
|
HDMI_COLOR_SPACE_YCBCR420 = 3,
|
|
HDMI_COLOR_SPACE_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates colorimetry, see the section 6.7 of HDMI Specification 1.4 and
|
|
* the section 7.2 of HDMI Specification 2.0 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiColorimetry {
|
|
HDMI_COLORIMETRY_NO_DATA = 0,
|
|
HDMI_COLORIMETRY_ITU601 = 1,
|
|
HDMI_COLORIMETRY_ITU709 = 2,
|
|
HDMI_COLORIMETRY_EXTENDED = 3,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates extended colorimetry, see the section 6.7 of HDMI Specification 1.4 and
|
|
* the section 7.2 of HDMI Specification 2.0 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiExtendedColorimetry {
|
|
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0,
|
|
HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1,
|
|
HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2,
|
|
HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3,
|
|
HDMI_EXTENDED_COLORIMETRY_OPRGB = 4,
|
|
HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5,
|
|
HDMI_EXTENDED_COLORIMETRY_BT2020 = 6,
|
|
HDMI_EXTENDED_COLORIMETRY_ADDITIONAL = 7,
|
|
HDMI_EXTENDED_COLORIMETRY_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates quantization range, see the section 6.6 of HDMI Specification 1.4 and
|
|
* the section 7.3 of HDMI Specification 2.0 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiQuantizationRange {
|
|
HDMI_QUANTIZATION_RANGE_DEFAULT = 0,
|
|
HDMI_QUANTIZATION_RANGE_LIMITED = 1,
|
|
HDMI_QUANTIZATION_RANGE_FULL = 2,
|
|
HDMI_QUANTIZATION_RANGE_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates YCC quantization range, see the section 6.6 of HDMI Specification 1.4 and
|
|
* the section 7.3 of HDMI Specification 2.0 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiYccQuantizationRange {
|
|
HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0,
|
|
HDMI_YCC_QUANTIZATION_RANGE_FULL = 1,
|
|
HDMI_YCC_QUANTIZATION_RANGE_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates video 3d structure,
|
|
* see the section 8.2.3 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiVideo3dStructure {
|
|
HDMI_VS_VIDEO_3D_FRAME_PACKING = 0,
|
|
HDMI_VS_VIDEO_3D_FIELD_ALTERNATIVE = 1,
|
|
HDMI_VS_VIDEO_3D_LINE_ALTERNATIVE = 2,
|
|
HDMI_VS_VIDEO_3D_SIDE_BY_SIDE_FULL = 3,
|
|
HDMI_VS_VIDEO_3D_L_DEPTH = 4,
|
|
HDMI_VS_VIDEO_3D_L_DEPTH_GFX_GFX_DEPTH = 5,
|
|
HDMI_VS_VIDEO_3D_TOP_AND_BOTTOM = 6,
|
|
HDMI_VS_VIDEO_3D_SIDE_BY_SIDE_HALF = 8,
|
|
HDMI_VS_VIDEO_3D_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates video timing,
|
|
* see the section 8.2.3 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiVideoTiming {
|
|
HDMI_VIDEO_TIMING_NONE = 0,
|
|
HDMI_VIDEO_TIMING_640X480P60 = 1,
|
|
HDMI_VIDEO_TIMING_720X480P60 = 2,
|
|
HDMI_VIDEO_TIMING_720X480P120 = 3,
|
|
HDMI_VIDEO_TIMING_720X480P240 = 4,
|
|
HDMI_VIDEO_TIMING_720X576P50 = 5,
|
|
HDMI_VIDEO_TIMING_720X576P100 = 6,
|
|
HDMI_VIDEO_TIMING_720X576P200 = 7,
|
|
HDMI_VIDEO_TIMING_1280X720P24 = 8,
|
|
HDMI_VIDEO_TIMING_1280X720P25 = 9,
|
|
HDMI_VIDEO_TIMING_1280X720P30 = 10,
|
|
HDMI_VIDEO_TIMING_1280X720P48 = 11,
|
|
HDMI_VIDEO_TIMING_1280X720P50 = 12,
|
|
HDMI_VIDEO_TIMING_1280X720P60 = 13,
|
|
HDMI_VIDEO_TIMING_1280X720P100 = 14,
|
|
HDMI_VIDEO_TIMING_1280X720P120 = 15,
|
|
HDMI_VIDEO_TIMING_1440X240P60 = 16,
|
|
HDMI_VIDEO_TIMING_1440X288P50 = 17,
|
|
HDMI_VIDEO_TIMING_1440X480I60 = 18,
|
|
HDMI_VIDEO_TIMING_1440X480P60 = 19,
|
|
HDMI_VIDEO_TIMING_1440X480I120 = 20,
|
|
HDMI_VIDEO_TIMING_1440X480I240 = 21,
|
|
HDMI_VIDEO_TIMING_1440X576I50 = 22,
|
|
HDMI_VIDEO_TIMING_1440X576P50 = 23,
|
|
HDMI_VIDEO_TIMING_1440X576I60 = 24,
|
|
HDMI_VIDEO_TIMING_1440X576I100 = 25,
|
|
HDMI_VIDEO_TIMING_1440X576I200 = 26,
|
|
HDMI_VIDEO_TIMING_2880X288P50 = 27,
|
|
HDMI_VIDEO_TIMING_2880X480I60 = 28,
|
|
HDMI_VIDEO_TIMING_2880X480P60 = 29,
|
|
HDMI_VIDEO_TIMING_2880X240I60 = 30,
|
|
HDMI_VIDEO_TIMING_2880X576I50 = 31,
|
|
HDMI_VIDEO_TIMING_2880X576P50 = 32,
|
|
HDMI_VIDEO_TIMING_1680X720P24 = 33,
|
|
HDMI_VIDEO_TIMING_1680X720P25 = 34,
|
|
HDMI_VIDEO_TIMING_1680X720P30 = 35,
|
|
HDMI_VIDEO_TIMING_1680X720P48 = 36,
|
|
HDMI_VIDEO_TIMING_1680X720P50 = 37,
|
|
HDMI_VIDEO_TIMING_1680X720P60 = 38,
|
|
HDMI_VIDEO_TIMING_1680X720P100 = 39,
|
|
HDMI_VIDEO_TIMING_1680X720P120 = 40,
|
|
HDMI_VIDEO_TIMING_2560X1080P24 = 41,
|
|
HDMI_VIDEO_TIMING_2560X1080P25 = 42,
|
|
HDMI_VIDEO_TIMING_2560X1080P30 = 43,
|
|
HDMI_VIDEO_TIMING_2560X1080P48 = 44,
|
|
HDMI_VIDEO_TIMING_2560X1080P50 = 45,
|
|
HDMI_VIDEO_TIMING_2560X1080P60 = 46,
|
|
HDMI_VIDEO_TIMING_2560X1080P100 = 47,
|
|
HDMI_VIDEO_TIMING_2560X1080P120 = 48,
|
|
HDMI_VIDEO_TIMING_1920X1080I60 = 49,
|
|
HDMI_VIDEO_TIMING_1920X1080P60 = 50,
|
|
HDMI_VIDEO_TIMING_1920X1080I50 = 51,
|
|
HDMI_VIDEO_TIMING_1920X1080P50 = 52,
|
|
HDMI_VIDEO_TIMING_1920X1080P24 = 53,
|
|
HDMI_VIDEO_TIMING_1920X1080P25 = 54,
|
|
HDMI_VIDEO_TIMING_1920X1080P30 = 55,
|
|
HDMI_VIDEO_TIMING_1920X1080P48 = 56,
|
|
HDMI_VIDEO_TIMING_1920X1080I100 = 57,
|
|
HDMI_VIDEO_TIMING_1920X1080I120 = 58,
|
|
HDMI_VIDEO_TIMING_1920X1080P120 = 59,
|
|
HDMI_VIDEO_TIMING_1920X1080P100 = 60,
|
|
HDMI_VIDEO_TIMING_3840X2160P24 = 61,
|
|
HDMI_VIDEO_TIMING_3840X2160P25 = 62,
|
|
HDMI_VIDEO_TIMING_3840X2160P30 = 63,
|
|
HDMI_VIDEO_TIMING_3840X2160P48 = 64,
|
|
HDMI_VIDEO_TIMING_3840X2160P50 = 65,
|
|
HDMI_VIDEO_TIMING_3840X2160P60 = 66,
|
|
HDMI_VIDEO_TIMING_3840X2160P100 = 67,
|
|
HDMI_VIDEO_TIMING_3840X2160P120 = 68,
|
|
HDMI_VIDEO_TIMING_4096X2160P24 = 69,
|
|
HDMI_VIDEO_TIMING_4096X2160P25 = 70,
|
|
HDMI_VIDEO_TIMING_4096X2160P30 = 71,
|
|
HDMI_VIDEO_TIMING_4096X2160P48 = 72,
|
|
HDMI_VIDEO_TIMING_4096X2160P50 = 73,
|
|
HDMI_VIDEO_TIMING_4096X2160P60 = 74,
|
|
HDMI_VIDEO_TIMING_4096X2160P100 = 75,
|
|
HDMI_VIDEO_TIMING_4096X2160P120 = 76,
|
|
HDMI_VIDEO_TIMING_5120X2160P24 = 77,
|
|
HDMI_VIDEO_TIMING_5120X2160P25 = 78,
|
|
HDMI_VIDEO_TIMING_5120X2160P30 = 79,
|
|
HDMI_VIDEO_TIMING_5120X2160P48 = 80,
|
|
HDMI_VIDEO_TIMING_5120X2160P50 = 81,
|
|
HDMI_VIDEO_TIMING_5120X2160P60 = 82,
|
|
HDMI_VIDEO_TIMING_5120X2160P100 = 83,
|
|
HDMI_VIDEO_TIMING_5120X2160P120 = 84,
|
|
HDMI_VIDEO_TIMING_7680X4320P24 = 85,
|
|
HDMI_VIDEO_TIMING_7680X4320P25 = 86,
|
|
HDMI_VIDEO_TIMING_7680X4320P30 = 87,
|
|
HDMI_VIDEO_TIMING_7680X4320P48 = 88,
|
|
HDMI_VIDEO_TIMING_7680X4320P50 = 89,
|
|
HDMI_VIDEO_TIMING_7680X4320P60 = 90,
|
|
HDMI_VIDEO_TIMING_7680X4320P100 = 91,
|
|
HDMI_VIDEO_TIMING_7680X4320P120 = 92,
|
|
HDMI_VIDEO_TIMING_10240X4320P24 = 93,
|
|
HDMI_VIDEO_TIMING_10240X4320P25 = 94,
|
|
HDMI_VIDEO_TIMING_10240X4320P30 = 95,
|
|
HDMI_VIDEO_TIMING_10240X4320P48 = 96,
|
|
HDMI_VIDEO_TIMING_10240X4320P50 = 97,
|
|
HDMI_VIDEO_TIMING_10240X4320P60 = 98,
|
|
HDMI_VIDEO_TIMING_10240X4320P100 = 99,
|
|
HDMI_VIDEO_TIMING_10240X4320P120 = 100,
|
|
HDMI_VIDEO_TIMING_VESA_DEFINE = 101,
|
|
HDMI_VIDEO_TIMING_VESA_800X600_60 = 102,
|
|
HDMI_VIDEO_TIMING_VESA_848X480_60 = 103,
|
|
HDMI_VIDEO_TIMING_VESA_1024X768_60 = 104,
|
|
HDMI_VIDEO_TIMING_VESA_1280X720_60 = 105,
|
|
HDMI_VIDEO_TIMING_VESA_1280X768_60 = 106,
|
|
HDMI_VIDEO_TIMING_VESA_1280X768_60_RB = 107,
|
|
HDMI_VIDEO_TIMING_VESA_1280X800_60 = 108,
|
|
HDMI_VIDEO_TIMING_VESA_1280X800_60_RB = 109,
|
|
HDMI_VIDEO_TIMING_VESA_1280X960_60 = 110,
|
|
HDMI_VIDEO_TIMING_VESA_1280X1024_60 = 111,
|
|
HDMI_VIDEO_TIMING_VESA_1360X768_60 = 112,
|
|
HDMI_VIDEO_TIMING_VESA_1366X768_60 = 113,
|
|
HDMI_VIDEO_TIMING_VESA_1400X1050_60 = 114,
|
|
HDMI_VIDEO_TIMING_VESA_1440X900_60 = 115,
|
|
HDMI_VIDEO_TIMING_VESA_1440X900_60_RB = 116,
|
|
HDMI_VIDEO_TIMING_VESA_1440X1050_60 = 117,
|
|
HDMI_VIDEO_TIMING_VESA_1440X1050_60_RB = 118,
|
|
HDMI_VIDEO_TIMING_VESA_1600X900_60_RB = 119,
|
|
HDMI_VIDEO_TIMING_VESA_1600X1200_60 = 120,
|
|
HDMI_VIDEO_TIMING_VESA_1680X1050_60 = 113,
|
|
HDMI_VIDEO_TIMING_VESA_1680X1050_60_RB = 114,
|
|
HDMI_VIDEO_TIMING_VESA_1792X1344_60 = 115,
|
|
HDMI_VIDEO_TIMING_VESA_1856X1392_60 = 116,
|
|
HDMI_VIDEO_TIMING_VESA_1920X1080_60 = 117,
|
|
HDMI_VIDEO_TIMING_VESA_1920X1200_60 = 118,
|
|
HDMI_VIDEO_TIMING_VESA_1920X1200_60_RB = 119,
|
|
HDMI_VIDEO_TIMING_VESA_1920X1440_60 = 120,
|
|
HDMI_VIDEO_TIMING_VESA_2048X1152_60 = 121,
|
|
HDMI_VIDEO_TIMING_VESA_2560X1440_60_RB = 122,
|
|
HDMI_VIDEO_TIMING_VESA_2560X1600_60 = 123,
|
|
HDMI_VIDEO_TIMING_VESA_2560X1600_60_RB = 124,
|
|
HDMI_VIDEO_TIMING_USER_DEFINE = 125,
|
|
HDMI_VIDEO_TIMING_USER_1920X2160_30 = 126,
|
|
HDMI_VIDEO_TIMING_USER_2560X1440_30 = 127,
|
|
HDMI_VIDEO_TIMING_USER_2560X1440_60 = 128,
|
|
HDMI_VIDEO_TIMING_USER_1280X720_60 = 129,
|
|
HDMI_VIDEO_TIMING_USER_1366X768_60 = 130,
|
|
HDMI_VIDEO_TIMING_USER_1600X900_60_RB = 131,
|
|
HDMI_VIDEO_TIMING_USER_1920X1080_60 = 132,
|
|
HDMI_VIDEO_TIMING_USER_2048X1152_60 = 133,
|
|
HDMI_VIDEO_TIMING_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates picture aspect ratio,
|
|
* see the section 8.2.1 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiPictureAspectRatio {
|
|
HDMI_PICTURE_ASPECT_NO_DATA = 0,
|
|
HDMI_PICTURE_ASPECT_4_3 = 1,
|
|
HDMI_PICTURE_ASPECT_16_9 = 2,
|
|
HDMI_PICTURE_ASPECT_64_27 = 3,
|
|
HDMI_PICTURE_ASPECT_256_135 = 4,
|
|
HDMI_PICTURE_ASPECT_BUTT = 5,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates active format aspect ratio,
|
|
* see the section 8.2.1 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiActiveFormatAspectRatio {
|
|
HDMI_ACTIVE_FORMAT_ASPECT_16_9_TOP = 2,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_14_9_TOP = 3,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_16_9_CENTER = 4,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_PICTURE = 8,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_4_3 = 9,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_16_9 = 10,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_14_9 = 11,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_4_3_SP_14_9 = 13,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_16_9_SP_14_9 = 14,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_16_9_SP_4_3 = 15,
|
|
HDMI_ACTIVE_FORMAT_ASPECT_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates Nups(non-uniform picture scaling),
|
|
* see the section 8.2.1 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiNups {
|
|
HDMI_NUPS_UNKNOWN = 0, /* No Known non-uniform scaling */
|
|
HDMI_NUPS_HORIZONTAL = 1, /* Picture has been scaled horizontally */
|
|
HDMI_NUPS_VERTICAL = 2, /* Picture has been scaled vertically */
|
|
HDMI_NUPS_BOTH = 3, /* Picture has been scaled horizontally and vertically */
|
|
};
|
|
|
|
/**
|
|
* @brief Defines the video attribute struct.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
struct HdmiVideoAttr {
|
|
uint32_t tmdsClock; /* unit: KHz */
|
|
uint32_t pixelClock; /* unit: KHz */
|
|
uint32_t pixelRepeat;
|
|
enum HdmiColorSpace colorSpace;
|
|
enum HdmiColorimetry colorimetry;
|
|
enum HdmiExtendedColorimetry extColorimetry;
|
|
enum HdmiQuantizationRange quantization;
|
|
enum HdmiYccQuantizationRange yccQuantization;
|
|
enum HdmiDeepColor deepColor;
|
|
enum HdmiVideo3dStructure _3dStruct;
|
|
enum HdmiVideoTiming timing;
|
|
enum HdmiPictureAspectRatio aspect;
|
|
enum HdmiActiveFormatAspectRatio activeAspect;
|
|
enum HdmiNups nups;
|
|
bool xvycc;
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates audio coding type,
|
|
* see the section 7 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiAudioCodingType {
|
|
HDMI_AUDIO_CODING_TYPE_STREAM = 0,
|
|
HDMI_AUDIO_CODING_TYPE_LPCM = 1,
|
|
HDMI_AUDIO_CODING_TYPE_AC3 = 2,
|
|
HDMI_AUDIO_CODING_TYPE_MPEG1 = 3,
|
|
HDMI_AUDIO_CODING_TYPE_MP3 = 4,
|
|
HDMI_AUDIO_CODING_TYPE_MPEG2 = 5,
|
|
HDMI_AUDIO_CODING_TYPE_AAC_LC = 6,
|
|
HDMI_AUDIO_CODING_TYPE_DTS = 7,
|
|
HDMI_AUDIO_CODING_TYPE_ATRAC = 8,
|
|
HDMI_AUDIO_CODING_TYPE_OBA = 9,
|
|
HDMI_AUDIO_CODING_TYPE_EAC3 = 10,
|
|
HDMI_AUDIO_CODING_TYPE_DTS_HD = 11,
|
|
HDMI_AUDIO_CODING_TYPE_MLP = 12,
|
|
HDMI_AUDIO_CODING_TYPE_DST = 13,
|
|
HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14,
|
|
HDMI_AUDIO_CODING_TYPE_CXT = 15,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates audio interface type.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiAudioInterfaceType {
|
|
HDMI_AUDIO_IF_TYPE_I2S = 0, /* Inter-IC Sound */
|
|
HDMI_AUDIO_IF_TYPE_SPDIF = 1, /* Sony/Philips Digital Interface */
|
|
HDMI_AUDIO_IF_TYPE_OTHER,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates audio bit depth,
|
|
* see the section 7 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiAudioBitDepth {
|
|
HDMI_ADIO_BIT_DEPTH_UNKNOWN,
|
|
HDMI_ADIO_BIT_DEPTH_8 = 8,
|
|
HDMI_ADIO_BIT_DEPTH_16 = 16,
|
|
HDMI_ADIO_BIT_DEPTH_18 = 18,
|
|
HDMI_ADIO_BIT_DEPTH_20 = 20,
|
|
HDMI_ADIO_BIT_DEPTH_24 = 24,
|
|
HDMI_ADIO_BIT_DEPTH_32 = 32,
|
|
HDMI_ADIO_BIT_DEPTH_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates sample rate used for audio,
|
|
* see the section 7.3 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiSampleRate {
|
|
HDMI_SAMPLE_RATE_UNKNOWN,
|
|
HDMI_SAMPLE_RATE_8K = 8000,
|
|
HDMI_SAMPLE_RATE_11K = 11025,
|
|
HDMI_SAMPLE_RATE_12K = 12000,
|
|
HDMI_SAMPLE_RATE_16K = 16000,
|
|
HDMI_SAMPLE_RATE_22K = 22050,
|
|
HDMI_SAMPLE_RATE_24K = 24000,
|
|
HDMI_SAMPLE_RATE_32K = 32000,
|
|
HDMI_SAMPLE_RATE_44K = 44100,
|
|
HDMI_SAMPLE_RATE_48K = 48000,
|
|
HDMI_SAMPLE_RATE_88K = 88200,
|
|
HDMI_SAMPLE_RATE_96K = 96000,
|
|
HDMI_SAMPLE_RATE_176K = 176400,
|
|
HDMI_SAMPLE_RATE_192K = 192000,
|
|
HDMI_SAMPLE_RATE_768K = 768000,
|
|
HDMI_SAMPLE_RATE_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates audio format channel,
|
|
* see the section 7 of HDMI Specification 1.4 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiAudioFormatChannel {
|
|
HDMI_AUDIO_FORMAT_CHANNEL_2 = 2,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_3,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_4,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_5,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_6,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_7,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_8,
|
|
HDMI_AUDIO_FORMAT_CHANNEL_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Defines the audio attribute struct.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
struct HdmiAudioAttr {
|
|
enum HdmiAudioCodingType codingType;
|
|
enum HdmiAudioInterfaceType ifType;
|
|
enum HdmiAudioBitDepth bitDepth;
|
|
enum HdmiSampleRate sampleRate;
|
|
bool downSample;
|
|
enum HdmiAudioFormatChannel channels;
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates Electro-Optical Transfer Function (EOTF),
|
|
* see the section 6.9 of CTA-861-G for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiEotfType {
|
|
HDMI_EOTF_SDR_LUMIN = 0, /* Traditional gamma - SDR Luminance Range */
|
|
HDMI_EOTF_HDR_LUMIN = 1, /* Traditional gamma - HDR Luminance Range */
|
|
HDMI_EOTF_SMPTE_ST_2048 = 2, /* SMPTE ST 2048 */
|
|
HDMI_EOTF_HLG = 3, /* Hybrid Log-Gamma (HLG) based on ITU-R BT.2100-0 */
|
|
HDMI_EOTF_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates hdr colormetry,
|
|
* see HDMI Specification 2.1 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiHdrColormetry {
|
|
HDMI_HDR_COLORIMETRY_NONE,
|
|
HDMI_HDR_COLORIMETRY_ITU_601,
|
|
HDMI_HDR_COLORIMETRY_ITU_709,
|
|
HDMI_HDR_COLORIMETRY_EXTENDED,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_XV_YCC_601,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_XV_YCC_709,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_S_YCC_601,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_ADOBE_YCC_601,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_ADOBE_RGB,
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_2020_CONST_LUMINOUS, /* BT2020 c_ycc */
|
|
HDMI_HDR_EXTENDED_COLORIMETRY_2020_NON_CONST_LUMINOUW
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates hdr mode,
|
|
* see HDMI Specification 2.1 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiHdrMode {
|
|
HDMI_HDR_MODE_DISABLE, /* HDR & dolby mode disable */
|
|
HDMI_HDR_MODE_DOLBY_NORMAL, /* dolby normal(ycbcr422-12bit) mode enable */
|
|
HDMI_HDR_MODE_DOLBY_TUNNELING, /* dolby tunneling(RGB-8bit) mode enable */
|
|
HDMI_HDR_MODE_CEA_861_3, /* HDR standard mode enable(according to <CEA-861-3.2015>) */
|
|
HDMI_HDR_MODE_CEA_861_3_AUTHEN, /* HDR authen mode */
|
|
HDMI_HDR_MODE_BUTT
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates hdr user mode,
|
|
* see HDMI Specification 2.1 for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiHdrUserMode {
|
|
HDMI_HDR_USERMODE_SDR,
|
|
HDMI_HDR_USERMODE_HDR10,
|
|
HDMI_HDR_USERMODE_DOLBY,
|
|
HDMI_HDR_USERMODE_BUTT
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates static metadata type,
|
|
* see the section 6.9 of CTA-861-G for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
enum HdmiStaticMetadataType {
|
|
HDMI_DRM_STATIC_METADATA_TYPE_1 = 0, /* Static Metadata Type 1 */
|
|
HDMI_DRM_STATIC_METADATA_BUTT,
|
|
};
|
|
|
|
/**
|
|
* @brief Enumerates static metadata descriptor1st,
|
|
* see the section 6.9 of CTA-861-G for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
struct HdmiStaticMetadataDescriptor1st {
|
|
uint16_t displayPrimaries0X; /* display_primaries_x[0], in units of 0.00002 */
|
|
uint16_t displayPrimaries0Y; /* display_primaries_y[0], in units of 0.00002 */
|
|
uint16_t displayPrimaries1X; /* display_primaries_x[1], in units of 0.00002 */
|
|
uint16_t displayPrimaries1Y; /* display_primaries_y[1], in units of 0.00002 */
|
|
uint16_t displayPrimaries2X; /* display_primaries_x[2], in units of 0.00002 */
|
|
uint16_t displayPrimaries2Y; /* display_primaries_y[2], in units of 0.00002 */
|
|
uint16_t whitePointX; /* white_point_x, in units of 0.00002 */
|
|
uint16_t whitePointY; /* white_point_y, in units of 0.00002 */
|
|
uint16_t maxDisplayMasteringLuminance; /* max_display_mastering_luminance, in units of 1 cd/m^2 */
|
|
uint16_t minDisplayMasteringLuminance; /* min_display_mastering_luminance, in units of 0.0001 cd/m^2 */
|
|
uint16_t maxContentLightLevel; /* Maximum Content Light Level, in units of 1 cd/m^2 */
|
|
uint16_t maxFrameAverageLightLevel; /* Maximum Frame-average Light Level, in units of 1 cd/m^2 */
|
|
};
|
|
|
|
/**
|
|
* @brief Defines the static metadata descriptor,
|
|
* see the section 6.9 of CTA-861-G for details.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
union HdmiStaticMetadataDescriptor {
|
|
struct HdmiStaticMetadataDescriptor1st type1;
|
|
};
|
|
|
|
/**
|
|
* @brief Defines the hdr attribute struct.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
struct HdmiHdrAttr {
|
|
enum HdmiHdrMode mode;
|
|
enum HdmiHdrUserMode userMode;
|
|
/* The following members are valid, when mode is HDMI_HDR_MODE_CEA_861_3. */
|
|
enum HdmiEotfType eotfType;
|
|
enum HdmiStaticMetadataType metadataType;
|
|
union HdmiStaticMetadataDescriptor descriptor;
|
|
enum HdmiHdrColormetry colorimetry;
|
|
};
|
|
|
|
/**
|
|
* @brief Defines the hdmi HPD(Hot Plug Detect) callback info.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
struct HdmiHpdCallbackInfo {
|
|
void *data;
|
|
void (*callbackFunc)(void *data, bool hdp);
|
|
};
|
|
|
|
/**
|
|
* @brief Opens an HDMI controller with a specified bus number.
|
|
*
|
|
* Before using the HDMI interface, you can obtain the device handle of the HDMI controller
|
|
* by calling {@link HdmiOpen}. This function is used in pair with {@link HdmiClose}.
|
|
*
|
|
* @param busNum Indicates the bus number.
|
|
*
|
|
* @return Returns the device handle {@link DevHandle} of the HDMI controller if the operation is successful;
|
|
* returns <b>NULL</b> otherwise.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
DevHandle HdmiOpen(uint16_t busNum);
|
|
|
|
/**
|
|
* @brief HDMI transmission start.
|
|
*
|
|
* This function is used in pair with {@link HdmiStop}.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiStart(DevHandle handle);
|
|
|
|
/**
|
|
* @brief HDMI transmission stop.
|
|
*
|
|
* This function is used in pair with {@link HdmiStart}.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiStop(DevHandle handle);
|
|
|
|
/**
|
|
* @brief HDMI Avmute set.
|
|
*
|
|
* First put the display device into the black screen mute state, waitting for the HDMI output device switch,
|
|
* and then send a Clear AVMute signal, so that the display device to boot, so that the switching process of
|
|
* the screen will be shielded.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param enable Indicates whether to enable avmute.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiAvmuteSet(DevHandle handle, bool enable);
|
|
|
|
|
|
/**
|
|
* @brief HDMI deep color set.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param color Indicates the deep color to be set, see {@link HdmiDeepColor}.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiDeepColorSet(DevHandle handle, enum HdmiDeepColor color);
|
|
|
|
/**
|
|
* @brief HDMI deep color get.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param color Indicates the pointer to the deep color to read, see {@link HdmiDeepColor}.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiDeepColorGet(DevHandle handle, enum HdmiDeepColor *color);
|
|
|
|
/**
|
|
* @brief HDMI set video attribute.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param attr Indicates the pointer to the video attribute to set, see {@link HdmiVideoAttr}.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiSetVideoAttribute(DevHandle handle, struct HdmiVideoAttr *attr);
|
|
|
|
/**
|
|
* @brief HDMI set audio attribute.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param attr Indicates the pointer to the audio attribute to set, see {@link HdmiAudioAttr}.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiSetAudioAttribute(DevHandle handle, struct HdmiAudioAttr *attr);
|
|
|
|
/**
|
|
* @brief HDMI set hdr attribute.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param attr Indicates the pointer to the hdr attribute to set, see {@link HdmiHdrAttr}.
|
|
*
|
|
* @return Returns <b>0</b> if the operation is successful; returns a negative value if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiSetHdrAttribute(DevHandle handle, struct HdmiHdrAttr *attr);
|
|
|
|
/**
|
|
* @brief HDMI read sink device's raw EDID data.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param buffer Indicates the pointer to the data to read.
|
|
* @param len Indicates the length of the data to read.
|
|
*
|
|
* @return Returns the length of the data read if the operation is successful;
|
|
* returns a negative value or 0 if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiReadSinkEdid(DevHandle handle, uint8_t *buffer, uint32_t len);
|
|
|
|
/**
|
|
* @brief HDMI register HPD(Hot Plug Detect) callback function.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
* @param callback Indicates the pointer to the callback info.
|
|
*
|
|
* @return Returns the length of the data read if the operation is successful;
|
|
* returns a negative value or 0 if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiRegisterHpdCallbackFunc(DevHandle handle, struct HdmiHpdCallbackInfo *callback);
|
|
|
|
/**
|
|
* @brief HDMI unregister HPD(Hot Plug Detect) callback function.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
*
|
|
* @return Returns the length of the data read if the operation is successful;
|
|
* returns a negative value or 0 if the operation fails.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
int32_t HdmiUnregisterHpdCallbackFunc(DevHandle handle);
|
|
|
|
/**
|
|
* @brief Closes an HDMI controller.
|
|
*
|
|
* After the HDMI interface is used, you can close the HDMI controller by calling {@link HdmiClose}.
|
|
* This function is used in pair with {@link HdmiOpen}.
|
|
*
|
|
* @param handle Indicates the pointer to the device handle of the HDMI controller.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
void HdmiClose(DevHandle handle);
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* HDMI_IF_H */
|