OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * Copyright (c) 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 <cstdio> | |
12 | |
13 #include "webrtc/call/rtp_rtcp_demuxer_helper.h" | |
14 | |
15 #include "webrtc/base/arraysize.h" | |
16 #include "webrtc/base/buffer.h" | |
17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" | |
18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h" | |
19 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h" | |
20 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h" | |
21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h" | |
22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h" | |
23 #include "webrtc/test/gtest.h" | |
24 | |
25 namespace webrtc { | |
26 | |
27 namespace { | |
28 constexpr uint32_t kSsrc = 8374; | |
29 } // namespace | |
30 | |
31 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_CorrectOutputForBye) { | |
32 webrtc::rtcp::Bye rtcp_packet; | |
33 rtcp_packet.SetSenderSsrc(kSsrc); | |
34 | |
35 rtc::Buffer buffer = rtcp_packet.Build(); | |
36 rtc::ArrayView<const uint8_t> array = | |
37 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
38 | |
39 uint32_t ssrc; | |
40 EXPECT_TRUE(ParseSenderSsrc(array, &ssrc)); | |
danilchap
2017/06/16 16:46:19
you should be able to pass buffer directly, withou
eladalon
2017/06/19 11:28:47
Done.
| |
41 EXPECT_EQ(ssrc, kSsrc); | |
42 } | |
43 | |
44 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_CorrectOutputForPsfb) { | |
45 webrtc::rtcp::Pli rtcp_packet; // Psfb is abstract; use a subclass. | |
46 rtcp_packet.SetSenderSsrc(kSsrc); | |
47 | |
48 rtc::Buffer buffer = rtcp_packet.Build(); | |
49 rtc::ArrayView<const uint8_t> array = | |
50 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
51 | |
52 uint32_t ssrc; | |
53 EXPECT_TRUE(ParseSenderSsrc(array, &ssrc)); | |
54 EXPECT_EQ(ssrc, kSsrc); | |
55 } | |
56 | |
57 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_CorrectOutputForReceiverReport) { | |
58 webrtc::rtcp::ReceiverReport rtcp_packet; | |
59 rtcp_packet.SetSenderSsrc(kSsrc); | |
60 | |
61 rtc::Buffer buffer = rtcp_packet.Build(); | |
62 rtc::ArrayView<const uint8_t> array = | |
63 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
64 | |
65 uint32_t ssrc; | |
66 EXPECT_TRUE(ParseSenderSsrc(array, &ssrc)); | |
67 EXPECT_EQ(ssrc, kSsrc); | |
68 } | |
69 | |
70 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_CorrectOutputForRtpfb) { | |
71 // Rtpfb is abstract; use a subclass. | |
72 webrtc::rtcp::RapidResyncRequest rtcp_packet; | |
73 rtcp_packet.SetSenderSsrc(kSsrc); | |
74 | |
75 rtc::Buffer buffer = rtcp_packet.Build(); | |
76 rtc::ArrayView<const uint8_t> array = | |
77 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
78 | |
79 uint32_t ssrc; | |
80 EXPECT_TRUE(ParseSenderSsrc(array, &ssrc)); | |
81 EXPECT_EQ(ssrc, kSsrc); | |
82 } | |
83 | |
84 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_CorrectOutputForSenderReport) { | |
85 webrtc::rtcp::SenderReport rtcp_packet; | |
86 rtcp_packet.SetSenderSsrc(kSsrc); | |
87 | |
88 rtc::Buffer buffer = rtcp_packet.Build(); | |
89 rtc::ArrayView<const uint8_t> array = | |
90 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
91 | |
92 uint32_t ssrc; | |
93 EXPECT_TRUE(ParseSenderSsrc(array, &ssrc)); | |
94 EXPECT_EQ(ssrc, kSsrc); | |
95 } | |
96 | |
97 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_BadRtcpPacket) { | |
danilchap
2017/06/16 16:46:19
may be test for other kind of bad packets too:
e.g
eladalon
2017/06/19 11:28:47
IMHO, that would be the sink's problem; the demuxe
| |
98 uint8_t garbage[100]; | |
99 memset(&garbage[0], 0, arraysize(garbage)); | |
100 | |
101 uint32_t ssrc; | |
102 EXPECT_FALSE(ParseSenderSsrc(garbage, &ssrc)); | |
103 } | |
104 | |
105 TEST(RtpRtcpDemuxerHelperTest, ParseSenderSsrc_RtcpMessageWithoutSenderSsrc) { | |
106 webrtc::rtcp::ExtendedJitterReport rtcp_packet; // Has no sender SSRC. | |
107 | |
108 rtc::Buffer buffer = rtcp_packet.Build(); | |
109 rtc::ArrayView<const uint8_t> array = | |
110 rtc::ArrayView<const uint8_t>(buffer.data(), buffer.size()); | |
111 | |
112 uint32_t ssrc; | |
113 EXPECT_FALSE(ParseSenderSsrc(array, &ssrc)); | |
114 } | |
115 | |
116 } // namespace webrtc | |
OLD | NEW |