blob: d35edf75db87209756fb02205272f5fe9de5eaa1 [file] [log] [blame]
Chen Xingd2a66862019-06-03 12:53:421/*
2 * Copyright (c) 2019 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 "api/rtp_packet_infos.h"
Alessio Bazzica56b96ffe2022-09-20 09:16:1612#include "api/units/time_delta.h"
Chen Xingd2a66862019-06-03 12:53:4213#include "test/gmock.h"
14#include "test/gtest.h"
15
16namespace webrtc {
17
18TEST(RtpPacketInfoTest, Ssrc) {
Alessio Bazzicaa1d03562022-09-19 16:05:2919 constexpr uint32_t kValue = 4038189233;
Chen Xingd2a66862019-06-03 12:53:4220
21 RtpPacketInfo lhs;
22 RtpPacketInfo rhs;
23
24 EXPECT_TRUE(lhs == rhs);
25 EXPECT_FALSE(lhs != rhs);
26
Alessio Bazzicaa1d03562022-09-19 16:05:2927 rhs.set_ssrc(kValue);
28 EXPECT_EQ(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 12:53:4229
30 EXPECT_FALSE(lhs == rhs);
31 EXPECT_TRUE(lhs != rhs);
32
33 lhs = rhs;
34
35 EXPECT_TRUE(lhs == rhs);
36 EXPECT_FALSE(lhs != rhs);
37
38 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 16:05:2939 EXPECT_NE(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 12:53:4240
Alessio Bazzicaa1d03562022-09-19 16:05:2941 rhs = RtpPacketInfo(/*ssrc=*/kValue, /*csrcs=*/{}, /*rtp_timestamp=*/{},
42 /*receive_time=*/Timestamp::Zero());
43 EXPECT_EQ(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 12:53:4244}
45
46TEST(RtpPacketInfoTest, Csrcs) {
47 const std::vector<uint32_t> value = {4038189233, 3016333617, 1207992985};
48
49 RtpPacketInfo lhs;
50 RtpPacketInfo rhs;
51
52 EXPECT_TRUE(lhs == rhs);
53 EXPECT_FALSE(lhs != rhs);
54
55 rhs.set_csrcs(value);
56 EXPECT_EQ(rhs.csrcs(), value);
57
58 EXPECT_FALSE(lhs == rhs);
59 EXPECT_TRUE(lhs != rhs);
60
61 lhs = rhs;
62
63 EXPECT_TRUE(lhs == rhs);
64 EXPECT_FALSE(lhs != rhs);
65
66 rhs = RtpPacketInfo();
67 EXPECT_NE(rhs.csrcs(), value);
68
Alessio Bazzicaa1d03562022-09-19 16:05:2969 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/value, /*rtp_timestamp=*/{},
70 /*receive_time=*/Timestamp::Zero());
Chen Xingd2a66862019-06-03 12:53:4271 EXPECT_EQ(rhs.csrcs(), value);
72}
73
Chen Xingd2a66862019-06-03 12:53:4274TEST(RtpPacketInfoTest, RtpTimestamp) {
Alessio Bazzicaa1d03562022-09-19 16:05:2975 constexpr uint32_t kValue = 4038189233;
Chen Xingd2a66862019-06-03 12:53:4276
77 RtpPacketInfo lhs;
78 RtpPacketInfo rhs;
79
80 EXPECT_TRUE(lhs == rhs);
81 EXPECT_FALSE(lhs != rhs);
82
Alessio Bazzicaa1d03562022-09-19 16:05:2983 rhs.set_rtp_timestamp(kValue);
84 EXPECT_EQ(rhs.rtp_timestamp(), kValue);
Chen Xingd2a66862019-06-03 12:53:4285
86 EXPECT_FALSE(lhs == rhs);
87 EXPECT_TRUE(lhs != rhs);
88
89 lhs = rhs;
90
91 EXPECT_TRUE(lhs == rhs);
92 EXPECT_FALSE(lhs != rhs);
93
94 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 16:05:2995 EXPECT_NE(rhs.rtp_timestamp(), kValue);
Chen Xingd2a66862019-06-03 12:53:4296
Alessio Bazzicaa1d03562022-09-19 16:05:2997 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/kValue,
98 /*receive_time=*/Timestamp::Zero());
99 EXPECT_EQ(rhs.rtp_timestamp(), kValue);
Minyue Li63b30952021-05-19 12:38:25100}
101
Chen Xingd2a66862019-06-03 12:53:42102TEST(RtpPacketInfoTest, ReceiveTimeMs) {
Alessio Bazzicaa1d03562022-09-19 16:05:29103 constexpr Timestamp kValue = Timestamp::Micros(8868963877546349045LL);
Chen Xingd2a66862019-06-03 12:53:42104
105 RtpPacketInfo lhs;
106 RtpPacketInfo rhs;
107
108 EXPECT_TRUE(lhs == rhs);
109 EXPECT_FALSE(lhs != rhs);
110
Alessio Bazzicaa1d03562022-09-19 16:05:29111 rhs.set_receive_time(kValue);
112 EXPECT_EQ(rhs.receive_time(), kValue);
Chen Xingd2a66862019-06-03 12:53:42113
114 EXPECT_FALSE(lhs == rhs);
115 EXPECT_TRUE(lhs != rhs);
116
117 lhs = rhs;
118
119 EXPECT_TRUE(lhs == rhs);
120 EXPECT_FALSE(lhs != rhs);
121
122 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 16:05:29123 EXPECT_NE(rhs.receive_time(), kValue);
Chen Xingd2a66862019-06-03 12:53:42124
Alessio Bazzicaa1d03562022-09-19 16:05:29125 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
126 /*receive_time=*/kValue);
127 EXPECT_EQ(rhs.receive_time(), kValue);
128}
129
130TEST(RtpPacketInfoTest, AudioLevel) {
131 constexpr absl::optional<uint8_t> kValue = 31;
132
133 RtpPacketInfo lhs;
134 RtpPacketInfo rhs;
135
136 EXPECT_TRUE(lhs == rhs);
137 EXPECT_FALSE(lhs != rhs);
138
139 rhs.set_audio_level(kValue);
140 EXPECT_EQ(rhs.audio_level(), kValue);
141
142 EXPECT_FALSE(lhs == rhs);
143 EXPECT_TRUE(lhs != rhs);
144
145 lhs = rhs;
146
147 EXPECT_TRUE(lhs == rhs);
148 EXPECT_FALSE(lhs != rhs);
149
150 rhs = RtpPacketInfo();
151 EXPECT_NE(rhs.audio_level(), kValue);
152
153 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
154 /*receive_time=*/Timestamp::Zero());
155 rhs.set_audio_level(kValue);
156 EXPECT_EQ(rhs.audio_level(), kValue);
157}
158
159TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
160 constexpr absl::optional<AbsoluteCaptureTime> kValue = AbsoluteCaptureTime{
161 .absolute_capture_timestamp = 12, .estimated_capture_clock_offset = 34};
162
163 RtpPacketInfo lhs;
164 RtpPacketInfo rhs;
165
166 EXPECT_TRUE(lhs == rhs);
167 EXPECT_FALSE(lhs != rhs);
168
169 rhs.set_absolute_capture_time(kValue);
170 EXPECT_EQ(rhs.absolute_capture_time(), kValue);
171
172 EXPECT_FALSE(lhs == rhs);
173 EXPECT_TRUE(lhs != rhs);
174
175 lhs = rhs;
176
177 EXPECT_TRUE(lhs == rhs);
178 EXPECT_FALSE(lhs != rhs);
179
180 rhs = RtpPacketInfo();
181 EXPECT_NE(rhs.absolute_capture_time(), kValue);
182
183 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
184 /*receive_time=*/Timestamp::Zero());
185 rhs.set_absolute_capture_time(kValue);
186 EXPECT_EQ(rhs.absolute_capture_time(), kValue);
187}
188
189TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
Alessio Bazzica56b96ffe2022-09-20 09:16:16190 constexpr TimeDelta kValue = TimeDelta::Micros(8868963877546349045LL);
Alessio Bazzicaa1d03562022-09-19 16:05:29191
192 RtpPacketInfo lhs;
193 RtpPacketInfo rhs;
194
195 EXPECT_TRUE(lhs == rhs);
196 EXPECT_FALSE(lhs != rhs);
197
198 rhs.set_local_capture_clock_offset(kValue);
199 EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
200
201 EXPECT_FALSE(lhs == rhs);
202 EXPECT_TRUE(lhs != rhs);
203
204 lhs = rhs;
205
206 EXPECT_TRUE(lhs == rhs);
207 EXPECT_FALSE(lhs != rhs);
208
209 rhs = RtpPacketInfo();
210 EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
211
212 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
213 /*receive_time=*/Timestamp::Zero());
214 rhs.set_local_capture_clock_offset(kValue);
215 EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
Chen Xingd2a66862019-06-03 12:53:42216}
217
218} // namespace webrtc