Add support for send_encodings parameters in addTransceiver

This will later allow simulcast to be set up without any SDP
manipulation. Currently limited to only one layer as the SDP
generated is not spec compliant and more work is required
to support simulcast.

Initial encoding parameters are deferred and applied when the ssrc
is set on the sender. This allows parameters to be changed before
negotiation is completed.

Bug: webrtc:7600
Change-Id: I0a31cd1c2bfc72ebb61ce0fa4fa69d87e3d8b74d
Reviewed-on: https://webrtc-review.googlesource.com/95488
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24917}
diff --git a/api/rtpsenderinterface.h b/api/rtpsenderinterface.h
index 96c2669..9554c1c 100644
--- a/api/rtpsenderinterface.h
+++ b/api/rtpsenderinterface.h
@@ -55,6 +55,12 @@
   // tracks.
   virtual std::vector<std::string> stream_ids() const = 0;
 
+  // Returns the list of encoding parameters that will be applied when the SDP
+  // local description is set. These initial encoding parameters can be set by
+  // PeerConnection::AddTransceiver, and later updated with Get/SetParameters.
+  // TODO(orphis): Make it pure virtual once Chrome has updated
+  virtual std::vector<RtpEncodingParameters> init_send_encodings() const;
+
   virtual RtpParameters GetParameters() = 0;
   // Note that only a subset of the parameters can currently be changed. See
   // rtpparameters.h
@@ -90,6 +96,7 @@
 PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
 PROXY_CONSTMETHOD0(std::string, id)
 PROXY_CONSTMETHOD0(std::vector<std::string>, stream_ids)
+PROXY_CONSTMETHOD0(std::vector<RtpEncodingParameters>, init_send_encodings)
 PROXY_METHOD0(RtpParameters, GetParameters);
 PROXY_METHOD1(RTCError, SetParameters, const RtpParameters&)
 PROXY_CONSTMETHOD0(rtc::scoped_refptr<DtmfSenderInterface>, GetDtmfSender);