Add support for enabling and negotiating raw RTP packetization.
Raw RTP packetization is done using the existing RtpPacketizerGeneric
without adding the generic payload header. It is intended to be used
together with generic frame descriptor RTP header extension.
Bug: webrtc:10625
Change-Id: I2e3d0a766e4933ddc4ad4abc1449b9b91ba6cd35
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138061
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28154}
diff --git a/sdk/media_constraints.cc b/sdk/media_constraints.cc
index 7c5fe4a..56d9e70 100644
--- a/sdk/media_constraints.cc
+++ b/sdk/media_constraints.cc
@@ -134,6 +134,9 @@
// TODO(ronghuawu): Remove once cpu overuse detection is stable.
const char MediaConstraints::kCpuOveruseDetection[] = "googCpuOveruseDetection";
+const char MediaConstraints::kRawPacketizationForVideoEnabled[] =
+ "googRawPacketizationForVideoEnabled";
+
const char MediaConstraints::kNumSimulcastLayers[] = "googNumSimulcastLayers";
// Set |value| to the value associated with the first appearance of |key|, or
@@ -262,6 +265,12 @@
offer_answer_options->ice_restart = value;
}
+ if (FindConstraint(constraints,
+ MediaConstraints::kRawPacketizationForVideoEnabled, &value,
+ &mandatory_constraints_satisfied)) {
+ offer_answer_options->raw_packetization_for_video = value;
+ }
+
int layers;
if (FindConstraint(constraints, MediaConstraints::kNumSimulcastLayers,
&layers, &mandatory_constraints_satisfied)) {
diff --git a/sdk/media_constraints.h b/sdk/media_constraints.h
index 3a15141..f3e9853 100644
--- a/sdk/media_constraints.h
+++ b/sdk/media_constraints.h
@@ -102,6 +102,10 @@
static const char kScreencastMinBitrate[]; // googScreencastMinBitrate
static const char kCpuOveruseDetection[]; // googCpuOveruseDetection
+ // Constraint to enable negotiating raw RTP packetization using attribute
+ // "a=packetization:<payload_type> raw" in the SDP for all video payload.
+ static const char kRawPacketizationForVideoEnabled[];
+
// Specifies number of simulcast layers for all video tracks
// with a Plan B offer/answer
// (see RTCOfferAnswerOptions::num_simulcast_layers).