AudioFlinger: Add more Thread interfaces

Add interfaces

IAfDirectOutputThread
IAfDuplicatingThread
IAfRecordThread

Test: atest audiorecord_tests audiotrack_tests audiorouting_tests trackplayerbase_tests audiosystem_tests
Test: atest AudioTrackTest AudioRecordTest
Test: YouTube Camera
Bug: 288339104
Bug: 289233517
Merged-In: Ibd46b7de4c4264294b645d0df2a69825513a1426
Change-Id: Ibd46b7de4c4264294b645d0df2a69825513a1426
diff --git a/services/audioflinger/IAfTrack.h b/services/audioflinger/IAfTrack.h
index 4718474..9ca13ca 100644
--- a/services/audioflinger/IAfTrack.h
+++ b/services/audioflinger/IAfTrack.h
@@ -18,6 +18,11 @@
 
 namespace android {
 
+class IAfDuplicatingThread;
+class IAfPlaybackThread;
+class IAfRecordThread;
+class IAfThreadBase;
+
 // Common interface to all Playback and Record tracks.
 class IAfTrackBase : public virtual RefBase {
 public:
@@ -97,8 +102,7 @@
     virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer) = 0;
 
     // Added for RecordTrack and OutputTrack
-    // TODO(b/288339104) type
-    virtual wp<Thread> thread() const = 0;
+    virtual wp<IAfThreadBase> thread() const = 0;
     virtual const sp<ServerProxy>& serverProxy() const = 0;
 
     // TEE_SINK
@@ -233,8 +237,8 @@
     // Only one AIDL IAudioTrack interface adapter should be created per Track.
     static sp<media::IAudioTrack> createIAudioTrackAdapter(const sp<IAfTrack>& track);
 
-    static sp<IAfTrack> create( // TODO(b/288339104) void*
-            void* /* AudioFlinger::PlaybackThread */ thread,
+    static sp<IAfTrack> create(
+            IAfPlaybackThread* thread,
             const sp<Client>& client,
             audio_stream_type_t streamType,
             const audio_attributes_t& attr,
@@ -399,8 +403,8 @@
 public:
     // TODO(b/288339104) void*
     static sp<IAfOutputTrack> create(
-            void* /* AudioFlinger::PlaybackThread */ playbackThread,
-            void* /* AudioFlinger::DuplicatingThread */ sourceThread, uint32_t sampleRate,
+            IAfPlaybackThread* playbackThread,
+            IAfDuplicatingThread* sourceThread, uint32_t sampleRate,
             audio_format_t format, audio_channel_mask_t channelMask, size_t frameCount,
             const AttributionSourceState& attributionSource);
 
@@ -417,7 +421,7 @@
 class IAfMmapTrack : public virtual IAfTrackBase {
 public:
     // TODO(b/288339104) void*
-    static sp<IAfMmapTrack> create(void* /*AudioFlinger::ThreadBase */ thread,
+    static sp<IAfMmapTrack> create(IAfThreadBase* thread,
             const audio_attributes_t& attr,
             uint32_t sampleRate,
             audio_format_t format,
@@ -455,7 +459,7 @@
     static sp<media::IAudioRecord> createIAudioRecordAdapter(const sp<IAfRecordTrack>& recordTrack);
 
     // TODO(b/288339104) void*
-    static sp<IAfRecordTrack> create(void* /* AudioFlinger::RecordThread */ thread,
+    static sp<IAfRecordTrack> create(IAfRecordThread* thread,
             const sp<Client>& client,
             const audio_attributes_t& attr,
             uint32_t sampleRate,
@@ -533,7 +537,7 @@
 class IAfPatchTrack : public virtual IAfTrack, public virtual IAfPatchTrackBase {
 public:
     static sp<IAfPatchTrack> create(
-            void * /* PlaybackThread */ playbackThread, // TODO(b/288339104)
+            IAfPlaybackThread* playbackThread,
             audio_stream_type_t streamType,
             uint32_t sampleRate,
             audio_channel_mask_t channelMask,
@@ -552,7 +556,7 @@
 class IAfPatchRecord : public virtual IAfRecordTrack, public virtual IAfPatchTrackBase {
 public:
     static sp<IAfPatchRecord> create(
-            void* /* RecordThread */ recordThread, // TODO(b/288339104)
+            IAfRecordThread* recordThread,
             uint32_t sampleRate,
             audio_channel_mask_t channelMask,
             audio_format_t format,
@@ -564,7 +568,7 @@
             audio_source_t source = AUDIO_SOURCE_DEFAULT);
 
     static sp<IAfPatchRecord> createPassThru(
-            void* /* RecordThread */ recordThread, // TODO(b/288339104)
+            IAfRecordThread* recordThread,
             uint32_t sampleRate,
             audio_channel_mask_t channelMask,
             audio_format_t format,