Add an OpenChannel method to MediaTransportInterface and call it whenever PeerConnection opens a new data channel.

This informs the media transport that PeerConnection wants to use a data channel
and gives it a chance to set up before the data channel sends the first message.

Bug: webrtc:9719
Change-Id: I6ea905a74b29b8735e77ac68bc8606e7bca77f18
Reviewed-on: https://webrtc-review.googlesource.com/c/124020
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26823}
diff --git a/api/media_transport_interface.h b/api/media_transport_interface.h
index 2f5431f..edbd3b1 100644
--- a/api/media_transport_interface.h
+++ b/api/media_transport_interface.h
@@ -278,6 +278,11 @@
   virtual void SetAllocatedBitrateLimits(
       const MediaTransportAllocatedBitrateLimits& limits);
 
+  // Opens a data |channel_id| for sending.  May return an error if the
+  // specified |channel_id| is unusable.  Must be called before |SendData|.
+  // TODO(mellem):  Make pure virtual when all implementations support it.
+  virtual RTCError OpenChannel(int channel_id);
+
   // Sends a data buffer to the remote endpoint using the given send parameters.
   // |buffer| may not be larger than 256 KiB. Returns an error if the send
   // fails.