Add Sender and Receiver interfaces for MediaTransport audio

Implement in LoopbackMediaTransport.

Bug: webrtc:9719
Change-Id: I429ac3f78d99b8ea4f9ac85b9a3600b215b61a55
Reviewed-on: https://webrtc-review.googlesource.com/c/121957
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26731}
diff --git a/api/media_transport_interface.h b/api/media_transport_interface.h
index 2f5431f..e753ddc 100644
--- a/api/media_transport_interface.h
+++ b/api/media_transport_interface.h
@@ -187,10 +187,28 @@
   MediaTransportInterface();
   virtual ~MediaTransportInterface();
 
+  // Creates an object representing the send end-point of a audio stream using
+  // this transport.
+  // TODO(bugs.webrtc.org/9719): Make pure virtual after downstream
+  // implementations are updated.
+  virtual std::unique_ptr<MediaTransportAudioSender> CreateAudioSender(
+      uint64_t channel_id);
+
+  // Creates an object representing the receive end-point of a audio stream
+  // using this transport.
+  // TODO(bugs.webrtc.org/9719): Make pure virtual after downstream
+  // implementations are updated.
+  virtual std::unique_ptr<MediaTransportAudioReceiver> CreateAudioReceiver(
+      uint64_t channel_id,
+      // TODO(nisse): Add Rtt observer, or route that via Call to the receive
+      // stream instead?
+      MediaTransportAudioSinkInterface* sink);
+
   // Start asynchronous send of audio frame. The status returned by this method
   // only pertains to the synchronous operations (e.g.
   // serialization/packetization), not to the asynchronous operation.
-
+  // TODO(nisse): Deprecated, should be deleted when implementations are updated
+  // to use CreateAudioSender.
   virtual RTCError SendAudioFrame(uint64_t channel_id,
                                   MediaTransportEncodedAudioFrame frame) = 0;