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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc

Issue 2995953002: Revert of Add a flags field to video timing extension. (Closed)
Patch Set: Created 3 years, 4 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
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 241
242 bool VideoContentTypeExtension::Write(uint8_t* data, 242 bool VideoContentTypeExtension::Write(uint8_t* data,
243 VideoContentType content_type) { 243 VideoContentType content_type) {
244 data[0] = static_cast<uint8_t>(content_type); 244 data[0] = static_cast<uint8_t>(content_type);
245 return true; 245 return true;
246 } 246 }
247 247
248 // Video Timing. 248 // Video Timing.
249 // 6 timestamps in milliseconds counted from capture time stored in rtp header: 249 // 6 timestamps in milliseconds counted from capture time stored in rtp header:
250 // encode start/finish, packetization complete, pacer exit and reserved for 250 // encode start/finish, packetization complete, pacer exit and reserved for
251 // modification by the network modification. |flags| is a bitmask and has the 251 // modification by the network modification.
252 // following allowed values:
253 // 0 = Valid data, but no flags available (backwards compatibility)
254 // 1 = Frame marked as timing frame due to cyclic timer.
255 // 2 = Frame marked as timing frame due to size being outside limit.
256 // 255 = Invalid. The whole timing frame extension should be ignored.
257 //
258 // 0 1 2 3 252 // 0 1 2 3
259 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 253 // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
260 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 254 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
261 // | ID | len=12| flags | encode start ms delta | 255 // | ID | len=11| encode start ms delta | encode finish |
262 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 256 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
263 // | encode finish ms delta | packetizer finish ms delta | 257 // | ms delta | packetizer finish ms delta | pacer exit |
264 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 258 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
265 // | pacer exit ms delta | network timestamp ms delta | 259 // | ms delta | network timestamp ms delta | network2 time-|
266 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 260 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
267 // | network2 timestamp ms delta | 261 // | stamp ms delta|
268 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 262 // +-+-+-+-+-+-+-+-+
269 263
270 constexpr RTPExtensionType VideoTimingExtension::kId; 264 constexpr RTPExtensionType VideoTimingExtension::kId;
271 constexpr uint8_t VideoTimingExtension::kValueSizeBytes; 265 constexpr uint8_t VideoTimingExtension::kValueSizeBytes;
272 constexpr const char VideoTimingExtension::kUri[]; 266 constexpr const char VideoTimingExtension::kUri[];
273 267
274 bool VideoTimingExtension::Parse(rtc::ArrayView<const uint8_t> data, 268 bool VideoTimingExtension::Parse(rtc::ArrayView<const uint8_t> data,
275 VideoSendTiming* timing) { 269 VideoSendTiming* timing) {
276 RTC_DCHECK(timing); 270 RTC_DCHECK(timing);
277 // TODO(sprang): Deprecate support for old wire format. 271 if (data.size() != kValueSizeBytes)
278 ptrdiff_t off = 0; 272 return false;
279 switch (data.size()) { 273 timing->encode_start_delta_ms =
280 case kValueSizeBytes - 1: 274 ByteReader<uint16_t>::ReadBigEndian(data.data());
281 timing->flags = 0;
282 off = 1; // Old wire format without the flags field.
283 break;
284 case kValueSizeBytes:
285 timing->flags = ByteReader<uint8_t>::ReadBigEndian(data.data());
286 break;
287 default:
288 return false;
289 }
290
291 timing->encode_start_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
292 data.data() + VideoSendTiming::kEncodeStartDeltaOffset - off);
293 timing->encode_finish_delta_ms = ByteReader<uint16_t>::ReadBigEndian( 275 timing->encode_finish_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
294 data.data() + VideoSendTiming::kEncodeFinishDeltaOffset - off); 276 data.data() + 2 * VideoSendTiming::kEncodeFinishDeltaIdx);
295 timing->packetization_finish_delta_ms = ByteReader<uint16_t>::ReadBigEndian( 277 timing->packetization_finish_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
296 data.data() + VideoSendTiming::kPacketizationFinishDeltaOffset - off); 278 data.data() + 2 * VideoSendTiming::kPacketizationFinishDeltaIdx);
297 timing->pacer_exit_delta_ms = ByteReader<uint16_t>::ReadBigEndian( 279 timing->pacer_exit_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
298 data.data() + VideoSendTiming::kPacerExitDeltaOffset - off); 280 data.data() + 2 * VideoSendTiming::kPacerExitDeltaIdx);
299 timing->network_timstamp_delta_ms = ByteReader<uint16_t>::ReadBigEndian( 281 timing->network_timstamp_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
300 data.data() + VideoSendTiming::kNetworkTimestampDeltaOffset - off); 282 data.data() + 2 * VideoSendTiming::kNetworkTimestampDeltaIdx);
301 timing->network2_timstamp_delta_ms = ByteReader<uint16_t>::ReadBigEndian( 283 timing->network2_timstamp_delta_ms = ByteReader<uint16_t>::ReadBigEndian(
302 data.data() + VideoSendTiming::kNetwork2TimestampDeltaOffset - off); 284 data.data() + 2 * VideoSendTiming::kNetwork2TimestampDeltaIdx);
285 timing->is_timing_frame = true;
303 return true; 286 return true;
304 } 287 }
305 288
306 bool VideoTimingExtension::Write(uint8_t* data, const VideoSendTiming& timing) { 289 bool VideoTimingExtension::Write(uint8_t* data, const VideoSendTiming& timing) {
307 ByteWriter<uint8_t>::WriteBigEndian(data + VideoSendTiming::kFlagsOffset, 290 ByteWriter<uint16_t>::WriteBigEndian(data, timing.encode_start_delta_ms);
308 timing.flags);
309 ByteWriter<uint16_t>::WriteBigEndian( 291 ByteWriter<uint16_t>::WriteBigEndian(
310 data + VideoSendTiming::kEncodeStartDeltaOffset, 292 data + 2 * VideoSendTiming::kEncodeFinishDeltaIdx,
311 timing.encode_start_delta_ms);
312 ByteWriter<uint16_t>::WriteBigEndian(
313 data + VideoSendTiming::kEncodeFinishDeltaOffset,
314 timing.encode_finish_delta_ms); 293 timing.encode_finish_delta_ms);
315 ByteWriter<uint16_t>::WriteBigEndian( 294 ByteWriter<uint16_t>::WriteBigEndian(
316 data + VideoSendTiming::kPacketizationFinishDeltaOffset, 295 data + 2 * VideoSendTiming::kPacketizationFinishDeltaIdx,
317 timing.packetization_finish_delta_ms); 296 timing.packetization_finish_delta_ms);
318 ByteWriter<uint16_t>::WriteBigEndian( 297 ByteWriter<uint16_t>::WriteBigEndian(
319 data + VideoSendTiming::kPacerExitDeltaOffset, 298 data + 2 * VideoSendTiming::kPacerExitDeltaIdx,
320 timing.pacer_exit_delta_ms); 299 timing.pacer_exit_delta_ms);
321 ByteWriter<uint16_t>::WriteBigEndian( 300 ByteWriter<uint16_t>::WriteBigEndian(
322 data + VideoSendTiming::kNetworkTimestampDeltaOffset, 0); // reserved 301 data + 2 * VideoSendTiming::kNetworkTimestampDeltaIdx, 0); // reserved
323 ByteWriter<uint16_t>::WriteBigEndian( 302 ByteWriter<uint16_t>::WriteBigEndian(
324 data + VideoSendTiming::kNetwork2TimestampDeltaOffset, 0); // reserved 303 data + 2 * VideoSendTiming::kNetwork2TimestampDeltaIdx, 0); // reserved
325 return true; 304 return true;
326 } 305 }
327 306
328 bool VideoTimingExtension::Write(uint8_t* data, 307 bool VideoTimingExtension::Write(uint8_t* data,
329 uint16_t time_delta_ms, 308 uint16_t time_delta_ms,
330 uint8_t offset) { 309 uint8_t idx) {
331 RTC_DCHECK_LT(offset, kValueSizeBytes - sizeof(uint16_t)); 310 RTC_DCHECK_LT(idx, 6);
332 ByteWriter<uint16_t>::WriteBigEndian(data + offset, time_delta_ms); 311 ByteWriter<uint16_t>::WriteBigEndian(data + 2 * idx, time_delta_ms);
333 return true; 312 return true;
334 } 313 }
335 314
336 bool BaseRtpStringExtension::Parse(rtc::ArrayView<const uint8_t> data, 315 bool BaseRtpStringExtension::Parse(rtc::ArrayView<const uint8_t> data,
337 StringRtpHeaderExtension* str) { 316 StringRtpHeaderExtension* str) {
338 if (data.empty() || data[0] == 0) // Valid string extension can't be empty. 317 if (data.empty() || data[0] == 0) // Valid string extension can't be empty.
339 return false; 318 return false;
340 str->Set(data); 319 str->Set(data);
341 RTC_DCHECK(!str->empty()); 320 RTC_DCHECK(!str->empty());
342 return true; 321 return true;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 constexpr RTPExtensionType RtpStreamId::kId; 353 constexpr RTPExtensionType RtpStreamId::kId;
375 constexpr const char RtpStreamId::kUri[]; 354 constexpr const char RtpStreamId::kUri[];
376 355
377 constexpr RTPExtensionType RepairedRtpStreamId::kId; 356 constexpr RTPExtensionType RepairedRtpStreamId::kId;
378 constexpr const char RepairedRtpStreamId::kUri[]; 357 constexpr const char RepairedRtpStreamId::kUri[];
379 358
380 constexpr RTPExtensionType RtpMid::kId; 359 constexpr RTPExtensionType RtpMid::kId;
381 constexpr const char RtpMid::kUri[]; 360 constexpr const char RtpMid::kUri[];
382 361
383 } // namespace webrtc 362 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698