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