blob: 6d85645051eae6de8d86d7602be6de056429ab6c
1 | #ifndef __TV_AUDIO_ALSA_H__ |
2 | #define __TV_AUDIO_ALSA_H__ |
3 | |
4 | enum CC_AUD_I2S_MUTE { |
5 | CC_I2S_MUTE_OFF, |
6 | CC_I2S_MUTE_ON, |
7 | }; |
8 | |
9 | enum CC_AUD_SPDIF_MUTE { |
10 | CC_SPDIF_MUTE_OFF, |
11 | CC_SPDIF_MUTE_ON, |
12 | }; |
13 | |
14 | enum CC_AUD_IN_TYPE { |
15 | CC_AUDIO_IN_SOURCE_LINEIN, |
16 | CC_AUDIO_IN_SOURCE_ATV, |
17 | CC_AUDIO_IN_SOURCE_HDMI, |
18 | }; |
19 | |
20 | |
21 | #define CC_MIN_DAC_VOLUME (0) |
22 | #define CC_MAX_DAC_VOLUME (255) |
23 | #define CC_MIN_DAC_SUB_WOOFER_VOLUME (0) |
24 | #define CC_MAX_DAC_SUB_WOOFER_VOLUME (255) |
25 | |
26 | #define CC_MIN_SOUND_BALANCE_VAL (0) |
27 | #define CC_MAX_SOUND_BALANCE_VAL (100) |
28 | #define CC_DEF_SOUND_BALANCE_VAL (50) |
29 | |
30 | #define CC_DAC_MUTE_TYPE_EXTERNAL (1) |
31 | #define CC_DAC_MUTE_TYPE_INTERNAL (2) |
32 | |
33 | #define CC_VOL_TRANS_LUT_BUF_SIZE (101) |
34 | |
35 | static const int CC_AUDIO_MUTE = 1; |
36 | static const int CC_AUDIO_UNMUTE = 0; |
37 | |
38 | enum CC_AUDIO_SOURCE_TYPE { |
39 | AUDIO_HDMI_SOURCE, |
40 | AUDIO_ATV_SOURCE, |
41 | AUDIO_AV_SOURCE, |
42 | AUDIO_MPEG_SOURCE, |
43 | AUDIO_MAX_SOURCE |
44 | }; |
45 | |
46 | |
47 | //use tinyalsa,is a like alsa-lib for android |
48 | class CAudioAlsa |
49 | { |
50 | public: |
51 | CAudioAlsa(); |
52 | ~CAudioAlsa(); |
53 | int SetAudioInSource(int source_type); |
54 | int GetAudioInSource(void); |
55 | int SetInternalDacLineInSelectChannel(int line_in_number); |
56 | int SetInternalDacLineInCaptureVolume(int l_vol, int r_vol); |
57 | int GetInternalDacLineInCaptureVolume(int vol_buf[]); |
58 | int SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol); |
59 | int GetInternalDacLineOutPlayBackVolume(int vol_buf[]); |
60 | int SetExternalDacChannelSwitch(int chan_ind, int switch_val); |
61 | int SetExternalDacChannelVolume(int chan_ind, int main_vol); |
62 | int SetExternalDacEQMode(int mode_val); |
63 | int SetI2SMute(int mute_status); |
64 | int SetSPDIFMute(int mute_status); |
65 | int SetHardwareResample(int sr); |
66 | int SetAudioSwitchIO(int value); |
67 | int SetAudioPcmPlaybackVolume(int val); |
68 | int SetAudioPcmPlaybackSwitch(int vol); |
69 | |
70 | int SetOutput_Swap(int value); |
71 | |
72 | |
73 | int SetMixerBypassSwitch(int switch_val); |
74 | int GetMixerBypassSwitch(void); |
75 | int SetMixerDacSwitch(int switch_val); |
76 | int GetMixerDacSwitch(void); |
77 | //dac |
78 | void SetMainVolDigitLutBuf(int digit_lut_buf[]); |
79 | void SetSupperBassVolDigitLutBuf(int digit_lut_buf[]); |
80 | int SetDacMute(int mute_state, int mute_type); |
81 | int SetDacMainVolume(int main_vol); |
82 | int SetDacSupperBassVolume(int tmp_vol); |
83 | int SetDacEQMode(int mode_val); |
84 | int SetBalanceValue(int balance_val); |
85 | int GetBalanceValue(); |
86 | int SetMainVolumeGain(int gain_val); |
87 | int GetMainVolumeGain(); |
88 | int SetSupperBassVolumeGain(int gain_val); |
89 | int GetSupperBassVolumeGain(); |
90 | int SetDacAudioSourceType(int source_type); |
91 | //end dac |
92 | private: |
93 | int get_aml_card(); |
94 | int AudioControlSetValue(int val_count, int data_buf[], char *match_names); |
95 | int AudioControlGetValue(int val_count, int ret_buf[], char *match_names); |
96 | int get_USB_Audio_card(); |
97 | int HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names); |
98 | int CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, int hd_max); |
99 | int GetTwoChannelVolume(int vol_buf[], int l_min_vol, int l_max_vol, int r_min_vol, int r_max_vol, char *match_names, int hd_min, int hd_max); |
100 | int GetLineInMaxVol(); |
101 | int GetLineOutMaxVol(); |
102 | char *GetAlsaControlName(int get_type); |
103 | // |
104 | int TransVolumeBarVolToDigitalVol(int *, int, int, int, int, int); |
105 | int TransDigitalVolToVolumeBarVol(int *, int, int, int, int, int); |
106 | int CalculateBalanceVol(int, int, int *); |
107 | int SetExternalDacMute(int); |
108 | int SetInternalDacMute(int); |
109 | int setAudioPcmPlaybackMute(int); |
110 | int SetExternalDacMainVolume(int); |
111 | int SetInternalDacMainVolume(int); |
112 | int SetExternalDacSupperBassVolume(int); |
113 | int SetExternalDacEQ(int); |
114 | int LoadExternalDacLib(); |
115 | int SendCmdToOffBoardCustomerLibExternalDac(int, int); |
116 | int SendCmdToOffBoardFBCExternalDac(int, int); |
117 | int HandleDigitalVolume(int, int); |
118 | int HandleDigitalMute(int); |
119 | int SetDigitalMainVolume(int); |
120 | int SetDigitalMute(int); |
121 | // |
122 | //mem |
123 | struct mixer *mpMixer; |
124 | struct mixer *mpUsbMixer; |
125 | volatile int mMainVolumeBalanceVal; |
126 | volatile int mMainVolumeGainVal; |
127 | volatile int mSupperBassVolumeGainVal; |
128 | int mMainDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; |
129 | int mSupperBassDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; |
130 | }; |
131 | #endif //__TV_AUDIO_ALSA_H__ |
132 |