diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 3658e8a..203af2f 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -3999,7 +3999,7 @@
         patchTrack->setPeerProxy(patchRecord, true /* holdReference */);
         patchRecord->setPeerProxy(patchTrack, false /* holdReference */);
     }
-    track->setTeePatchesToUpdate(&teePatches);  // TODO(b/288339104) void* to std::move()
+    track->setTeePatchesToUpdate(std::move(teePatches));
 }
 
 sp<audioflinger::SyncEvent> AudioFlinger::createSyncEvent(AudioSystem::sync_event_t type,
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 6d7b560..9bc0ff9 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -582,13 +582,6 @@
     // Requests media.log to start merging log buffers
     void requestLogMerge();
 
-    // TODO(b/288339104) replace these forward declaration classes with interfaces.
-private:
-    struct TeePatch;
-public:
-    using TeePatches = std::vector<TeePatch>;
-private:
-
     // Find io handle by session id.
     // Preference is given to an io handle with a matching effect chain to session id.
     // If none found, AUDIO_IO_HANDLE_NONE is returned.
@@ -722,11 +715,6 @@
                         audio_io_handle_t upStream, const String8& keyValuePairs,
             const std::function<bool(const sp<IAfPlaybackThread>&)>& useThread = nullptr);
 
-    struct TeePatch {
-        sp<IAfPatchRecord> patchRecord;
-        sp<IAfPatchTrack> patchTrack;
-    };
-
     // for mAudioSessionRefs only
     struct AudioSessionRef {
         AudioSessionRef(audio_session_t sessionid, pid_t pid, uid_t uid) :
diff --git a/services/audioflinger/IAfTrack.h b/services/audioflinger/IAfTrack.h
index 9107dab..35338fa 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:
@@ -313,9 +322,8 @@
     // This function should be called with holding thread lock.
     virtual void updateTeePatches() = 0;
 
-    // TODO(b/288339104) type
-    virtual void setTeePatchesToUpdate(
-            const void* teePatchesToUpdate /* TeePatches& teePatchesToUpdate */) = 0;
+    // Argument teePatchesToUpdate is by value, use std::move to optimize.
+    virtual void setTeePatchesToUpdate(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;
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 666fea6..de6fc32 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -189,11 +189,7 @@
 
             // This function should be called with holding thread lock.
     void updateTeePatches() final;
-    void setTeePatchesToUpdate(const void* teePatchesToUpdate) final {
-        setTeePatchesToUpdate(  // TODO(b/288339104) void*
-                *reinterpret_cast<const AudioFlinger::TeePatches*>(teePatchesToUpdate));
-    }
-    void setTeePatchesToUpdate(AudioFlinger::TeePatches teePatchesToUpdate);
+    void setTeePatchesToUpdate(TeePatches teePatchesToUpdate) final;
 
     void tallyUnderrunFrames(size_t frames) final {
        if (isOut()) { // we expect this from output tracks only
@@ -388,8 +384,8 @@
     bool                mFlushHwPending; // track requests for thread flush
     bool                mPauseHwPending = false; // direct/offload track request for thread pause
     audio_output_flags_t mFlags;
-    AudioFlinger::TeePatches  mTeePatches;
-    std::optional<AudioFlinger::TeePatches> mTeePatchesToUpdate;
+    TeePatches mTeePatches;
+    std::optional<TeePatches> mTeePatchesToUpdate;
     const float         mSpeed;
     const bool          mIsSpatialized;
     const bool          mIsBitPerfect;
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 7d099e1..bd4804c 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -1617,7 +1617,7 @@
     }
 }
 
-void Track::setTeePatchesToUpdate(AudioFlinger::TeePatches teePatchesToUpdate) {
+void Track::setTeePatchesToUpdate(TeePatches teePatchesToUpdate) {
     ALOGW_IF(mTeePatchesToUpdate.has_value(),
              "%s, existing tee patches to update will be ignored", __func__);
     mTeePatchesToUpdate = std::move(teePatchesToUpdate);
