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