diff options
author | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2021-01-05 15:22:32 -0500 |
---|---|---|
committer | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2021-01-05 15:22:32 -0500 |
commit | ea004651cc7715fc37575d50877bdf5ec60352f9 (patch) | |
tree | 801b6b9c21dd98331039f8c762dc15ed7881b997 | |
parent | 19c0144e2c68d699c6e485a876cf0c283410edf0 (diff) | |
download | sdl_android-ea004651cc7715fc37575d50877bdf5ec60352f9.tar.gz |
Refactor AudioDecoderCompat
2 files changed, 16 insertions, 14 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java index 07539bbfb..6a69f84ba 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java @@ -37,8 +37,6 @@ import android.net.Uri; import androidx.annotation.NonNull; import com.livio.taskmaster.Queue; -import com.livio.taskmaster.Taskmaster; -import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.audio.AudioStreamManager.SampleType; import java.lang.ref.WeakReference; @@ -48,21 +46,21 @@ import java.lang.ref.WeakReference; * This decoder supports phones with api < 21 but uses methods deprecated with api 21. */ public class AudioDecoderCompat extends BaseAudioDecoder { - private WeakReference<ISdl> internalInterface; + private WeakReference<Queue> transactionQueue; /** * Creates a new object of AudioDecoder. * - * @param internalInterface The internal interface to the connected device. + * @param transactionQueue The operation queue that can be used to run operations in order. * @param audioSource The audio source to decode. * @param context The context object to use to open the audio source. * @param sampleRate The desired sample rate for decoded audio data. * @param sampleType The desired sample type (8bit, 16bit, float). * @param listener A listener who receives the decoded audio. */ - AudioDecoderCompat(@NonNull ISdl internalInterface, @NonNull Uri audioSource, @NonNull Context context, int sampleRate, @SampleType int sampleType, AudioDecoderListener listener) { + AudioDecoderCompat(@NonNull Queue transactionQueue, @NonNull Uri audioSource, @NonNull Context context, int sampleRate, @SampleType int sampleType, AudioDecoderListener listener) { super(audioSource, context, sampleRate, sampleType, listener); - this.internalInterface = new WeakReference<>(internalInterface); + this.transactionQueue = new WeakReference<>(transactionQueue); } /** @@ -73,13 +71,9 @@ public class AudioDecoderCompat extends BaseAudioDecoder { initMediaComponents(); decoder.start(); - if (internalInterface != null && internalInterface.get() != null) { - Taskmaster taskmaster = internalInterface.get().getTaskmaster(); - if (taskmaster != null) { - Queue transactionQueue = taskmaster.createQueue("AudioDecoderCompat", 6, false); - AudioDecoderCompatOperation operation = new AudioDecoderCompatOperation(this); - transactionQueue.add(operation, false); - } + if (transactionQueue != null && transactionQueue.get() != null) { + AudioDecoderCompatOperation operation = new AudioDecoderCompatOperation(this); + transactionQueue.get().add(operation, false); } } catch (Exception e) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java index 224c9768c..667522372 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java @@ -101,6 +101,7 @@ public class AudioStreamManager extends BaseAudioStreamManager { private StreamPacketizer audioPacketizer;
private SdlSession sdlSession = null;
private SessionType sessionType = null;
+ private com.livio.taskmaster.Queue transactionQueue;
private final Runnable serviceCompletionTimeoutCallback = new Runnable() {
@Override
@@ -437,7 +438,7 @@ public class AudioStreamManager extends BaseAudioStreamManager { decoder = new AudioDecoder(audioSource, context.get(), sdlSampleRate, sdlSampleType, decoderListener);
} else {
// this BaseAudioDecoder subclass uses methods deprecated with api 21
- decoder = new AudioDecoderCompat(internalInterface, audioSource, context.get(), sdlSampleRate, sdlSampleType, decoderListener);
+ decoder = new AudioDecoderCompat(getTransactionQueue(), audioSource, context.get(), sdlSampleRate, sdlSampleType, decoderListener);
}
synchronized (queue) {
@@ -449,6 +450,13 @@ public class AudioStreamManager extends BaseAudioStreamManager { }
}
+ private com.livio.taskmaster.Queue getTransactionQueue() {
+ if (transactionQueue == null && internalInterface != null && internalInterface.getTaskmaster() != null) {
+ transactionQueue = internalInterface.getTaskmaster().createQueue("AudioDecoderCompat", 6, false);
+ }
+ return transactionQueue;
+ }
+
/**
* Pushes raw audio data to SDL Core.
* The audio file will be played immediately. If another audio file is currently playing,
|