Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(582)

Side by Side Diff: webrtc/ortc/testrtpparameters.cc

Issue 2675173003: Adding "adapter" ORTC objects on top of ChannelManager/BaseChannel/etc. (Closed)
Patch Set: More sender/receiver tests. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "webrtc/ortc/testrtpparameters.h"
12
13 #include <algorithm>
14 #include <utility>
15
16 namespace webrtc {
17
18 RtpParameters MakeMinimalOpusParameters() {
19 RtpParameters parameters;
20 RtpCodecParameters opus_codec;
21 opus_codec.name = "opus";
22 opus_codec.kind = cricket::MEDIA_TYPE_AUDIO;
23 opus_codec.payload_type = 111;
24 opus_codec.clock_rate.emplace(48000);
25 opus_codec.num_channels.emplace(2);
26 parameters.codecs.push_back(std::move(opus_codec));
27 RtpEncodingParameters encoding;
28 encoding.codec_payload_type.emplace(111);
29 parameters.encodings.push_back(std::move(encoding));
30 return parameters;
31 }
32
33 RtpParameters MakeMinimalIsacParameters() {
34 RtpParameters parameters;
35 RtpCodecParameters isac_codec;
36 isac_codec.name = "ISAC";
37 isac_codec.kind = cricket::MEDIA_TYPE_AUDIO;
38 isac_codec.payload_type = 103;
39 isac_codec.clock_rate.emplace(16000);
40 parameters.codecs.push_back(std::move(isac_codec));
41 RtpEncodingParameters encoding;
42 encoding.codec_payload_type.emplace(111);
43 parameters.encodings.push_back(std::move(encoding));
44 return parameters;
45 }
46
47 RtpParameters MakeMinimalOpusParametersWithSsrc(uint32_t ssrc) {
48 RtpParameters parameters = MakeMinimalOpusParameters();
49 parameters.encodings[0].ssrc.emplace(ssrc);
50 return parameters;
51 }
52
53 RtpParameters MakeMinimalIsacParametersWithSsrc(uint32_t ssrc) {
54 RtpParameters parameters = MakeMinimalIsacParameters();
55 parameters.encodings[0].ssrc.emplace(ssrc);
56 return parameters;
57 }
58
59 RtpParameters MakeMinimalVideoParameters(const char* codec_name) {
60 RtpParameters parameters;
61 RtpCodecParameters vp8_codec;
62 vp8_codec.name = codec_name;
63 vp8_codec.kind = cricket::MEDIA_TYPE_VIDEO;
64 vp8_codec.payload_type = 96;
65 parameters.codecs.push_back(std::move(vp8_codec));
66 RtpEncodingParameters encoding;
67 encoding.codec_payload_type.emplace(96);
68 parameters.encodings.push_back(std::move(encoding));
69 return parameters;
70 }
71
72 RtpParameters MakeMinimalVp8Parameters() {
73 return MakeMinimalVideoParameters("VP8");
74 }
75
76 RtpParameters MakeMinimalVp9Parameters() {
77 return MakeMinimalVideoParameters("VP9");
78 }
79
80 RtpParameters MakeMinimalVp8ParametersWithSsrc(uint32_t ssrc) {
81 RtpParameters parameters = MakeMinimalVp8Parameters();
82 parameters.encodings[0].ssrc.emplace(ssrc);
83 return parameters;
84 }
85
86 RtpParameters MakeMinimalVp9ParametersWithSsrc(uint32_t ssrc) {
87 RtpParameters parameters = MakeMinimalVp9Parameters();
88 parameters.encodings[0].ssrc.emplace(ssrc);
89 return parameters;
90 }
91
92 RtpParameters MakeMinimalOpusParametersWithNoSsrc() {
93 RtpParameters parameters = MakeMinimalOpusParameters();
94 parameters.encodings[0].ssrc.reset();
95 return parameters;
96 }
97
98 RtpParameters MakeMinimalIsacParametersWithNoSsrc() {
99 RtpParameters parameters = MakeMinimalIsacParameters();
100 parameters.encodings[0].ssrc.reset();
101 return parameters;
102 }
103
104 RtpParameters MakeMinimalVp8ParametersWithNoSsrc() {
105 RtpParameters parameters = MakeMinimalVp8Parameters();
106 parameters.encodings[0].ssrc.reset();
107 return parameters;
108 }
109
110 RtpParameters MakeMinimalVp9ParametersWithNoSsrc() {
111 RtpParameters parameters = MakeMinimalVp9Parameters();
112 parameters.encodings[0].ssrc.reset();
113 return parameters;
114 }
115
116 // Make audio parameters with all the available properties configured and
117 // features used, and with multiple codecs offered. Obtained by taking a
118 // snapshot of a default PeerConnection offer (and adding other things, like
119 // bitrate limit).
120 //
121 // See "MakeFullOpusParameters"/"MakeFullIsacParameters" below.
122 RtpParameters MakeFullAudioParameters(int preferred_payload_type) {
123 RtpParameters parameters;
124
125 RtpCodecParameters opus_codec;
126 opus_codec.name = "opus";
127 opus_codec.kind = cricket::MEDIA_TYPE_AUDIO;
128 opus_codec.payload_type = 111;
129 opus_codec.clock_rate.emplace(48000);
130 opus_codec.num_channels.emplace(2);
131 opus_codec.parameters["minptime"] = "10";
132 opus_codec.parameters["useinbandfec"] = "1";
133 opus_codec.parameters["usedtx"] = "1";
134 opus_codec.parameters["stereo"] = "1";
135 opus_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
136 parameters.codecs.push_back(std::move(opus_codec));
137
138 RtpCodecParameters isac_codec;
139 isac_codec.name = "ISAC";
140 isac_codec.kind = cricket::MEDIA_TYPE_AUDIO;
141 isac_codec.payload_type = 103;
142 isac_codec.clock_rate.emplace(16000);
143 parameters.codecs.push_back(std::move(isac_codec));
144
145 RtpCodecParameters cn_codec;
146 cn_codec.name = "CN";
147 cn_codec.kind = cricket::MEDIA_TYPE_AUDIO;
148 cn_codec.payload_type = 106;
149 cn_codec.clock_rate.emplace(32000);
150 parameters.codecs.push_back(std::move(cn_codec));
151
152 RtpCodecParameters dtmf_codec;
153 dtmf_codec.name = "telephone-event";
154 dtmf_codec.kind = cricket::MEDIA_TYPE_AUDIO;
155 dtmf_codec.payload_type = 126;
156 dtmf_codec.clock_rate.emplace(8000);
157 parameters.codecs.push_back(std::move(dtmf_codec));
158
159 // "codec_payload_type" isn't implemented, so we need to reorder codecs to
160 // cause one to be used.
161 // TODO(deadbeef): Remove this when it becomes unnecessary.
162 std::sort(parameters.codecs.begin(), parameters.codecs.end(),
163 [preferred_payload_type](const RtpCodecParameters& a,
164 const RtpCodecParameters& b) {
165 return a.payload_type == preferred_payload_type;
166 });
167
168 // Intentionally leave out SSRC so one's chosen automatically.
169 RtpEncodingParameters encoding;
170 encoding.codec_payload_type.emplace(preferred_payload_type);
171 encoding.dtx.emplace(DtxStatus::ENABLED);
172 // 20 kbps.
173 encoding.max_bitrate_bps.emplace(20000);
174 parameters.encodings.push_back(std::move(encoding));
175
176 parameters.header_extensions.emplace_back(
177 "urn:ietf:params:rtp-hdrext:ssrc-audio-level", 1);
178 return parameters;
179 }
180
181 RtpParameters MakeFullOpusParameters() {
182 return MakeFullAudioParameters(111);
183 }
184
185 RtpParameters MakeFullIsacParameters() {
186 return MakeFullAudioParameters(103);
187 }
188
189 // Make video parameters with all the available properties configured and
190 // features used, and with multiple codecs offered. Obtained by taking a
191 // snapshot of a default PeerConnection offer (and adding other things, like
192 // bitrate limit).
193 //
194 // See "MakeFullVp8Parameters"/"MakeFullVp9Parameters" below.
195 RtpParameters MakeFullVideoParameters(int preferred_payload_type) {
196 RtpParameters parameters;
197
198 RtpCodecParameters vp8_codec;
199 vp8_codec.name = "VP8";
200 vp8_codec.kind = cricket::MEDIA_TYPE_VIDEO;
201 vp8_codec.payload_type = 100;
202 vp8_codec.clock_rate.emplace(90000);
203 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::CCM,
204 RtcpFeedbackMessageType::FIR);
205 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
206 RtcpFeedbackMessageType::GENERIC_NACK);
207 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
208 RtcpFeedbackMessageType::PLI);
209 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::REMB);
210 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
211 parameters.codecs.push_back(std::move(vp8_codec));
212
213 RtpCodecParameters vp8_rtx_codec;
214 vp8_rtx_codec.name = "rtx";
215 vp8_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
216 vp8_rtx_codec.payload_type = 96;
217 vp8_rtx_codec.clock_rate.emplace(90000);
218 vp8_rtx_codec.parameters["apt"] = "100";
219 parameters.codecs.push_back(std::move(vp8_rtx_codec));
220
221 RtpCodecParameters vp9_codec;
222 vp9_codec.name = "VP9";
223 vp9_codec.kind = cricket::MEDIA_TYPE_VIDEO;
224 vp9_codec.payload_type = 101;
225 vp9_codec.clock_rate.emplace(90000);
226 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::CCM,
227 RtcpFeedbackMessageType::FIR);
228 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
229 RtcpFeedbackMessageType::GENERIC_NACK);
230 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
231 RtcpFeedbackMessageType::PLI);
232 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::REMB);
233 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
234 parameters.codecs.push_back(std::move(vp9_codec));
235
236 RtpCodecParameters vp9_rtx_codec;
237 vp9_rtx_codec.name = "rtx";
238 vp9_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
239 vp9_rtx_codec.payload_type = 97;
240 vp9_rtx_codec.clock_rate.emplace(90000);
241 vp9_rtx_codec.parameters["apt"] = "101";
242 parameters.codecs.push_back(std::move(vp9_rtx_codec));
243
244 RtpCodecParameters red_codec;
245 red_codec.name = "red";
246 red_codec.kind = cricket::MEDIA_TYPE_VIDEO;
247 red_codec.payload_type = 116;
248 red_codec.clock_rate.emplace(90000);
249 parameters.codecs.push_back(std::move(red_codec));
250
251 RtpCodecParameters red_rtx_codec;
252 red_rtx_codec.name = "rtx";
253 red_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
254 red_rtx_codec.payload_type = 98;
255 red_rtx_codec.clock_rate.emplace(90000);
256 red_rtx_codec.parameters["apt"] = "116";
257 parameters.codecs.push_back(std::move(red_rtx_codec));
258
259 RtpCodecParameters ulpfec_codec;
260 ulpfec_codec.name = "ulpfec";
261 ulpfec_codec.kind = cricket::MEDIA_TYPE_VIDEO;
262 ulpfec_codec.payload_type = 117;
263 ulpfec_codec.clock_rate.emplace(90000);
264 parameters.codecs.push_back(std::move(ulpfec_codec));
265
266 // "codec_payload_type" isn't implemented, so we need to reorder codecs to
267 // cause one to be used.
268 // TODO(deadbeef): Remove this when it becomes unnecessary.
269 std::sort(parameters.codecs.begin(), parameters.codecs.end(),
270 [preferred_payload_type](const RtpCodecParameters& a,
271 const RtpCodecParameters& b) {
272 return a.payload_type == preferred_payload_type;
273 });
274
275 // Intentionally leave out SSRC so one's chosen automatically.
276 RtpEncodingParameters encoding;
277 encoding.codec_payload_type.emplace(preferred_payload_type);
278 encoding.fec.emplace(FecMechanism::RED_AND_ULPFEC);
279 // Will create default RtxParameters, with unset SSRC.
280 encoding.rtx.emplace();
281 // 100 kbps.
282 encoding.max_bitrate_bps.emplace(100000);
283 parameters.encodings.push_back(std::move(encoding));
284
285 parameters.header_extensions.emplace_back(
286 "urn:ietf:params:rtp-hdrext:toffset", 2);
287 parameters.header_extensions.emplace_back(
288 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time", 3);
289 parameters.header_extensions.emplace_back("urn:3gpp:video-orientation", 4);
290 parameters.header_extensions.emplace_back(
291 "http://www.ietf.org/id/"
292 "draft-holmer-rmcat-transport-wide-cc-extensions-01",
293 5);
294 parameters.header_extensions.emplace_back(
295 "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay", 6);
296 return parameters;
297 }
298
299 RtpParameters MakeFullVp8Parameters() {
300 return MakeFullVideoParameters(100);
301 }
302
303 RtpParameters MakeFullVp9Parameters() {
304 return MakeFullVideoParameters(101);
305 }
306
307 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698