summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--libTVaudio/audio/aml_audio.c16
-rw-r--r--libTVaudio/audio/android_out.cpp30
2 files changed, 30 insertions, 16 deletions
diff --git a/libTVaudio/audio/android_out.cpp b/libTVaudio/audio/android_out.cpp
index 23e7087..9e61156 100644
--- a/libTVaudio/audio/android_out.cpp
+++ b/libTVaudio/audio/android_out.cpp
@@ -206,13 +206,16 @@ static int RawAudioTrackInit(audio_format_t aformat,int sr)
int ret;
ALOGD("%s, entering...,aformat %x,sr %d\n", __FUNCTION__,aformat,sr);
//raw here
- gmpAudioTracker_raw = new AudioTrack();
- if (gmpAudioTracker_raw == NULL) {
- ALOGE("%s, new gmpAudioTracker_raw failed.\n", __FUNCTION__);
- return -1;
+ if (gmpAudioTracker_raw != NULL) {
+ gmpAudioTracker_raw = gmpAudioTracker_raw.get();
+ } else {
+ gmpAudioTracker_raw = new AudioTrack();
+ if (gmpAudioTracker_raw == NULL) {
+ ALOGE("%s, new gmpAudioTracker_raw failed.\n", __FUNCTION__);
+ return -1;
+ }
+ gmpAudioTracker_raw = gmpAudioTracker_raw.get();
}
- glpTracker_raw = gmpAudioTracker_raw.get();
-
Status = glpTracker_raw->set(AUDIO_STREAM_MUSIC, sr, aformat,
AUDIO_CHANNEL_OUT_STEREO, 0, (audio_output_flags_t)(AUDIO_OUTPUT_FLAG_DIRECT
| AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO)
@@ -254,13 +257,16 @@ static int AudioTrackInit(void) {
I2S_state = 0;
- gmpAudioTracker = new AudioTrack();
- if (gmpAudioTracker == NULL) {
- ALOGE("%s, new AudioTrack failed.\n", __FUNCTION__);
- return -1;
+ if (gmpAudioTracker != NULL) {
+ glpTracker = gmpAudioTracker.get();
+ } else {
+ gmpAudioTracker = new AudioTrack();
+ if (gmpAudioTracker == NULL) {
+ ALOGE("%s, new AudioTrack failed.\n", __FUNCTION__);
+ return -1;
+ }
+ glpTracker = gmpAudioTracker.get();
}
- glpTracker = gmpAudioTracker.get();
-
Status = glpTracker->set(AUDIO_STREAM_MUSIC, 48000, AUDIO_FORMAT_PCM_16_BIT,
AUDIO_CHANNEL_OUT_STEREO, 0, AUDIO_OUTPUT_FLAG_NONE,