summaryrefslogtreecommitdiff
path: root/tvapi/libtv/audio/audio_alsa.h (plain)
blob: 1a0f1e9583abb1972b486bc9e620032222cabecb
1#ifndef __TV_AUDIO_ALSA_H__
2#define __TV_AUDIO_ALSA_H__
3
4enum CC_AUD_I2S_MUTE {
5 CC_I2S_MUTE_OFF,
6 CC_I2S_MUTE_ON,
7};
8
9enum CC_AUD_SPDIF_MUTE {
10 CC_SPDIF_MUTE_OFF,
11 CC_SPDIF_MUTE_ON,
12};
13
14enum 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
35static const int CC_AUDIO_MUTE = 1;
36static const int CC_AUDIO_UNMUTE = 0;
37
38enum 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
48class CAudioAlsa {
49public:
50 CAudioAlsa();
51 ~CAudioAlsa();
52 int SetAudioInSource(int source_type);
53 int GetAudioInSource(void);
54 int SetInternalDacLineInSelectChannel(int line_in_number);
55 int SetInternalDacLineInCaptureVolume(int l_vol, int r_vol);
56 int GetInternalDacLineInCaptureVolume(int vol_buf[]);
57 int SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol);
58 int GetInternalDacLineOutPlayBackVolume(int vol_buf[]);
59 int SetExternalDacChannelSwitch(int chan_ind, int switch_val);
60 int SetExternalDacChannelVolume(int chan_ind, int main_vol);
61 int SetExternalDacEQMode(int mode_val);
62 int SetI2SMute(int mute_status);
63 int SetSPDIFMute(int mute_status);
64 int SetHardwareResample(int sr);
65 int SetAudioSwitchIO(int value);
66 int SetAudioPcmPlaybackVolume(int val);
67 int SetAudioPcmPlaybackSwitch(int vol);
68
69 int SetOutput_Swap(int value);
70
71
72 int SetMixerBypassSwitch(int switch_val);
73 int GetMixerBypassSwitch(void);
74 int SetMixerDacSwitch(int switch_val);
75 int GetMixerDacSwitch(void);
76 //dac
77 void SetMainVolDigitLutBuf(int digit_lut_buf[]);
78 void SetSupperBassVolDigitLutBuf(int digit_lut_buf[]);
79 int SetDacMute(int mute_state, int mute_type);
80 int SetDacMainVolume(int main_vol);
81 int SetDacSupperBassVolume(int tmp_vol);
82 int SetDacEQMode(int mode_val);
83 int SetBalanceValue(int balance_val);
84 int GetBalanceValue();
85 int SetMainVolumeGain(int gain_val);
86 int GetMainVolumeGain();
87 int SetSupperBassVolumeGain(int gain_val);
88 int GetSupperBassVolumeGain();
89 int SetDacAudioSourceType(int source_type);
90 //end dac
91private:
92 int get_aml_card();
93 int AudioControlSetValue(int val_count, int data_buf[], char *match_names);
94 int AudioControlGetValue(int val_count, int ret_buf[], char *match_names);
95 int get_USB_Audio_card();
96 int HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names);
97 int CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, int hd_max);
98 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);
99 int GetLineInMaxVol();
100 int GetLineOutMaxVol();
101 char *GetAlsaControlName(int get_type);
102 //
103 int TransVolumeBarVolToDigitalVol(int *, int, int, int, int, int);
104 int TransDigitalVolToVolumeBarVol(int *, int, int, int, int, int);
105 int CalculateBalanceVol(int, int, int *);
106 int SetExternalDacMute(int);
107 int SetInternalDacMute(int);
108 int setAudioPcmPlaybackMute(int);
109 int SetExternalDacMainVolume(int);
110 int SetInternalDacMainVolume(int);
111 int SetExternalDacSupperBassVolume(int);
112 int SetExternalDacEQ(int);
113 int LoadExternalDacLib();
114 int SendCmdToOffBoardCustomerLibExternalDac(int, int);
115 int SendCmdToOffBoardFBCExternalDac(int, int);
116 int HandleDigitalVolume(int, int);
117 int HandleDigitalMute(int);
118 int SetDigitalMainVolume(int);
119 int SetDigitalMute(int);
120 //
121 //mem
122 struct mixer *mpMixer;
123 struct mixer *mpUsbMixer;
124 volatile int mMainVolumeBalanceVal;
125 volatile int mMainVolumeGainVal;
126 volatile int mSupperBassVolumeGainVal;
127 int mMainDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE];
128 int mSupperBassDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE];
129};
130#endif //__TV_AUDIO_ALSA_H__
131