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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_packet_unittest.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 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" 10 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h"
(...skipping 14 matching lines...) Expand all
25 constexpr int8_t kPayloadType = 100; 25 constexpr int8_t kPayloadType = 100;
26 constexpr uint32_t kSsrc = 0x12345678; 26 constexpr uint32_t kSsrc = 0x12345678;
27 constexpr uint16_t kSeqNum = 0x1234; 27 constexpr uint16_t kSeqNum = 0x1234;
28 constexpr uint8_t kSeqNumFirstByte = kSeqNum >> 8; 28 constexpr uint8_t kSeqNumFirstByte = kSeqNum >> 8;
29 constexpr uint8_t kSeqNumSecondByte = kSeqNum & 0xff; 29 constexpr uint8_t kSeqNumSecondByte = kSeqNum & 0xff;
30 constexpr uint32_t kTimestamp = 0x65431278; 30 constexpr uint32_t kTimestamp = 0x65431278;
31 constexpr uint8_t kTransmissionOffsetExtensionId = 1; 31 constexpr uint8_t kTransmissionOffsetExtensionId = 1;
32 constexpr uint8_t kAudioLevelExtensionId = 9; 32 constexpr uint8_t kAudioLevelExtensionId = 9;
33 constexpr uint8_t kRtpStreamIdExtensionId = 0xa; 33 constexpr uint8_t kRtpStreamIdExtensionId = 0xa;
34 constexpr uint8_t kRtpMidExtensionId = 0xb; 34 constexpr uint8_t kRtpMidExtensionId = 0xb;
35 constexpr uint8_t kVideoTimingExtensionId = 0xc;
36 constexpr int32_t kTimeOffset = 0x56ce; 35 constexpr int32_t kTimeOffset = 0x56ce;
37 constexpr bool kVoiceActive = true; 36 constexpr bool kVoiceActive = true;
38 constexpr uint8_t kAudioLevel = 0x5a; 37 constexpr uint8_t kAudioLevel = 0x5a;
39 constexpr char kStreamId[] = "streamid"; 38 constexpr char kStreamId[] = "streamid";
40 constexpr char kMid[] = "mid"; 39 constexpr char kMid[] = "mid";
41 constexpr size_t kMaxPaddingSize = 224u; 40 constexpr size_t kMaxPaddingSize = 224u;
42 // clang-format off 41 // clang-format off
43 constexpr uint8_t kMinimumPacket[] = { 42 constexpr uint8_t kMinimumPacket[] = {
44 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, 43 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte,
45 0x65, 0x43, 0x12, 0x78, 44 0x65, 0x43, 0x12, 0x78,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 'p', 'a', 'd', 'd', 'i', 'n', 'g', kPacketPaddingSize}; 90 'p', 'a', 'd', 'd', 'i', 'n', 'g', kPacketPaddingSize};
92 91
93 constexpr uint8_t kPacketWithInvalidExtension[] = { 92 constexpr uint8_t kPacketWithInvalidExtension[] = {
94 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, 93 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte,
95 0x65, 0x43, 0x12, 0x78, // kTimestamp. 94 0x65, 0x43, 0x12, 0x78, // kTimestamp.
96 0x12, 0x34, 0x56, 0x78, // kSSrc. 95 0x12, 0x34, 0x56, 0x78, // kSSrc.
97 0xbe, 0xde, 0x00, 0x02, // Extension block of size 2 x 32bit words. 96 0xbe, 0xde, 0x00, 0x02, // Extension block of size 2 x 32bit words.
98 (kTransmissionOffsetExtensionId << 4) | 6, // (6+1)-byte extension, but 97 (kTransmissionOffsetExtensionId << 4) | 6, // (6+1)-byte extension, but
99 'e', 'x', 't', // Transmission Offset 98 'e', 'x', 't', // Transmission Offset
100 'd', 'a', 't', 'a', // expected to be 3-bytes. 99 'd', 'a', 't', 'a', // expected to be 3-bytes.
101 'p', 'a', 'y', 'l', 'o', 'a', 'd'}; 100 'p', 'a', 'y', 'l', 'o', 'a', 'd'
102 101 };
103 constexpr uint8_t kPacketWithLegacyTimingExtension[] = {
104 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte,
105 0x65, 0x43, 0x12, 0x78, // kTimestamp.
106 0x12, 0x34, 0x56, 0x78, // kSSrc.
107 0xbe, 0xde, 0x00, 0x04, // Extension block of size 4 x 32bit words.
108 (kVideoTimingExtensionId << 4)
109 | VideoTimingExtension::kValueSizeBytes - 2, // Old format without flags.
110 0x00, 0x01, 0x00,
111 0x02, 0x00, 0x03, 0x00,
112 0x04, 0x00, 0x00, 0x00,
113 0x00, 0x00, 0x00, 0x00};
114 // clang-format on 102 // clang-format on
115 } // namespace 103 } // namespace
116 104
117 TEST(RtpPacketTest, CreateMinimum) { 105 TEST(RtpPacketTest, CreateMinimum) {
118 RtpPacketToSend packet(nullptr); 106 RtpPacketToSend packet(nullptr);
119 packet.SetPayloadType(kPayloadType); 107 packet.SetPayloadType(kPayloadType);
120 packet.SetSequenceNumber(kSeqNum); 108 packet.SetSequenceNumber(kSeqNum);
121 packet.SetTimestamp(kTimestamp); 109 packet.SetTimestamp(kTimestamp);
122 packet.SetSsrc(kSsrc); 110 packet.SetSsrc(kSsrc);
123 EXPECT_THAT(kMinimumPacket, ElementsAreArray(packet.data(), packet.size())); 111 EXPECT_THAT(kMinimumPacket, ElementsAreArray(packet.data(), packet.size()));
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 491
504 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket))); 492 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket)));
505 493
506 EXPECT_FALSE(packet.HasRawExtension(kInvalidId)); 494 EXPECT_FALSE(packet.HasRawExtension(kInvalidId));
507 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty()); 495 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty());
508 const uint8_t kExtension[] = {'e', 'x', 't'}; 496 const uint8_t kExtension[] = {'e', 'x', 't'};
509 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension)); 497 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension));
510 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty()); 498 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty());
511 } 499 }
512 500
513 TEST(RtpPacketTest, CreateAndParseTimingFrameExtension) {
514 // Create a packet with video frame timing extension populated.
515 RtpPacketToSend::ExtensionManager send_extensions;
516 send_extensions.Register(kRtpExtensionVideoTiming, kVideoTimingExtensionId);
517 RtpPacketToSend send_packet(&send_extensions);
518 send_packet.SetPayloadType(kPayloadType);
519 send_packet.SetSequenceNumber(kSeqNum);
520 send_packet.SetTimestamp(kTimestamp);
521 send_packet.SetSsrc(kSsrc);
522
523 VideoSendTiming timing;
524 timing.encode_start_delta_ms = 1;
525 timing.encode_finish_delta_ms = 2;
526 timing.packetization_finish_delta_ms = 3;
527 timing.pacer_exit_delta_ms = 4;
528 timing.flags =
529 TimingFrameFlags::kTriggeredByTimer + TimingFrameFlags::kTriggeredBySize;
530
531 send_packet.SetExtension<VideoTimingExtension>(timing);
532
533 // Serialize the packet and then parse it again.
534 RtpPacketReceived::ExtensionManager extensions;
535 extensions.Register<VideoTimingExtension>(kVideoTimingExtensionId);
536 RtpPacketReceived receive_packet(&extensions);
537 EXPECT_TRUE(receive_packet.Parse(send_packet.Buffer()));
538
539 VideoSendTiming receivied_timing;
540 EXPECT_TRUE(
541 receive_packet.GetExtension<VideoTimingExtension>(&receivied_timing));
542
543 // Only check first and last timestamp (covered by other tests) plus flags.
544 EXPECT_EQ(receivied_timing.encode_start_delta_ms,
545 timing.encode_start_delta_ms);
546 EXPECT_EQ(receivied_timing.pacer_exit_delta_ms, timing.pacer_exit_delta_ms);
547 EXPECT_EQ(receivied_timing.flags, timing.flags);
548 }
549
550 TEST(RtpPacketTest, ParseLegacyTimingFrameExtension) {
551 // Parse the modified packet.
552 RtpPacketReceived::ExtensionManager extensions;
553 extensions.Register<VideoTimingExtension>(kVideoTimingExtensionId);
554 RtpPacketReceived packet(&extensions);
555 EXPECT_TRUE(packet.Parse(kPacketWithLegacyTimingExtension,
556 sizeof(kPacketWithLegacyTimingExtension)));
557 VideoSendTiming receivied_timing;
558 EXPECT_TRUE(packet.GetExtension<VideoTimingExtension>(&receivied_timing));
559
560 // Check first and last timestamp are still OK. Flags should now be 0.
561 EXPECT_EQ(receivied_timing.encode_start_delta_ms, 1);
562 EXPECT_EQ(receivied_timing.pacer_exit_delta_ms, 4);
563 EXPECT_EQ(receivied_timing.flags, 0);
564 }
565
566 } // namespace webrtc 501 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_receiver_video.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698