Index: webrtc/ortc/rtpparametersconversion.h |
diff --git a/webrtc/ortc/rtpparametersconversion.h b/webrtc/ortc/rtpparametersconversion.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a1680a205a970edc43c24dabf672dca39e295ded |
--- /dev/null |
+++ b/webrtc/ortc/rtpparametersconversion.h |
@@ -0,0 +1,96 @@ |
+/* |
+ * Copyright 2017 The WebRTC project authors. All Rights Reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#ifndef WEBRTC_ORTC_RTPPARAMETERSCONVERSION_H_ |
+#define WEBRTC_ORTC_RTPPARAMETERSCONVERSION_H_ |
+ |
+#include <memory> |
+#include <vector> |
+ |
+#include "webrtc/api/rtcerror.h" |
+#include "webrtc/api/rtpparameters.h" |
+#include "webrtc/base/optional.h" |
+#include "webrtc/pc/mediasession.h" |
+#include "webrtc/media/base/codec.h" |
+ |
+namespace webrtc { |
+ |
+// NOTE: Some functions are templated for convenience, such that template-based |
+// code dealing with AudioContentDescription and VideoContentDescription can |
+// use this easily. Such methods are usable with cricket::AudioCodec and |
+// cricket::VideoCodec. |
+ |
+//*************************************************************************** |
+// Functions for converting from new webrtc:: structures to old cricket:: |
+// structures. |
+// |
+// As the return values imply, all of these functions do validation of the |
+// parameters and return an error if they're invalid. It's expected that any |
+// default values (such as video clock rate of 90000) have been filled by the |
+// time the webrtc:: structure is being converted to the cricket:: one. |
+// |
+// These are expected to be used when parameters are passed into an RtpSender |
+// or RtpReceiver, and need to be validated and converted so they can be |
+// applied to the media engine level. |
+//*************************************************************************** |
+ |
+// Returns error on invalid input. Certain message types are only valid for |
+// certain feedback types. |
+RTCErrorOr<cricket::FeedbackParam> ToCricketFeedbackParam( |
+ const RtcpFeedback& feedback); |
+ |
+// Verifies that the codec kind is correct, and it has mandatory parameters |
+// filled, with values in valid ranges. |
+template <typename C> |
+RTCErrorOr<C> ToCricketCodec(const RtpCodecParameters& codec); |
+ |
+// Verifies that payload types aren't duplicated, in addition to normal |
+// validation. |
+template <typename C> |
+RTCErrorOr<std::vector<C>> ToCricketCodecs( |
+ const std::vector<RtpCodecParameters>& codecs); |
+ |
+// Validates that header extension IDs aren't duplicated. |
+RTCErrorOr<cricket::RtpHeaderExtensions> ToCricketRtpHeaderExtensions( |
+ const std::vector<RtpHeaderExtensionParameters>& extensions); |
+ |
+// SSRCs are allowed to be ommitted. This may be used for receive parameters |
+// where SSRCs are unsignaled. |
+RTCErrorOr<cricket::StreamParamsVec> ToCricketStreamParamsVec( |
+ const std::vector<RtpEncodingParameters>& encodings); |
+ |
+//***************************************************************************** |
+// Functions for converting from old cricket:: structures to new webrtc:: |
+// structures. Unlike the above functions, these are permissive with regards to |
+// input validation; it's assumed that any necessary validation already |
+// occurred. |
+// |
+// These are expected to be used either to convert from audio/video engine |
+// capabilities to RtpCapabilities, or to convert from already-parsed SDP |
+// (in the form of cricket:: structures) to webrtc:: structures. The latter |
+// functionality is not yet implemented. |
+//***************************************************************************** |
+ |
+// Returns empty value if |cricket_feedback| is a feedback type not |
+// supported/recognized. |
+rtc::Optional<RtcpFeedback> ToRtcpFeedback( |
+ const cricket::FeedbackParam& cricket_feedback); |
+ |
+template <typename C> |
+RtpCodecCapability ToRtpCodecCapability(const C& cricket_codec); |
+ |
+template <class C> |
+RtpCapabilities ToRtpCapabilities( |
+ const std::vector<C>& cricket_codecs, |
+ const cricket::RtpHeaderExtensions& cricket_extensions); |
+ |
+} // namespace webrtc |
+ |
+#endif // WEBRTC_ORTC_RTPPARAMETERSCONVERSION_H_ |