blob: 298ab8fbfa30e56d0a0bcbb3c3a7ac7cb11c1d30
1 | #ifndef __TV_AUDIO_ANDROID_H__ |
2 | #define __TV_AUDIO_ANDROID_H__ |
3 | |
4 | #define CC_FLAG_CREATE_RECORD (0x0001) |
5 | #define CC_FLAG_CREATE_TRACK (0x0002) |
6 | #include "audio_alsa.h" |
7 | #include <media/AudioRecord.h> |
8 | #include <media/AudioTrack.h> |
9 | |
10 | using namespace android; |
11 | |
12 | |
13 | class CAndroidAudio { |
14 | public: |
15 | CAndroidAudio(CAudioAlsa *); |
16 | ~CAndroidAudio(); |
17 | int amAndroidInit(int tm_sleep, int init_flag, int recordSr, int trackSr, |
18 | bool enable_noise_gat); |
19 | int amAndroidUninit(int tm_sleep); |
20 | int amAndroidSetRecorderSr(int sr); |
21 | int amAndroidSetTrackerSr(int sr); |
22 | int amAndroidSetDumpDataFlag(int tmp_flag); |
23 | int amAndroidGetDumpDataFlag(); |
24 | void amAndroidSetNoiseGateThreshold(int thresh); |
25 | void reset_system_framesize(int input_sample_rate, int output_sample_rate); |
26 | |
27 | private: |
28 | void DoDumpData(void *data_buf, int size); |
29 | void noise_filter_init(); |
30 | int noise_filter_left(int); |
31 | int noise_filter_right(int); |
32 | void DeleteAudioRecorder(); |
33 | void FreeAudioRecorder(); |
34 | void DeleteAudioTracker(); |
35 | void FreeAudioTracker(); |
36 | int InitTempBuffer(); |
37 | void FreeTempBuffer(); |
38 | void ResetRecordWritePointer(); |
39 | void ResetPlaybackReadPointer(); |
40 | void ResetPointer(); |
41 | short int clip(int); |
42 | int upsample(short int *, short int *, unsigned int, unsigned int, unsigned int); |
43 | int downsample(short int *, short int *, unsigned int, unsigned int, unsigned int); |
44 | int GetWriteSpace(volatile short int *, volatile short int *); |
45 | int GetReadSpace(volatile short int *, volatile short int *); |
46 | void recorderCallback(int, void *, void *); |
47 | void trackerCallback(int, void *, void *); |
48 | int initAudioTracker(int); |
49 | int initAudioRecorder(int); |
50 | |
51 | CAudioAlsa *mpAudioAlsa; |
52 | int mDumpDataFlag; |
53 | int mDumpDataFd; |
54 | AudioRecord *mlpRecorder; |
55 | AudioTrack *mlpTracker; |
56 | |
57 | #if ANDROID_PLATFORM_SDK_VERSION >= 19 |
58 | sp<AudioTrack> mmpAudioTracker; |
59 | sp<AudioRecord> mmpAudioRecorder; |
60 | #endif |
61 | |
62 | short *temp_buffer; |
63 | short *end_temp_buffer; |
64 | short volatile *record_write_pointer; |
65 | short volatile *playback_read_pointer; |
66 | |
67 | /////////////////////////////////////////////////////////////////////////////// |
68 | // Helpers for the noise gate. |
69 | bool gEnableNoiseGate; |
70 | bool gUserSetEnableNoiseGate; |
71 | unsigned zero_count_left; |
72 | unsigned zero_count_right; |
73 | unsigned NOISE_HIS; |
74 | signed gNoiseGateThresh; |
75 | }; |
76 | |
77 | |
78 | #endif //__TV_AUDIO_ANDROID_H__ |
79 |