summaryrefslogtreecommitdiff
path: root/libTVaudio/audio/audio_amaudio.cpp (plain)
blob: a2119cb70a712dff9911e94194b31d8aa56e1d3b
1#define LOG_TAG "LibAudioCtl"
2
3#include <stdbool.h>
4#include <stdio.h>
5#include <string.h>
6#include <stdlib.h>
7#include <stdint.h>
8#include <signal.h>
9#include <pthread.h>
10#include <unistd.h>
11#include <math.h>
12#include <fcntl.h>
13#include <sys/mman.h>
14#include <sys/ioctl.h>
15#include <sys/stat.h>
16#include <dlfcn.h>
17
18#include <cutils/log.h>
19#include <cutils/properties.h>
20#include <tinyalsa/asoundlib.h>
21#include <hardware/audio.h>
22
23#include "audio_usb_check.h"
24#include "audio_effect_control.h"
25#include "../audio_amaudio.h"
26#include "../../audio_virtual_effect.h"
27
28int amSetAudioDelay(int delay_ms) {
29 return set_audio_delay(delay_ms);
30}
31
32int amGetAudioDelay(void) {
33 return get_audio_delay();
34}
35
36int amAudioOpen(unsigned int sr, int input_device, int output_device) {
37 int ret;
38 ret = aml_audio_open(sr, input_device, output_device);
39 return ret;
40}
41
42int amAudioClose(void) {
43 return aml_audio_close();
44}
45
46int amAudioSetInputSr(unsigned int sr, int input_device, int output_device) {
47 int tmpRet = 0;
48
49 if (check_input_stream_sr(sr) < 0) {
50 ALOGE("%s, The sample rate (%u) is invalid!\n", __FUNCTION__, sr);
51 return -1;
52 }
53
54 tmpRet |= amAudioClose();
55 tmpRet |= amAudioOpen(sr, input_device, output_device);
56
57 return tmpRet;
58}
59
60int amAudioSetDumpDataFlag(int tmp_flag) {
61 return SetDumpDataFlag(tmp_flag);
62}
63
64int amAudioGetDumpDataFlag() {
65 return GetDumpDataFlag();
66}
67
68int amAudioSetOutputMode(int mode) {
69 return set_output_mode(mode);
70}
71
72int amAudioSetMusicGain(int gain) {
73 return set_music_gain(gain);
74}
75
76int amAudioSetLeftGain(int gain) {
77 return set_left_gain(gain);
78}
79
80int amAudioSetRightGain(int gain) {
81 return set_right_gain(gain);
82}
83
84int eq_gain_buf[5] = {0,0,0,0,0};
85int amAudioSetEQGain(int gain_val_buf[], int buf_item_cnt __unused) {
86 int i = 0, ret = 0;
87 int tmp_buf[5] = { 0, 0, 0, 0, 0};
88
89 for (i = 0; i < 5; i++) {
90 tmp_buf[i] = gain_val_buf[i];
91 eq_gain_buf[i] = gain_val_buf[i];
92 }
93
94 HPEQ_setParameter(tmp_buf[0], tmp_buf[1], tmp_buf[2], tmp_buf[3],
95 tmp_buf[4]);
96
97 char param[15];
98 char parm_key[] = AUDIO_PARAMETER_STREAM_EQ;
99 sprintf(param, "%02d%02d%02d%02d%02d", tmp_buf[0]+10, tmp_buf[1]+10,
100 tmp_buf[2]+10, tmp_buf[3]+10, tmp_buf[4]+10);
101
102 ret = set_parameters(param, parm_key);
103 //ALOGE("EQ param : %s\n", param);
104 return ret;
105}
106
107int amAudioGetEQGain(int gain_val_buf[], int buf_item_cnt __unused) {
108 int i = 0;
109 int tmp_buf[5] = { 0, 0, 0, 0, 0};
110
111 HPEQ_getParameter(tmp_buf);
112
113 for (i = 0; i < 5; i++) {
114 gain_val_buf[i] = tmp_buf[i];
115 }
116 return 0;
117}
118
119int amAudioSetEQEnable(int en_val) {
120 return HPEQ_enable(en_val);
121}
122
123int amAudioGetEQEnable() {
124 return 0;
125}
126
127#define CC_SET_TYPE_TRUBASS_SPEAKERSIZE (0)
128#define CC_SET_TYPE_TRUBASS_GAIN (1)
129#define CC_SET_TYPE_DIALOGCLARITY_GAIN (2)
130#define CC_SET_TYPE_DEFINITION_GAIN (3)
131#define CC_SET_TYPE_SURROUND_GAIN (4)
132#define CC_SET_TYPE_MAX (5)
133
134
135
136int srs_param_buf[5] = { 0, 0, 0, 0, 0};
137static int amAudioSetSRSParameter(int set_type, int gain_val) {
138 int ret = 0;
139
140 srs_param_buf[set_type] = gain_val;
141 ret = srs_setParameter(srs_param_buf);
142
143 char param[20];
144 char parm_key[] = AUDIO_PARAMETER_STREAM_SRS;
145
146 sprintf(param, "%03d%03d%03d%03d%03d", srs_param_buf[0],
147 srs_param_buf[1], srs_param_buf[2],
148 srs_param_buf[3], srs_param_buf[4]);
149 ret = set_parameters(param, parm_key);
150 return ret;
151}
152
153int amAudioSetSRSGain(int input_gain, int output_gain) {
154 int ret = 0;
155 ret = srs_set_gain(input_gain, output_gain);
156
157 char param[10];
158 char parm_key[] = AUDIO_PARAMETER_STREAM_SRS_GAIN;
159 sprintf(param, "%03d%03d", input_gain, output_gain);
160 ret = set_parameters(param, parm_key);
161
162 return ret;
163}
164
165#define CC_SET_SWITCH_SURROUND (0)
166#define CC_SET_SWITCH_DIALOGCLARITY (1)
167#define CC_SET_SWITCH_TRUBASS (2)
168int srs_switch[3]= {0, 0, 0};
169
170int amAudioSetSRSSurroundSwitch(int switch_val) {
171 int ret = 0;
172 ret = srs_surround_enable(switch_val);
173
174 srs_switch[CC_SET_SWITCH_SURROUND] = switch_val;
175 char param[10];
176 char parm_key[] = AUDIO_PARAMETER_STREAM_SRS_SWITCH;
177 sprintf(param, "%02d%02d%02d", srs_switch[0], srs_switch[1], srs_switch[2]);
178 ret = set_parameters(param, parm_key);
179
180 return ret;
181}
182
183int amAudioSetSRSDialogClaritySwitch(int switch_val) {
184 int ret = 0;
185 ret = srs_dialogclarity_enable(switch_val);
186
187 srs_switch[CC_SET_SWITCH_DIALOGCLARITY] = switch_val;
188 char param[10];
189 char parm_key[] = AUDIO_PARAMETER_STREAM_SRS_SWITCH;
190 sprintf(param, "%02d%02d%02d", srs_switch[0], srs_switch[1], srs_switch[2]);
191 ret = set_parameters(param, parm_key);
192
193 return ret;
194}
195
196int amAudioSetSRSTrubassSwitch(int switch_val) {
197 int ret = 0;
198 ret = srs_truebass_enable(switch_val);
199
200 srs_switch[CC_SET_SWITCH_TRUBASS] = switch_val;
201 char param[10];
202 char parm_key[] = AUDIO_PARAMETER_STREAM_SRS_SWITCH;
203 sprintf(param, "%02d%02d%02d", srs_switch[0], srs_switch[1], srs_switch[2]);
204 ret = set_parameters(param, parm_key);
205
206 return ret;
207}
208
209int amAudioSetSRSSurroundGain(int gain_val) {
210 return amAudioSetSRSParameter(CC_SET_TYPE_SURROUND_GAIN, gain_val);
211}
212
213int amAudioSetSRSTrubassGain(int gain_val) {
214 return amAudioSetSRSParameter(CC_SET_TYPE_TRUBASS_GAIN, gain_val);
215}
216
217int amAudioSetSRSDialogClarityGain(int gain_val) {
218 return amAudioSetSRSParameter(CC_SET_TYPE_DIALOGCLARITY_GAIN, gain_val);
219}
220
221int amAudioSetSRSDefinitionGain(int gain_val) {
222 return amAudioSetSRSParameter(CC_SET_TYPE_DEFINITION_GAIN, gain_val);
223}
224
225int amAudioSetSRSTrubassSpeakerSize(int tmp_val) {
226 return amAudioSetSRSParameter(CC_SET_TYPE_TRUBASS_SPEAKERSIZE, tmp_val);
227}
228
229int amAudioSetPreGain(float gain)
230{
231 return aml_audio_set_pregain(gain);
232}
233
234int amAudioGetPreGain(float *gain)
235{
236 return aml_audio_get_pregain(gain);
237}
238int amAudioSetPreMute(uint mute)
239{
240 return aml_audio_set_pre_mute(mute);
241}
242
243int amAudioGetPreMute(uint *mute)
244{
245 return aml_audio_get_pre_mute(mute);
246}
247int virtual_para_buf[2] = {0,0};
248int amAudioVirtualizer(int enable, int EffectLevel) {
249 int ret = 0;
250 char param[10];
251 virtual_para_buf[0] = enable;
252 virtual_para_buf[1] = EffectLevel;
253 char parm_key[] = "AML_VIRTUALIZER";
254 sprintf(param, "%03d%03d", enable, EffectLevel);
255 ret = set_parameters(param, parm_key);
256 Virtualizer_control(enable, EffectLevel);
257 return ret;
258}
259