xref: /aosp_15_r20/external/webrtc/api/rtp_packet_info_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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