1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker *
4*d9f75844SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker */
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Worker #include "api/rtp_packet_infos.h"
12*d9f75844SAndroid Build Coastguard Worker #include "api/units/time_delta.h"
13*d9f75844SAndroid Build Coastguard Worker #include "test/gmock.h"
14*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
15*d9f75844SAndroid Build Coastguard Worker
16*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
17*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,Ssrc)18*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, Ssrc) {
19*d9f75844SAndroid Build Coastguard Worker constexpr uint32_t kValue = 4038189233;
20*d9f75844SAndroid Build Coastguard Worker
21*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
22*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
23*d9f75844SAndroid Build Coastguard Worker
24*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
25*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
26*d9f75844SAndroid Build Coastguard Worker
27*d9f75844SAndroid Build Coastguard Worker rhs.set_ssrc(kValue);
28*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.ssrc(), kValue);
29*d9f75844SAndroid Build Coastguard Worker
30*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
31*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
32*d9f75844SAndroid Build Coastguard Worker
33*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
34*d9f75844SAndroid Build Coastguard Worker
35*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
36*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
37*d9f75844SAndroid Build Coastguard Worker
38*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
39*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.ssrc(), kValue);
40*d9f75844SAndroid Build Coastguard Worker
41*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/kValue, /*csrcs=*/{}, /*rtp_timestamp=*/{},
42*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
43*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.ssrc(), kValue);
44*d9f75844SAndroid Build Coastguard Worker }
45*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,Csrcs)46*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, Csrcs) {
47*d9f75844SAndroid Build Coastguard Worker const std::vector<uint32_t> value = {4038189233, 3016333617, 1207992985};
48*d9f75844SAndroid Build Coastguard Worker
49*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
50*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
51*d9f75844SAndroid Build Coastguard Worker
52*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
53*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
54*d9f75844SAndroid Build Coastguard Worker
55*d9f75844SAndroid Build Coastguard Worker rhs.set_csrcs(value);
56*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.csrcs(), value);
57*d9f75844SAndroid Build Coastguard Worker
58*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
59*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
60*d9f75844SAndroid Build Coastguard Worker
61*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
62*d9f75844SAndroid Build Coastguard Worker
63*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
64*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
65*d9f75844SAndroid Build Coastguard Worker
66*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
67*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.csrcs(), value);
68*d9f75844SAndroid Build Coastguard Worker
69*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/value, /*rtp_timestamp=*/{},
70*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
71*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.csrcs(), value);
72*d9f75844SAndroid Build Coastguard Worker }
73*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,RtpTimestamp)74*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, RtpTimestamp) {
75*d9f75844SAndroid Build Coastguard Worker constexpr uint32_t kValue = 4038189233;
76*d9f75844SAndroid Build Coastguard Worker
77*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
78*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
79*d9f75844SAndroid Build Coastguard Worker
80*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
81*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
82*d9f75844SAndroid Build Coastguard Worker
83*d9f75844SAndroid Build Coastguard Worker rhs.set_rtp_timestamp(kValue);
84*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.rtp_timestamp(), kValue);
85*d9f75844SAndroid Build Coastguard Worker
86*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
87*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
88*d9f75844SAndroid Build Coastguard Worker
89*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
90*d9f75844SAndroid Build Coastguard Worker
91*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
92*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
93*d9f75844SAndroid Build Coastguard Worker
94*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
95*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.rtp_timestamp(), kValue);
96*d9f75844SAndroid Build Coastguard Worker
97*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/kValue,
98*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
99*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.rtp_timestamp(), kValue);
100*d9f75844SAndroid Build Coastguard Worker }
101*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,ReceiveTimeMs)102*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, ReceiveTimeMs) {
103*d9f75844SAndroid Build Coastguard Worker constexpr Timestamp kValue = Timestamp::Micros(8868963877546349045LL);
104*d9f75844SAndroid Build Coastguard Worker
105*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
106*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
107*d9f75844SAndroid Build Coastguard Worker
108*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
109*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
110*d9f75844SAndroid Build Coastguard Worker
111*d9f75844SAndroid Build Coastguard Worker rhs.set_receive_time(kValue);
112*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.receive_time(), kValue);
113*d9f75844SAndroid Build Coastguard Worker
114*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
115*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
116*d9f75844SAndroid Build Coastguard Worker
117*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
118*d9f75844SAndroid Build Coastguard Worker
119*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
120*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
121*d9f75844SAndroid Build Coastguard Worker
122*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
123*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.receive_time(), kValue);
124*d9f75844SAndroid Build Coastguard Worker
125*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
126*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/kValue);
127*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.receive_time(), kValue);
128*d9f75844SAndroid Build Coastguard Worker }
129*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,AudioLevel)130*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, AudioLevel) {
131*d9f75844SAndroid Build Coastguard Worker constexpr absl::optional<uint8_t> kValue = 31;
132*d9f75844SAndroid Build Coastguard Worker
133*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
134*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
135*d9f75844SAndroid Build Coastguard Worker
136*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
137*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
138*d9f75844SAndroid Build Coastguard Worker
139*d9f75844SAndroid Build Coastguard Worker rhs.set_audio_level(kValue);
140*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.audio_level(), kValue);
141*d9f75844SAndroid Build Coastguard Worker
142*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
143*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
144*d9f75844SAndroid Build Coastguard Worker
145*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
146*d9f75844SAndroid Build Coastguard Worker
147*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
148*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
149*d9f75844SAndroid Build Coastguard Worker
150*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
151*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.audio_level(), kValue);
152*d9f75844SAndroid Build Coastguard Worker
153*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
154*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
155*d9f75844SAndroid Build Coastguard Worker rhs.set_audio_level(kValue);
156*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.audio_level(), kValue);
157*d9f75844SAndroid Build Coastguard Worker }
158*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,AbsoluteCaptureTime)159*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
160*d9f75844SAndroid Build Coastguard Worker constexpr absl::optional<AbsoluteCaptureTime> kValue = AbsoluteCaptureTime{
161*d9f75844SAndroid Build Coastguard Worker .absolute_capture_timestamp = 12, .estimated_capture_clock_offset = 34};
162*d9f75844SAndroid Build Coastguard Worker
163*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
164*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
165*d9f75844SAndroid Build Coastguard Worker
166*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
167*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
168*d9f75844SAndroid Build Coastguard Worker
169*d9f75844SAndroid Build Coastguard Worker rhs.set_absolute_capture_time(kValue);
170*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.absolute_capture_time(), kValue);
171*d9f75844SAndroid Build Coastguard Worker
172*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
173*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
174*d9f75844SAndroid Build Coastguard Worker
175*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
176*d9f75844SAndroid Build Coastguard Worker
177*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
178*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
179*d9f75844SAndroid Build Coastguard Worker
180*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
181*d9f75844SAndroid Build Coastguard Worker EXPECT_NE(rhs.absolute_capture_time(), kValue);
182*d9f75844SAndroid Build Coastguard Worker
183*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
184*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
185*d9f75844SAndroid Build Coastguard Worker rhs.set_absolute_capture_time(kValue);
186*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.absolute_capture_time(), kValue);
187*d9f75844SAndroid Build Coastguard Worker }
188*d9f75844SAndroid Build Coastguard Worker
TEST(RtpPacketInfoTest,LocalCaptureClockOffset)189*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
190*d9f75844SAndroid Build Coastguard Worker constexpr TimeDelta kValue = TimeDelta::Micros(8868963877546349045LL);
191*d9f75844SAndroid Build Coastguard Worker
192*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo lhs;
193*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo rhs;
194*d9f75844SAndroid Build Coastguard Worker
195*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
196*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
197*d9f75844SAndroid Build Coastguard Worker
198*d9f75844SAndroid Build Coastguard Worker rhs.set_local_capture_clock_offset(kValue);
199*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
200*d9f75844SAndroid Build Coastguard Worker
201*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs == rhs);
202*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs != rhs);
203*d9f75844SAndroid Build Coastguard Worker
204*d9f75844SAndroid Build Coastguard Worker lhs = rhs;
205*d9f75844SAndroid Build Coastguard Worker
206*d9f75844SAndroid Build Coastguard Worker EXPECT_TRUE(lhs == rhs);
207*d9f75844SAndroid Build Coastguard Worker EXPECT_FALSE(lhs != rhs);
208*d9f75844SAndroid Build Coastguard Worker
209*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo();
210*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
211*d9f75844SAndroid Build Coastguard Worker
212*d9f75844SAndroid Build Coastguard Worker rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
213*d9f75844SAndroid Build Coastguard Worker /*receive_time=*/Timestamp::Zero());
214*d9f75844SAndroid Build Coastguard Worker rhs.set_local_capture_clock_offset(kValue);
215*d9f75844SAndroid Build Coastguard Worker EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
216*d9f75844SAndroid Build Coastguard Worker }
217*d9f75844SAndroid Build Coastguard Worker
218*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc
219