summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <bilal.alsharifi@gmail.com>2021-01-05 15:22:32 -0500
committerBilal Alsharifi <bilal.alsharifi@gmail.com>2021-01-05 15:22:32 -0500
commitea004651cc7715fc37575d50877bdf5ec60352f9 (patch)
tree801b6b9c21dd98331039f8c762dc15ed7881b997
parent19c0144e2c68d699c6e485a876cf0c283410edf0 (diff)
downloadsdl_android-ea004651cc7715fc37575d50877bdf5ec60352f9.tar.gz
Refactor AudioDecoderCompat
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java20
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java10
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,