/****************************************************************************** Copyright (C), 2014-2018, Hisilicon Tech. Co., Ltd. ****************************************************************************** File Name : hi_comm_hdmi.h Version : Initial Draft Author : Hisilicon multimedia software group Created : 2011/12/21 Description : History : 1.Date : 2011/12/21 Author : Modification: Created file 2.Date : 2015/03/01 Author : Modification: EDID cap;IF ;Video Fmt ******************************************************************************/ #ifndef __HI_COMM_HDMI_H__ #define __HI_COMM_HDMI_H__ #include "hi_type.h" #ifndef HDMI_BUILD_IN_BOOT #include "hi_errno.h" #endif #include "hi_common.h" #include "hi_comm_video.h" /**the max audio capbility count*/ #define HI_HDMI_MAX_AUDIO_CAP_COUNT 16 /**the max audio smprate count*/ #define HI_HDMI_MAX_SAMPE_RATE_NUM 8 /**the max audio bit depth count*/ #define HI_HDMI_MAX_BIT_DEPTH_NUM 6 #ifdef __cplusplus #if __cplusplus extern "C"{ #endif #endif /* End of #ifdef __cplusplus */ typedef enum hiHDMI_VIDEO_FMT_E { HI_HDMI_VIDEO_FMT_1080P_60 = 0, HI_HDMI_VIDEO_FMT_1080P_50, HI_HDMI_VIDEO_FMT_1080P_30, HI_HDMI_VIDEO_FMT_1080P_25, HI_HDMI_VIDEO_FMT_1080P_24, HI_HDMI_VIDEO_FMT_1080i_60, HI_HDMI_VIDEO_FMT_1080i_50, HI_HDMI_VIDEO_FMT_720P_60, HI_HDMI_VIDEO_FMT_720P_50, HI_HDMI_VIDEO_FMT_576P_50, HI_HDMI_VIDEO_FMT_480P_60, HI_HDMI_VIDEO_FMT_PAL, HI_HDMI_VIDEO_FMT_PAL_N, HI_HDMI_VIDEO_FMT_PAL_Nc, HI_HDMI_VIDEO_FMT_NTSC, HI_HDMI_VIDEO_FMT_NTSC_J, HI_HDMI_VIDEO_FMT_NTSC_PAL_M, HI_HDMI_VIDEO_FMT_SECAM_SIN, HI_HDMI_VIDEO_FMT_SECAM_COS, HI_HDMI_VIDEO_FMT_861D_640X480_60, HI_HDMI_VIDEO_FMT_VESA_800X600_60, HI_HDMI_VIDEO_FMT_VESA_1024X768_60, HI_HDMI_VIDEO_FMT_VESA_1280X720_60, HI_HDMI_VIDEO_FMT_VESA_1280X800_60, HI_HDMI_VIDEO_FMT_VESA_1280X1024_60, HI_HDMI_VIDEO_FMT_VESA_1366X768_60, HI_HDMI_VIDEO_FMT_VESA_1440X900_60, HI_HDMI_VIDEO_FMT_VESA_1440X900_60_RB, HI_HDMI_VIDEO_FMT_VESA_1600X900_60_RB, HI_HDMI_VIDEO_FMT_VESA_1600X1200_60, HI_HDMI_VIDEO_FMT_VESA_1680X1050_60, HI_HDMI_VIDEO_FMT_VESA_1920X1080_60, HI_HDMI_VIDEO_FMT_VESA_1920X1200_60, HI_HDMI_VIDEO_FMT_VESA_2048X1152_60, HI_HDMI_VIDEO_FMT_2560x1440_30, HI_HDMI_VIDEO_FMT_2560x1440_60, HI_HDMI_VIDEO_FMT_2560x1600_60, HI_HDMI_VIDEO_FMT_1920x2160_30, HI_HDMI_VIDEO_FMT_3840X2160P_24, HI_HDMI_VIDEO_FMT_3840X2160P_25, HI_HDMI_VIDEO_FMT_3840X2160P_30, HI_HDMI_VIDEO_FMT_3840X2160P_50, HI_HDMI_VIDEO_FMT_3840X2160P_60, HI_HDMI_VIDEO_FMT_4096X2160P_24, HI_HDMI_VIDEO_FMT_4096X2160P_25, HI_HDMI_VIDEO_FMT_4096X2160P_30, HI_HDMI_VIDEO_FMT_4096X2160P_50, HI_HDMI_VIDEO_FMT_4096X2160P_60, HI_HDMI_VIDEO_FMT_3840X2160P_120, HI_HDMI_VIDEO_FMT_4096X2160P_120, HI_HDMI_VIDEO_FMT_7680X4320P_30, HI_HDMI_VIDEO_FMT_VESA_CUSTOMER_DEFINE, HI_HDMI_VIDEO_FMT_BUTT }HI_HDMI_VIDEO_FMT_E; typedef enum hiHDMI_PIC_ASPECT_RATIO_E { HI_HDMI_PIC_ASP_RATIO_NO_DATA, /** */ typedef struct hiHDMI_HDR_CAP_S{ HI_HDMI_EOTF_S stEotf; /****/ HI_HDMI_DEEP_COLOR_E enDeepColorMode; /**< DeepColor output mode.It is HI_HDMI_DEEP_COLOR_24BIT by default. */ HI_BOOL bxvYCCMode; /**< Whether to enable the xvYCC output mode.It is HI_FALSE by default. */ HI_BOOL bEnableAudio; /**< Whether to enable the audio. */ HI_HDMI_SND_INTERFACE_E enSoundIntf; /**< HDMI audio source.It is set to HI_HDMI_SND_INTERFACE_I2S, which needs to be consistent with the VO interface. */ HI_BOOL bIsMultiChannel; /**< Multi-channel or stereo 0: stereo 1: eight-channel fixed for multi-channel */ HI_HDMI_SAMPLE_RATE_E enSampleRate; /**< Audio sampling rate. This parameter needs to be consistent with that of the VO. */ HI_U8 u8DownSampleParm; /**< Audio down sampling rate parameter. It is 0 by default. */ HI_HDMI_BIT_DEPTH_E enBitDepth; /**< Audio bit width. It is 16 by default. This parameter needs to be consistent with that of the VO. */ HI_U8 u8I2SCtlVbit; /**< Reserved. It is set to 0. I2S control (0x7A:0x1D) */ HI_BOOL bEnableAviInfoFrame; /**< Whether to enable AVI InfoFrame.It is recommended to enable this function. */ HI_BOOL bEnableAudInfoFrame; /**< Whether to enable AUDIO InfoFrame.It is recommended to enable this function. */ HI_BOOL bEnableSpdInfoFrame; /**< Whether to enable SPD InfoFrame.It is recommended to disable this function. */ HI_BOOL bEnableMpegInfoFrame;/**< Whether to enable MPEG InfoFrame.It is recommended to disable this function. */ HI_BOOL bDebugFlag; /**< Whether to enable the debug information in the HDMI.It is recommended to disable this function. */ HI_BOOL bHDCPEnable; /**< Whether to enable the HDCP.0: disabled 1: enabled */ HI_BOOL b3DEnable; /**< Whether to enable 3D mode. 0: disabled 1: enabled */ HI_U8 u83DParam; /**< 3D Parameter. The default value is 9. */ HI_HDMI_FORCE_ACTION_E enDefaultMode; /**< When get capability fail,HDMI forcily(priority) judgments output video mode.Default is HI_HDMI_FORCE_HDMI.*/ HI_BOOL bAuthMode; /**< Whether to enable auth mode. 0: disabled 1: enabled */ HI_BOOL bEnableVidModeAdapt; /**< Enable flag of vedio mode & DVI adapting case of user setting incorrect,default:HI_TRUE.When user have no any adapting strategy,suggestion HI_TRUE*/ HI_BOOL bEnableDeepClrAdapt; /**< Enable flag of deep color mode adapting case of user setting incorrect,default: HI_FALSE.When user have no any adapting strategy,suggestion HI_TRUE*/ HI_U32 u32PixClk; /**< Pixclk of enVideoFmt(unit is kHz).(This param is valid only when enVideoFmt is HI_HDMI_VIDEO_FMT_VESA_CUSTOMER_DEFINE) */ }HI_HDMI_ATTR_S; typedef struct hiHI_HDMI_EDID_S { HI_BOOL bEdidValid; HI_U32 u32Edidlength; HI_U8 u8Edid[512]; }HI_HDMI_EDID_S; typedef enum hiHDMI_INFOFRAME_TYPE_E { HI_INFOFRAME_TYPE_AVI, /**< HDMI AVI InfoFrame */ HI_INFOFRAME_TYPE_SPD, /**< HDMI SPD InfoFrame */ HI_INFOFRAME_TYPE_AUDIO, /**< HDMI AUDIO InfoFrame */ HI_INFOFRAME_TYPE_MPEG, /**< HDMI MPEG InfoFrame */ HI_INFOFRAME_TYPE_VENDORSPEC, /**< HDMI Vendor Specific InfoFrame */ HI_INFOFRAME_TYPE_BUTT }HI_HDMI_INFOFRAME_TYPE_E; /** HDMI AVI InfoFrame struct, see EIA-CEA-861-D */ typedef struct hi_HDMI_AVI_INFOFRAME_VER2_S { HI_HDMI_VIDEO_FMT_E enTimingMode; HI_HDMI_COLOR_SPACE_E enColorSpace; HI_BOOL bActive_Infor_Present; HI_HDMI_BARINFO_E enBarInfo; HI_HDMI_SCANINFO_E enScanInfo; HI_HDMI_COLORIMETRY_E enColorimetry; HI_HDMI_EXT_COLORIMETRY_E enExtColorimetry; HI_HDMI_PIC_ASPECT_RATIO_E enAspectRatio; HI_HDMI_ACT_ASPECT_RATIO_E enActiveAspectRatio; HI_HDMI_PICTURE_SCALING_E enPictureScaling; HI_HDMI_RGB_QUAN_RAGE_E enRGBQuantization; HI_BOOL bIsITContent; HI_HDMI_PIXEL_REPETITION_E enPixelRepetition; HI_HDMI_CONTENT_TYPE_E enContentType; HI_HDMI_YCC_QUAN_RAGE_E enYCCQuantization; HI_U16 u16LineNEndofTopBar; HI_U16 u16LineNStartofBotBar; HI_U16 u16PixelNEndofLeftBar; HI_U16 u16PixelNStartofRightBar; }HI_HDMI_AVI_INFOFRAME_VER2_S; /**Audio chanel count enum,see EIA-CEA-861-D/F*/ typedef enum hiHDMI_AUDIO_CHANEL_CNT_E { HI_HDMI_AUDIO_CHANEL_CNT_STREAM, HI_HDMI_AUDIO_CHANEL_CNT_2, HI_HDMI_AUDIO_CHANEL_CNT_3, HI_HDMI_AUDIO_CHANEL_CNT_4, HI_HDMI_AUDIO_CHANEL_CNT_5, HI_HDMI_AUDIO_CHANEL_CNT_6, HI_HDMI_AUDIO_CHANEL_CNT_7, HI_HDMI_AUDIO_CHANEL_CNT_8, }HI_HDMI_AUDIO_CHANEL_CNT_E; /**Audio Sample Size enum,see EIA-CEA-861-D/F*/ typedef enum hiHDMI_AUDIO_SAMPLE_SIZE_E { HI_HDMI_AUDIO_SAMPLE_SIZE_STREAM, HI_HDMI_AUDIO_SAMPLE_SIZE_16, HI_HDMI_AUDIO_SAMPLE_SIZE_20, HI_HDMI_AUDIO_SAMPLE_SIZE_24, }HI_HDMI_AUDIO_SAMPLE_SIZE_E; /**Audio Sampling Frequency enum,see EIA-CEA-861-D/F*/ typedef enum hiHDMI_AUDIO_SAMPLE_FREQ_E { HI_HDMI_AUDIO_SAMPLE_FREQ_STREAM, HI_HDMI_AUDIO_SAMPLE_FREQ_32000, HI_HDMI_AUDIO_SAMPLE_FREQ_44100, HI_HDMI_AUDIO_SAMPLE_FREQ_48000, HI_HDMI_AUDIO_SAMPLE_FREQ_88200, HI_HDMI_AUDIO_SAMPLE_FREQ_96000, HI_HDMI_AUDIO_SAMPLE_FREQ_176400, HI_HDMI_AUDIO_SAMPLE_FREQ_192000, }HI_HDMI_AUDIO_SAMPLE_FREQ_E; /** Level Shift Values (LSV0-LSV3) enum,see EIA-CEA-861-D/F*/ typedef enum hiHDMI_LEVEL_SHIFT_VALUE_E { HI_HDMI_LEVEL_SHIFT_VALUE_0_DB, HI_HDMI_LEVEL_SHIFT_VALUE_1_DB, HI_HDMI_LEVEL_SHIFT_VALUE_2_DB, HI_HDMI_LEVEL_SHIFT_VALUE_3_DB, HI_HDMI_LEVEL_SHIFT_VALUE_4_DB, HI_HDMI_LEVEL_SHIFT_VALUE_5_DB, HI_HDMI_LEVEL_SHIFT_VALUE_6_DB, HI_HDMI_LEVEL_SHIFT_VALUE_7_DB, HI_HDMI_LEVEL_SHIFT_VALUE_8_DB, HI_HDMI_LEVEL_SHIFT_VALUE_9_DB, HI_HDMI_LEVEL_SHIFT_VALUE_10_DB, HI_HDMI_LEVEL_SHIFT_VALUE_11_DB, HI_HDMI_LEVEL_SHIFT_VALUE_12_DB, HI_HDMI_LEVEL_SHIFT_VALUE_13_DB, HI_HDMI_LEVEL_SHIFT_VALUE_14_DB, HI_HDMI_LEVEL_SHIFT_VALUE_15_DB, }HI_HDMI_LEVEL_SHIFT_VALUE_E; /**LFE Playback Level enum,see EIA-CEA-861-D/F*/ typedef enum hiHDMI_LFE_PLAYBACK_LEVEL_E { HI_HDMI_LFE_PLAYBACK_NO, HI_HDMI_LFE_PLAYBACK_0_DB, HI_HDMI_LFE_PLAYBACK_10_DB, HI_HDMI_LFE_PLAYBACK_RESEVED, }HI_HDMI_LFE_PLAYBACK_LEVEL_E; /** HDMI AUDIO InfoFrame struct, see EIA-CEA-861-D */ typedef struct hiHDMI_AUD_INFOFRAME_VER1_S { HI_HDMI_AUDIO_CHANEL_CNT_E enChannelCount; HI_HDMI_CODING_TYPE_E enCodingType; HI_HDMI_AUDIO_SAMPLE_SIZE_E enSampleSize; HI_HDMI_AUDIO_SAMPLE_FREQ_E enSamplingFrequency; HI_U8 u8ChannelAlloc; /* Channel/Speaker Allocation.Range [0,255] */ HI_HDMI_LEVEL_SHIFT_VALUE_E enLevelShift; HI_HDMI_LFE_PLAYBACK_LEVEL_E enLfePlaybackLevel; HI_BOOL bDownmixInhibit; }HI_HDMI_AUD_INFOFRAME_VER1_S; /** HDMI Source Product Description InfoFrame struct , see EIA-CEA-861-D */ typedef struct hiHDMI_SPD_INFOFRAME_S { HI_U8 u8VendorName[8]; HI_U8 u8ProductDescription[16]; }HI_HDMI_SPD_INFOFRAME_S; /** HDMI MEPG SOURCE Description InfoFrame struct , see EIA-CEA-861-D */ typedef struct hiHDMI_MPEGSOURCE_INFOFRAME_S { HI_U32 u32MPEGBitRate; HI_BOOL bIsFieldRepeated; }HI_HDMI_MPEGSOURCE_INFOFRAME_S; /** HDMI Vendor Specific InfoFrame struct , see EIA-CEA-861-D */ typedef struct hiHDMI_VENDORSPEC_INFOFRAME_S { HI_U32 u32RegistrationId; }HI_HDMI_VENDORSPEC_INFOFRAME_S; typedef union hiHDMI_INFOFRAME_UNIT_U { HI_HDMI_AVI_INFOFRAME_VER2_S stAVIInfoFrame; HI_HDMI_AUD_INFOFRAME_VER1_S stAUDInfoFrame; HI_HDMI_SPD_INFOFRAME_S stSPDInfoFrame; HI_HDMI_MPEGSOURCE_INFOFRAME_S stMPEGSourceInfoFrame; HI_HDMI_VENDORSPEC_INFOFRAME_S stVendorSpecInfoFrame; }HI_HMDI_INFORFRAME_UNIT_U; typedef struct hiUNF_HDMI_INFOFRAME_S { HI_HDMI_INFOFRAME_TYPE_E enInfoFrameType; /** Used as a response to indicate that the device does not support the requested message type, or that it cannot execute it at the present time. */ #define CEC_OPCODE_ABORT_MESSAGE 0XFF /**< Message This message is reserved for testing purposes. */ /**< One Touch Play Feature*/ #define CEC_OPCODE_ACTIVE_SOURCE 0X82 /**< Used by a new source to indicate that it has started to transmit a stream OR used in response to a */ #define CEC_OPCODE_IMAGE_VIEW_ON 0X04 /**< Sent by a source device to the TV whenever it enters the active state (alternatively it may send ). */ #define CEC_OPCODE_TEXT_VIEW_ON 0X0D /**< As , but should also remove any text, menus and PIP windows from the TV's display. */ /**< Routing Control Feature*/ #define CEC_OPCODE_INACTIVE_SOURCE 0X9D /**< Used by the currently active source to inform the TV that it has no video to be presented to the user, or is going into standby as the result of a local user command on the device. */ #define CEC_OPCODE_REQUEST_ACTIVE_SOURCE 0X85 /**< Used by a new device to discover the status of the system. */ #define CEC_OPCODE_ROUTING_CHANGE 0X80 /**< Sent by a CEC Switch when it is manually switched to inform all other devices on the network that the active route below the switch has changed. */ #define CEC_OPCODE_ROUTING_INFORMATION 0X81 /**< Sent by a CEC Switch to indicate the active route below the switch. */ #define CEC_OPCODE_SET_STREAM_PATH 0X86 /**< Used by the TV to request a streaming path from the specified physical address. */ /**< Standby Feature*/ #define CEC_OPCODE_STANDBY 0X36 /**< Switches one or all devices into standby mode. Can be used as a broadcast message or be addressed to a specific device. See section CEC 13.3 for important notes on the use of this message */ /**< One Touch Record Feature*/ #define CEC_OPCODE_RECORD_OFF 0X0B /**< Requests a device to stop a recording. */ #define CEC_OPCODE_RECORD_ON 0X09 /**< Attempt to record the specified source. */ #define CEC_OPCODE_RECORD_STATUS 0X0A /**< Used by a Recording Device to inform the initiator of the message about its status. */ #define CEC_OPCODE_RECORD_TV_SCREEN 0X0F /**< Request by the Recording Device to record the presently displayed source. */ /**< Timer Programming Feature*/ #define CEC_OPCODE_CLEAR_ANALOGUE_TIMER 0X33 /**< Used to clear an Analogue timer block of a device. */ #define CEC_OPCODE_CLEAR_DIGITAL_TIMER 0X99 /**< Used to clear a Digital timer block of a device. */ #define CEC_OPCODE_CLEAR_EXTERNAL_TIMER 0XA1 /**< Used to clear an External timer block of a device. */ #define CEC_OPCODE_SET_ANALOGUE_TIMER 0X34 /**< Used to set a single timer block on an Analogue Recording Device. */ #define CEC_OPCODE_SET_DIGITAL_TIMER 0X97 /**< Used to set a single timer block on a Digital Recording Device. */ #define CEC_OPCODE_SET_EXTERNAL_TIMER 0XA2 /**< Used to set a single timer block to record from an external device. */ #define CEC_OPCODE_SET_TIMER_PROGRAM_TITLE 0X67 /**< Used to set the name of a program associated with a timer block. Sent directly after sending a or message. The name is then associated with that timer block. */ #define CEC_OPCODE_TIMER_CLEARED_STATUS 0X43 /**< Used to give the status of a , or message. */ #define CEC_OPCODE_TIMER_STATUS 0X35 /**< Used to send timer status to the initiator of a message. */ /**< System Information Feature*/ #define CEC_OPCODE_CEC_VERSION 0X9E /**< Used to indicate the supported CEC version, in response to a */ #define CEC_OPCODE_GET_CEC_VERSION 0X9F /**< Used by a device to enquire which version of CEC the target supports */ #define CEC_OPCODE_GIVE_PHYSICAL_ADDRESS 0X83 /**< A request to a device to return its physical address. */ #define CEC_OPCODE_REPORT_PHYSICAL_ADDRESS 0X84 /**< Used to inform all other devices of the mapping between physical and logical address of the initiator. */ #define CEC_OPCODE_GET_MENU_LANGUAGE 0X91 /**< Sent by a device capable of character generation (for OSD and Menus) to a TV in order to discover the currently selected Menu language. Also used by a TV during installation to discover the currently set menu language of other devices. */ #define CEC_OPCODE_SET_MENU_LANGUAGE 0X32 /**< Used by a TV or another device to indicate the menu language. */ /**< Deck Control Feature*/ #define CEC_OPCODE_DECK_CONTROL 0X42 /**< Used to control a device's media functions. */ #define CEC_OPCODE_DECK_STATUS 0X1B /**< Used to provide a deck's status to the initiator of the message. */ #define CEC_OPCODE_GIVE_DECK_STATUS 0X1A /**< Used to request the status of a device, regardless of whether or not it is the current active source. */ #define CEC_OPCODE_PLAY 0X41 /**< Used to control the playback behaviour of a source device. */ /**< Tuner Control Feature*/ #define CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS 0X08 /**< Used to request the status of a tuner device. */ #define CEC_OPCODE_SELECT_ANALOGUE_SERVICE 0X92 /**< Directly selects a Digital TV, Radio or Data Broadcast Service */ #define CEC_OPCODE_TUNER_DEVICE_STATUS 0X07 /**< Use by a tuner device to provide its status to the initiator of the message. */ #define CEC_OPCODE_TUNER_STEP_DECREMENT 0X06 /**< Used to tune to next lowest service in a tuner's service list. Can be used for PIP. */ #define CEC_OPCODE_TUNER_STEP_INCREMENT 0X05 /**< Used to tune to next highest service in a tuner's service list. Can be used for PIP. */ /**< Vendor Specific Command*/ #define CEC_OPCODE_DEVICE_VENDOR_ID 0X87 /**< Reports the vendor ID of this device. */ #define CEC_OPCODE_GIVE_DEVICE_VENDOR_ID 0X8C /**< Requests the Vendor ID from a device. */ #define CEC_OPCODE_VENDOR_COMMAND 0X89 /**< Allows vendor specific commands to be sent between two devices. */ #define CEC_OPCODE_VENDOR_COMMAND_WITH_ID 0XA0 /**< Allows vendor specific commands to be sent between two devices or broadcast. */ #define CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN 0X8A /**< Indicates that a remote control button has been depressed. */ #define CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP 0X8B /**< Indicates that a remote control button (the last button pressed indicated by the Vendor Remote Button Down message) has been released. */ /**< OSD Display Feature*/ #define CEC_OPCODE_SET_OSD_STRING 0X64 /**< Used to send a text message to output on a TV. */ #define CEC_OPCODE_GIVE_OSD_NAME 0X46 /**< Used to request the preferred OSD name of a device for use in menus associated with that device. */ #define CEC_OPCODE_SET_OSD_NAME 0X47 /**< Used to set the preferred OSD name of a device for use in menus associated with that device. */ /**< Device Menu Control Feature*/ #define CEC_OPCODE_MENU_REQUEST 0X8D /**< A request from the TV for a device to show/remove a menu or to query if a device is currently showing a menu. */ #define CEC_OPCODE_MENU_STATUS 0X8E /**< Used to indicate to the TV that the device is showing/has removed a menu and requests the remote control keys to be passed though. */ #define CEC_OPCODE_USER_CONTROL_PRESSED 0X44 /**< Used to indicate that the user pressed a remote control button or switched from one remote control button to another. */ #define CEC_OPCODE_USER_CONTROL_RELEASED 0X45 /**< Indicates that user released a remote control button (the last one indicated by the message) */ /**< Power Status Feature*/ #define CEC_OPCODE_GIVE_DEVICE_POWER_STATUS 0X8F /**< Used to determine the current power status of a target device */ #define CEC_OPCODE_REPORT_POWER_STATUS 0X90 /**< Used to inform a requesting device of the current power status */ /**< System Audio Control Feature*/ #define CEC_OPCODE_GIVE_AUDIO_STATUS 0X71 /**< Requests an amplifier to send its volume and mute status */ #define CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS 0x7D /**< Requests the status of the System Audio Mode */ #define CEC_OPCODE_REPORT_AUDIO_STATUS 0X7A /**< Reports an amplifier's volume and mute status */ #define CEC_OPCODE_SET_SYSTEM_AUDIO_MODE 0X72 /**< Turns the System Audio Mode On or Off. */ #define CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST 0X70 /**< A device implementing System Audio Control and which has volume control RC buttons (eg TV or STB) requests to use System Audio Mode to the amplifier */ #define CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS 0X7E /**< Reports the current status of the System Audio Mode */ /**< Audio Rate Control Feature*/ #define CEC_OPCODE_SET_AUDIO_RATE 0X9A /**< Used to control audio rate from Source Device. */ #define CEC_OPCODE_POLLING_MESSAGE 0XFE /**<