AudioFlinger: Extract TeePatch

Test: atest audiorecord_tests audiotrack_tests audiorouting_tests trackplayerbase_tests audiosystem_tests
Test: atest AAudioTests AudioTrackOffloadTest
Test: atest AudioTrackTest AudioRecordTest
Test: YouTube Camera
Bug: 288339104
Merged-In: I88576005a266fd6beeabec873a2d531a65dcf9fd
Change-Id: I88576005a266fd6beeabec873a2d531a65dcf9fd
diff --git a/services/audioflinger/IAfTrack.h b/services/audioflinger/IAfTrack.h
index 9ca13ca..cac8e40 100644
--- a/services/audioflinger/IAfTrack.h
+++ b/services/audioflinger/IAfTrack.h
@@ -19,10 +19,19 @@
 namespace android {
 
 class IAfDuplicatingThread;
+class IAfPatchRecord;
+class IAfPatchTrack;
 class IAfPlaybackThread;
 class IAfRecordThread;
 class IAfThreadBase;
 
+struct TeePatch {
+    sp<IAfPatchRecord> patchRecord;
+    sp<IAfPatchTrack> patchTrack;
+};
+
+using TeePatches = std::vector<TeePatch>;
+
 // Common interface to all Playback and Record tracks.
 class IAfTrackBase : public virtual RefBase {
 public:
@@ -325,9 +334,8 @@
     // This function should be called with holding thread lock.
     virtual void updateTeePatches_l() = 0;
 
-    // TODO(b/288339104) type
-    virtual void setTeePatchesToUpdate_l(
-            const void* teePatchesToUpdate /* TeePatches& teePatchesToUpdate */) = 0;
+    // Argument teePatchesToUpdate is by value, use std::move to optimize.
+    virtual void setTeePatchesToUpdate_l(TeePatches teePatchesToUpdate) = 0;
 
     static bool checkServerLatencySupported(audio_format_t format, audio_output_flags_t flags) {
         return audio_is_linear_pcm(format) && (flags & AUDIO_OUTPUT_FLAG_HW_AV_SYNC) == 0;