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

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

Issue 2675173003: Adding "adapter" ORTC objects on top of ChannelManager/BaseChannel/etc. (Closed)
Patch Set: Add memcheck suppression for end-to-end tests. Created 3 years, 9 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
« no previous file with comments | « webrtc/ortc/testrtpparameters.h ('k') | webrtc/p2p/base/fakepackettransport.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Note: Currently, these "WithNoSsrc" methods are identical to the normal
93 // "MakeMinimal" methods, but with the added guarantee that they will never be
94 // changed to include an SSRC.
95
96 RtpParameters MakeMinimalOpusParametersWithNoSsrc() {
97 RtpParameters parameters = MakeMinimalOpusParameters();
98 RTC_DCHECK(!parameters.encodings[0].ssrc);
99 return parameters;
100 }
101
102 RtpParameters MakeMinimalIsacParametersWithNoSsrc() {
103 RtpParameters parameters = MakeMinimalIsacParameters();
104 RTC_DCHECK(!parameters.encodings[0].ssrc);
105 return parameters;
106 }
107
108 RtpParameters MakeMinimalVp8ParametersWithNoSsrc() {
109 RtpParameters parameters = MakeMinimalVp8Parameters();
110 RTC_DCHECK(!parameters.encodings[0].ssrc);
111 return parameters;
112 }
113
114 RtpParameters MakeMinimalVp9ParametersWithNoSsrc() {
115 RtpParameters parameters = MakeMinimalVp9Parameters();
116 RTC_DCHECK(!parameters.encodings[0].ssrc);
117 return parameters;
118 }
119
120 // Make audio parameters with all the available properties configured and
121 // features used, and with multiple codecs offered. Obtained by taking a
122 // snapshot of a default PeerConnection offer (and adding other things, like
123 // bitrate limit).
124 //
125 // See "MakeFullOpusParameters"/"MakeFullIsacParameters" below.
126 RtpParameters MakeFullAudioParameters(int preferred_payload_type) {
127 RtpParameters parameters;
128
129 RtpCodecParameters opus_codec;
130 opus_codec.name = "opus";
131 opus_codec.kind = cricket::MEDIA_TYPE_AUDIO;
132 opus_codec.payload_type = 111;
133 opus_codec.clock_rate.emplace(48000);
134 opus_codec.num_channels.emplace(2);
135 opus_codec.parameters["minptime"] = "10";
136 opus_codec.parameters["useinbandfec"] = "1";
137 opus_codec.parameters["usedtx"] = "1";
138 opus_codec.parameters["stereo"] = "1";
139 opus_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
140 parameters.codecs.push_back(std::move(opus_codec));
141
142 RtpCodecParameters isac_codec;
143 isac_codec.name = "ISAC";
144 isac_codec.kind = cricket::MEDIA_TYPE_AUDIO;
145 isac_codec.payload_type = 103;
146 isac_codec.clock_rate.emplace(16000);
147 parameters.codecs.push_back(std::move(isac_codec));
148
149 RtpCodecParameters cn_codec;
150 cn_codec.name = "CN";
151 cn_codec.kind = cricket::MEDIA_TYPE_AUDIO;
152 cn_codec.payload_type = 106;
153 cn_codec.clock_rate.emplace(32000);
154 parameters.codecs.push_back(std::move(cn_codec));
155
156 RtpCodecParameters dtmf_codec;
157 dtmf_codec.name = "telephone-event";
158 dtmf_codec.kind = cricket::MEDIA_TYPE_AUDIO;
159 dtmf_codec.payload_type = 126;
160 dtmf_codec.clock_rate.emplace(8000);
161 parameters.codecs.push_back(std::move(dtmf_codec));
162
163 // "codec_payload_type" isn't implemented, so we need to reorder codecs to
164 // cause one to be used.
165 // TODO(deadbeef): Remove this when it becomes unnecessary.
166 std::sort(parameters.codecs.begin(), parameters.codecs.end(),
167 [preferred_payload_type](const RtpCodecParameters& a,
168 const RtpCodecParameters& b) {
169 return a.payload_type == preferred_payload_type;
170 });
171
172 // Intentionally leave out SSRC so one's chosen automatically.
173 RtpEncodingParameters encoding;
174 encoding.codec_payload_type.emplace(preferred_payload_type);
175 encoding.dtx.emplace(DtxStatus::ENABLED);
176 // 20 kbps.
177 encoding.max_bitrate_bps.emplace(20000);
178 parameters.encodings.push_back(std::move(encoding));
179
180 parameters.header_extensions.emplace_back(
181 "urn:ietf:params:rtp-hdrext:ssrc-audio-level", 1);
182 return parameters;
183 }
184
185 RtpParameters MakeFullOpusParameters() {
186 return MakeFullAudioParameters(111);
187 }
188
189 RtpParameters MakeFullIsacParameters() {
190 return MakeFullAudioParameters(103);
191 }
192
193 // Make video parameters with all the available properties configured and
194 // features used, and with multiple codecs offered. Obtained by taking a
195 // snapshot of a default PeerConnection offer (and adding other things, like
196 // bitrate limit).
197 //
198 // See "MakeFullVp8Parameters"/"MakeFullVp9Parameters" below.
199 RtpParameters MakeFullVideoParameters(int preferred_payload_type) {
200 RtpParameters parameters;
201
202 RtpCodecParameters vp8_codec;
203 vp8_codec.name = "VP8";
204 vp8_codec.kind = cricket::MEDIA_TYPE_VIDEO;
205 vp8_codec.payload_type = 100;
206 vp8_codec.clock_rate.emplace(90000);
207 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::CCM,
208 RtcpFeedbackMessageType::FIR);
209 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
210 RtcpFeedbackMessageType::GENERIC_NACK);
211 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
212 RtcpFeedbackMessageType::PLI);
213 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::REMB);
214 vp8_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
215 parameters.codecs.push_back(std::move(vp8_codec));
216
217 RtpCodecParameters vp8_rtx_codec;
218 vp8_rtx_codec.name = "rtx";
219 vp8_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
220 vp8_rtx_codec.payload_type = 96;
221 vp8_rtx_codec.clock_rate.emplace(90000);
222 vp8_rtx_codec.parameters["apt"] = "100";
223 parameters.codecs.push_back(std::move(vp8_rtx_codec));
224
225 RtpCodecParameters vp9_codec;
226 vp9_codec.name = "VP9";
227 vp9_codec.kind = cricket::MEDIA_TYPE_VIDEO;
228 vp9_codec.payload_type = 101;
229 vp9_codec.clock_rate.emplace(90000);
230 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::CCM,
231 RtcpFeedbackMessageType::FIR);
232 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
233 RtcpFeedbackMessageType::GENERIC_NACK);
234 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::NACK,
235 RtcpFeedbackMessageType::PLI);
236 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::REMB);
237 vp9_codec.rtcp_feedback.emplace_back(RtcpFeedbackType::TRANSPORT_CC);
238 parameters.codecs.push_back(std::move(vp9_codec));
239
240 RtpCodecParameters vp9_rtx_codec;
241 vp9_rtx_codec.name = "rtx";
242 vp9_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
243 vp9_rtx_codec.payload_type = 97;
244 vp9_rtx_codec.clock_rate.emplace(90000);
245 vp9_rtx_codec.parameters["apt"] = "101";
246 parameters.codecs.push_back(std::move(vp9_rtx_codec));
247
248 RtpCodecParameters red_codec;
249 red_codec.name = "red";
250 red_codec.kind = cricket::MEDIA_TYPE_VIDEO;
251 red_codec.payload_type = 116;
252 red_codec.clock_rate.emplace(90000);
253 parameters.codecs.push_back(std::move(red_codec));
254
255 RtpCodecParameters red_rtx_codec;
256 red_rtx_codec.name = "rtx";
257 red_rtx_codec.kind = cricket::MEDIA_TYPE_VIDEO;
258 red_rtx_codec.payload_type = 98;
259 red_rtx_codec.clock_rate.emplace(90000);
260 red_rtx_codec.parameters["apt"] = "116";
261 parameters.codecs.push_back(std::move(red_rtx_codec));
262
263 RtpCodecParameters ulpfec_codec;
264 ulpfec_codec.name = "ulpfec";
265 ulpfec_codec.kind = cricket::MEDIA_TYPE_VIDEO;
266 ulpfec_codec.payload_type = 117;
267 ulpfec_codec.clock_rate.emplace(90000);
268 parameters.codecs.push_back(std::move(ulpfec_codec));
269
270 // "codec_payload_type" isn't implemented, so we need to reorder codecs to
271 // cause one to be used.
272 // TODO(deadbeef): Remove this when it becomes unnecessary.
273 std::sort(parameters.codecs.begin(), parameters.codecs.end(),
274 [preferred_payload_type](const RtpCodecParameters& a,
275 const RtpCodecParameters& b) {
276 return a.payload_type == preferred_payload_type;
277 });
278
279 // Intentionally leave out SSRC so one's chosen automatically.
280 RtpEncodingParameters encoding;
281 encoding.codec_payload_type.emplace(preferred_payload_type);
282 encoding.fec.emplace(FecMechanism::RED_AND_ULPFEC);
283 // Will create default RtxParameters, with unset SSRC.
284 encoding.rtx.emplace();
285 // 100 kbps.
286 encoding.max_bitrate_bps.emplace(100000);
287 parameters.encodings.push_back(std::move(encoding));
288
289 parameters.header_extensions.emplace_back(
290 "urn:ietf:params:rtp-hdrext:toffset", 2);
291 parameters.header_extensions.emplace_back(
292 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time", 3);
293 parameters.header_extensions.emplace_back("urn:3gpp:video-orientation", 4);
294 parameters.header_extensions.emplace_back(
295 "http://www.ietf.org/id/"
296 "draft-holmer-rmcat-transport-wide-cc-extensions-01",
297 5);
298 parameters.header_extensions.emplace_back(
299 "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay", 6);
300 return parameters;
301 }
302
303 RtpParameters MakeFullVp8Parameters() {
304 return MakeFullVideoParameters(100);
305 }
306
307 RtpParameters MakeFullVp9Parameters() {
308 return MakeFullVideoParameters(101);
309 }
310
311 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/ortc/testrtpparameters.h ('k') | webrtc/p2p/base/fakepackettransport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698