123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- #ifndef _DRV_AUDIO_INTERNAL_H_
- #define _DRV_AUDIO_INTERNAL_H_
- #include "drv_audio_interface.h"
- #include "drv_audio_cmdq.h"
- typedef enum _AUDIOROM_INFO_e
- {
- ARINFO_SFREQ = 0,
- ARINFO_CHANNELNUM,
- ARINFO_SAMPLENUMBER,
- ARINFO_LASTPTS,
- ARINFO_LASTDATAPTR,
- ARINFO_LAST_AD_DATAPTR,
- ARINFO_INPUT_DATATYPE,
- ARINFO_AUDIO_FEATURE,
- ARINFO_TXDESP_NUM,
- ARINFO_TXDESP_LRADDR,
- ARINFO_AMP_AUDIO_TYPE,
- ARINFO_SAMPLENUMBER_DEC2,
- ARINFO_DES_NO,
- ARINFO_TITOI_STATUS,
- ARINFO_ERR
- } AUDIOROM_INFO_e;
- #pragma pack(push,1)
- typedef struct _AUDIORX_INPUT_DESCRIPTION
- {
- // 1st UINT32
- UINT32 buff_valid : 1;
- UINT32 UINT321_b1_b15 : 15;
- UINT32 buff_size : 15; // 16 UINT8 align
- UINT32 UINT321_b31 : 1;
- // 2nd UINT32
- UINT32 UINT322_b0 : 1;
- UINT32 pts_exist : 1;
- UINT32 dowrd2_b2_b15 : 14;
- UINT32 pts_val_b0_15 : 16;
- // 3th UINT32
- UINT32 pts_val_b16_b32 : 17;
- UINT32 UINT323_b17_b31 : 15;
- // 4th UINT32
- UINT32 UINT324;
-
- // 5th UINT32
- UINT32 start_addr_1;
- // 6th UINT32
- UINT32 start_addr_2;
- // 7th UINT32
- UINT32 start_addr_3;
- // 8th UINT32
- UINT32 start_addr_4;
- }AUDIORX_INPUT_DESCRIPTION, *pAUDIORX_INPUT_DESCRIPTION;
- typedef struct _AUDIOTX_OUTPUT_DESCRIPTION
- {
- // 1st UINT32
- UINT32 BuffValid : 1;
- UINT32 Pause : 1;
- UINT32 Discont : 1;
- UINT32 AutoStuff : 1;
- UINT32 Reserved : 1;
- UINT32 AutoStuffLen : 11; // 16 UINT8 align
- UINT32 BuffSize : 15; // 16 UINT8 align
- UINT32 Reserved1 : 1;
- // 2nd UINT32
- UINT32 DataValid : 1;
- UINT32 PTSExist : 1;
- UINT32 StopDiscontFreeRun : 1;
- UINT32 Reserved2 : 5;
- UINT32 L_invalid : 1;
- UINT32 R_invalid : 1;
- UINT32 Lfe_invalid : 1;
- UINT32 C_invalid : 1;
- UINT32 Ls_invalid : 1;
- UINT32 Rs_invalid : 1;
- UINT32 SL_invalid : 1;
- UINT32 SR_invalid : 1;
- UINT32 PTSValue1 : 16; // PTS[0:15]
- // 3th UINT32
- UINT32 PTSValue2 : 17; // PTS[16:32]
- UINT32 NLsize : 11;
- UINT32 Reserved3 : 4;
- // 4th UINT32
- UINT32 NLAddr;
-
- // 5th UINT32
- UINT32 LRAddr;
- // 6th UINT32
- UINT32 CLFEAddr;
- // 7th UINT32
- UINT32 LSRSAddr;
- // 8th UINT32
- UINT32 SLSRAddr;
- }AUDIOTX_OUTPUT_DESCRIPTION, *pAUDIOTX_OUTPUT_DESCRIPTION;
- typedef struct _AUDIO_MPEGHEADERDATA
- {
- union
- {
- struct
- {
- UINT32 emphasis:2;
- UINT32 original_copy:1;
- UINT32 copyright:1;
- UINT32 mode_extension:2;
- UINT32 mode:2;
- UINT32 private_bit:1;
- UINT32 padding_bit:1;
- UINT32 sampling_frequency:2;
- UINT32 bitrate_index:4;
- UINT32 protection_bit:1;
- UINT32 layer:2;
- UINT32 id:1;
- UINT32 syncword:12;
- };
- struct
- {
- UINT32 reserved02:20;
- UINT32 lsf:1;
- UINT32 reserved01:11;
- };
- UINT32 dw;
- };
- }AUDIO_MPEGHEADERDATA, *AUDIO_MPEGHEADERDATAPTR;
- //07/15/2010 added by cdlin to support MPEG2 AAC for CyberView ISDB-T project.
- typedef struct _AUDIO_MPEG2AACHEADERDATA
- {
- union
- {
- struct
- {
- UINT32 error_check_bit7_0:8;
- UINT32 number_of_raw_data_blocks_in_frame:2;
- UINT32 adts_buffer_fullness:11;
- UINT32 frame_length_bit10_0:11;
- };
- UINT32 dw2;
- };
- union
- {
- struct
- {
- UINT32 frame_length_bit12_11:2;
- UINT32 copyright_identification_start:1;
- UINT32 copyright_identification_bit:1;
- UINT32 home:1;
- UINT32 original_copy:1;
- UINT32 channel_configuration:3;
- UINT32 private_bit:1;
- UINT32 sampling_frequency_index:4;
- UINT32 profile:2;
- UINT32 protection_absent:1;
- UINT32 layer:2;
- UINT32 id:1;
- UINT32 syncword:12;
- };
- UINT32 dw1;
- };
- }AUDIO_MPEG2AACHEADERDATA, *AUDIO_MPEG2AACHEADERDATAPTR;
- #ifdef CONFIG_DTMB_SYSTEM
- typedef struct _AUDIO_DRAHEADERDATA
- {
- union
- {
- struct
- {
- UINT32 reserved01:27;
- UINT32 num_lef_ch:1;
- UINT32 num_normal_ch:3;
- UINT32 samplerate_index_bit0:1;
- };
- UINT32 dw2;
- };
- union
- {
- struct
- {
- UINT32 samplerate_index_bit3_1:3;
- UINT32 num_block_per_trans:2;
- UINT32 num_WORD:10; //one word 32bits unit
- UINT32 frame_header_type:1;
- UINT32 syncword:16; //0x7fff
- };
- UINT32 dw1;
- };
-
- }AUDIO_DRAHEADERDATA, *AUDIO_DRAHEADERDATAPTR;
- #endif
- typedef struct _AUDIO_IEC61937_HEADER
- {
- union
- {
- UINT32 header;
- UINT32 dw1;
- };
- union
- {
- struct{
- UINT32 length:16;
- UINT32 data_type:5;
- UINT32 reserved:2;
- UINT32 error_flag:1;
- UINT32 dependent_info:5;
- UINT32 bitstream_num:3;
- };
- UINT32 dw2;
- };
- }AUDIO_IEC61937_HEADER,*AUDIO_IEC61937_HEADER_PTR;
- typedef struct _SPDIF_CHANNEL_STATUS
- {
- UINT32 spdif_channel_status_b0_b7 : 8; //audioreg58
- UINT32 spdif_channel_status_b8_b15 : 8; // audioreg59
- UINT32 spdif_channel_status_b16_b23 : 8; // audioreg5a
- UINT32 spdif_channel_status_b24_b31 : 8; // audioreg5b
- UINT32 spdif_channel_status_b32_b39 : 8; // audioreg53
- } SPDIF_CHANNEL_STATUS,*pSPDIF_CHANNEL_STATUS;
- /*
- BELOW INFORMATION IS FOR AUDIO CONTROL MAP ADUIOROM INFO.
- */
- /* True Volume */
- typedef struct _TRUEVOL_INFO
- {
- struct
- {
- UINT32 tv : 1;
- UINT32 tvleftenable : 1;
- UINT32 tvrightenable : 1;
- UINT32 tvnoise : 1;
- UINT32 srs_reserved_b4_b7 : 4;
- UINT32 tvmode : 1;
- UINT32 tvspksize: 3;
- UINT32 srs_reserved_b12: 20;
- };
- UINT32 inputgain; //input gain, 0~0x7fffffff
- UINT32 outputgain; //output gain, 0~0x7fffffff
- UINT32 bypassgain; //bypass gain, 0~0x7fffffff
- UINT32 referencelevel; //reference gain, 0~0x7fffffff
- UINT32 maxgain;
- UINT32 noisethreshold;
- }TRUEVOL_INFO, *pTRUEVOL_INFO;
- /* AUDIOROM ONLY*/
- typedef struct _SRS_TSHD_INFO
- {
- UINT8 mEnable; /* True = Process, False = Bypass */
- UINT8 mSurroundEnable;
- UINT8 mDialogClarityEnable;
- UINT8 mTruBassEnable;
- UINT8 mDefinitionFrontEnable;
- UINT8 mTruBassSpksize;
- UINT8 mInputMode;
- UINT8 mOutputMode;
- INT32 mInputGain;
- INT32 mOutputGain;
- INT32 mBypassGain;
- INT32 mSurroundLevel;
- INT32 mDialogClarityLevel;
- INT32 mTruBassLevel;
- INT32 mDefinitionFrontLevel;
-
- }SRS_TSHD_INFO, *pSRS_TSHD_INFO;
- typedef struct _AGC_INFO
- {
- UINT8 Enable; /* True = Process, False = Bypass */
- UINT8 limiter_level; //unit -1dB, 0: 0: 0.dB(default), 1: -1dB, 2: -2dB.... Max: 30 : -30dB
- UINT8 pullup_gain; //unit: 0.1dB, 0: 0.dB(default), 1: 0.1 dB... max:180(18 dB)
- UINT8 attack_rate; //attack/release rate , 0: 1/4 , 1: 1/8, 2: 1/16, 3: 1/32, 4: 1/64 , 5: 1/128 6: 1/256 , 7: 1/512 , 8: 1/1024 9: 1/2048, 10: 1/4096
- UINT8 pullup_active_level; // when signal < AGC_pullup_active_level and then pull up gain will be work // 0 ~ -30
- UINT8 active_time; //unit 10ms, 0: 10ms, 1: 20ms... 15: 160ms,
- UINT8 AGC_Reserve_b[10]; //reserved
- }AGC_INFO, *pAGC_INFO;
- typedef struct _AUDIOEFFECT_INFO
- {
- struct
- {
- UINT8 enable: 1;
- UINT8 surround_en:1;
- UINT8 voice_en: 1;
- UINT8 bass_en: 1;
- UINT8 Reserved0: 4;
- };
- UINT8 Sur_mode; //surround mode
- UINT8 Sur_Lv; // surround level
- UINT8 Voice_Lv; //voice level
- UINT8 Bass_Lv; // bass level
- UINT8 Bass_Freq; // bass freq
- UINT8 inputgain;
- UINT8 directgain; //only use for S+ Surround
- UINT8 reverbgain; //only use for S+ Surround
- UINT8 ambiancegain; //only use for S+ Surround
- UINT8 AE_Reserve_b[6]; //reserved
- }AUDIOEFFECT_INFO, *pAUDIOEFFECT_INFO;
- typedef struct _DBXAUDIO_INFO
- {
- UINT8 mtotvol;
- UINT8 mtotsur;
- UINT8 mtotson;
- UINT8 m_dbx_reserved;
- UINT32 enable_flag;
- UINT32 preset_addr;
- UINT32 param_addr;
- UINT32 coeff_addr;
- UINT32 reserved1;
- UINT32 reserved2;
- }DBXAUDIO_INFO, *pDBXAUDIO_INFO;
- typedef struct _TITOI_INFO
- {
- INT32 param[64];
- }TITOI_INFO, *pTITOI_INFO;
- typedef struct _MS_AE_SET_INFO
- {
- struct
- {
- unsigned char MS_AE_enable: 1;
- unsigned char MS_AE_surround_en:1;
- unsigned char MS_AE_voice_en: 1;
- unsigned char MS_AE_bass_en: 1;
- unsigned char MS_definition_en: 1;
- unsigned char MS_AE_sf_exp: 1; //EXPANSION SOUND FIELD
- unsigned char Reserved0: 2;
- };
-
-
- unsigned char MS_AE_surround_gain; // , default 8 //0.0~1.0,outputsound= (1-gain)*(input_sound) + gain*(surround_sound)
- unsigned char MS_AE_Sur_Lv; // surround level delay ,delay sample //0~4800,echo effect , 480 sample/step.
- unsigned char MS_AE_Sur_Delay;
- unsigned char MS_AE_Bass_Freq; // bass freq 0:100 1:200 2:400
- unsigned char MS_AE_bassfix_gain; // , default 8
- unsigned char MS_AE_Voice_Lv; //voice level ,dialog clarity //0~+10dB (2500Hz EQ)
- unsigned char MS_AE_Definition_gain; // high pass definition 0~+10dB (5000Hz EQ)
- unsigned char MS_AE_reserved[8];
-
-
- }MS_AE_SET_INFO, *pMS_AE_SET_INFO;
- typedef struct _CUT_OFF_INFO
- {
- unsigned char CUT_OFF_ENABLE;
- unsigned char CUT_OFF_FREQ_INDEX;
- unsigned char reserved[2];
-
- }CUT_OFF_INFO,*pCUT_OFF_INFO;
- /*
- AUDIO CONTROL STRUCTURE
- This structure is used for AudioRom and Driver communication.
- Start Address is "AUDIO_CONTROL_BUFF_ADDR", Reserved size is 2048 bytes
- CONTROL BUFFER LAYOUT
- 1. Audio PostProcessor Info //768 BYTES,
- Relative Items will show current postprocessor status.
- 2. Audio ROM info //256 BYTES
- Relative Items will show current AudioRom Info , Ex. sfreq, PTSOFFSET.....
- 3. Reserved // 1024 BYTES
- */
- typedef struct _AUDIO_CONTROL
- {
- //Audio PostProcessor Info Start //768 BYTES,
- // offset: 0x0
- union
- {
- UINT32 post_processing_enable;
- struct
- {
- UINT32 AE_enable : 1;
- UINT32 AGC_enable : 1;
- UINT32 EQEnable : 1;
- UINT32 PEQEnable: 1;
- UINT32 ShelvingEnable : 1;
- UINT32 SRS_TVOL_Enable : 1;
- UINT32 SRS_TSHD_Enable : 1;
- UINT32 FreqPeakDet_En: 1;
- UINT32 dbxaudio_en: 1;
- UINT32 HPLPEnable : 1;
- UINT32 MBDRCEnable : 1;
- UINT32 TITOISucess : 1;
- UINT32 pp_reserved_b10_b30 : 19;
- UINT32 pp_test_eanble : 1;
- };
- };
- //0x04
- UINT32 ARINFO_b04;
- #if 1//def CONFIG_SUPPORT_PEQ_12BAND
- // EQ, offset: 0x08 for 12band EQ or PEQ make sure ROM support 12band case
- PEQ_ELEMENT peq_set[PEQ_BAND_MAX]; //size = 20x12 = 240, bytes
- UINT32 ARINFO_EQ_12BANDReserved; //Reserved
- #else
- // EQ, offset: 0x08 for 9band EQ & 3band PEQ
- SIS_PEQ_ELEMENT eq_set[EQ_BAND_MAX]; //size = 20x9 = 180, bytes
-
- //0xBC~0xBF Reserved
- UINT32 ARINFO_bBC;
-
- // PEQ, offset: 0xC0
- SIS_PEQ_ELEMENT peq_set[PEQ_BAND_MAX]; //size = 20x3 = 60 bytes
- #endif
- //0xFC~0x10F Reserved
- UINT32 ARINFO_bFC;
- UINT32 ARINFO_b100;
- UINT32 ARINFO_b104;
- UINT32 ARINFO_b108;
- UINT32 ARINFO_b10C;
- //0x110
- INT8 bassGain;
- INT8 trebleGain;
- //0x112~0x113 Reserved
- UINT8 ARINFO_b112;
- UINT8 ARINFO_b113;
-
- //0x114
- SRS_TSHD_INFO tshd_info; //size = 36 bytes
- //0x138~0x13C Reserved
- UINT32 ARINFO_b138;
- UINT32 ARINFO_b13C;
- //0x140
- TRUEVOL_INFO TrueVol_info; //size =28 bytes
- //0x15c Reserved
- CUT_OFF_INFO CUT_INFO;
- //0x160
- #ifdef CONFIG_AUDIO_MAXIMUS_SURROUND
- MS_AE_SET_INFO MS_AE_INFO;
- #else
- AUDIOEFFECT_INFO AE_INFO; //size = 16 bytes
- #endif
- //0x170
- AGC_INFO agcinfo; //size = 16 bytes
-
- // offset: 0x180 FF/FW/normal playback,
- UINT8 playback_status;
- UINT8 ARINFO_PP_RESERVED1[3];
- //0x184~0x18F
- DBXAUDIO_INFO dbx_info;
-
- //0x190~0x28F
- TITOI_INFO titoi_info;
- //0x290~0x2FF Reserved
- UINT8 ARINFO_PP_RESERVED[96];
- //Audio PostProcessor Info End //768 BYTES,
- //AudioRom Info Start
- //0x300
- UINT32 audiorom_version; //audiorom version
- //0x304
- UINT32 audio_feature; //define AUDIOROM SUPPORT AUDIO FEATURE, EX . MP3/AAC/AC3/EAC3/SRSTSHD....ETC
- //0x308
- union
- {
- UINT32 project_info;
- struct
- {
- //b[7:0]
- UINT32 i2sbypass : 8;
- //b[15:8]
- UINT32 canalplus : 8;
- //b[23:16]
- UINT32 fix_q_eq : 1;
- UINT32 alsa_pcm_type: 2;
- UINT32 reserved_b19_b23 : 5;
- //b[31:24]
- UINT32 reserved_b24_b31 : 8;
- };
-
- };
- //0x30c
- UINT32 ARINFO_RESERVED1;
- //0x310
- UINT32 audio_data_type; //record current audio input data type (codec type)
- UINT32 sample_freq;
- UINT32 sample_number;
- union{
- UINT32 channel_number;
- UINT32 mpeg_channel_status; //MPEG CHANNEL NUMBER are ALWAYS 2, but channel status is different , STEREO, JOINT STEREO , DUAL CHANNEL ETC.
- };
- //0x320
- UINT32 DESNO;
- UINT32 ulLastPTS;
- UINT32 PTS_offset;
- UINT32 last_dataptr; //record latest processed audio cmd data ptr
-
- //0x330
- UINT32 last_AD_dataptr; //record latest AD audio cmd data ptr
- UINT32 audio_cur_cycle;
- UINT32 audio_max_cycle;
- UINT32 sample_number_dec2; //decode2 sample number;
- //0x340
- UINT32 peak_audio_in_l;
- UINT32 peak_audio_in_r;
- UINT32 peak_audio_out_l;
- UINT32 peak_audio_out_r;
-
- //0x350
- UINT32 rms_i2s_l[2]; //AUDIOROM RMS VALUE SD0/SD1
- UINT32 rms_i2s_r[2]; //AUDIOROM RMS VALUE SD0/SD1
-
- //0x360
- struct
- {
- UINT32 audio_mem_size : 13; //max 8192KB
- UINT32 sample_byte: 3; //0&4 = 4 BYTES(32 bits) , 1= 8 bits , 2= 16 bits
- UINT32 tx_desp_num: 6;
- UINT32 cmd_size: 5;
- UINT32 ext_lib_size: 5;
- };
- //0x364
- struct
- {
- UINT32 pcm_wp : 8;
- UINT32 pcm_rp : 8;
- UINT32 raw_wp: 8;
- UINT32 raw_rp: 8;
- };
-
- //0x360~0x400 Reserved
- //UINT8 ARINFO_RESERVED1[212];
- //Reserved _RESERVED1[212];
- //Reserved
- } AUDIO_CONTROL, *pAUDIO_CONTROL;
- #pragma pack(pop)
- void DRV_AUDIO_DC_SetMute(pTVFE_Audio_Mute_t pMute_Config);
- UINT8 DRV_AUDIO_Get_CurrTokenCount(void); // Return HW token count (audio HW queue buffer number)
- BOOL SendAudioCmdq(AUDIO_CMDQ *pCmdq); // true: success, false: fail
- void AudioHW_Engine_Reset(void);
- BOOL ResetAudioENG(AUDIO_CMDQ *pReset);//for hw request sw use R_AUDIO_SUBRST instead of R_AUDIO_RST on sis330 chip later.
- void ScartOut_HDMI_NOSIGNAL(void);//support HDMI no signal , Scart out can to output ATV sound.
- UINT8 DRV_AUDIO_IS_MP_Source(void); //check current audio source is used mp driver or not.
- UINT8 DRV_AUDIO_IS_Linein_Source(void); //check current audio source is analog input source
- void DRV_AUDIO_Set_SIFSCART(BOOL bEnable); //Set SIF Bypass feature for Line out
- pAUDIO_CONTROL DRV_AUDIO_Get_AudioCtlInfo(void);
- UINT32 DRV_AUDIO_Get_ARInfo(AUDIOROM_INFO_e arinfo);
- void DRV_AUDIO_Set_ARInfo(AUDIOROM_INFO_e arinfo, UINT32 value);
- UINT32 DRV_AUDIO_FC_GetMuteStatus(void);
- void DRV_AUDIO_FC_GetAudioSettings(AUDIO_SETTINGS_t* pSettings);
- #endif
|