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

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

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

Powered by Google App Engine
This is Rietveld 408576698