xref: /aosp_15_r20/external/webrtc/api/rtp_packet_info.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_info.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <algorithm>
14*d9f75844SAndroid Build Coastguard Worker #include <utility>
15*d9f75844SAndroid Build Coastguard Worker 
16*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
17*d9f75844SAndroid Build Coastguard Worker 
RtpPacketInfo()18*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo::RtpPacketInfo()
19*d9f75844SAndroid Build Coastguard Worker     : ssrc_(0), rtp_timestamp_(0), receive_time_(Timestamp::MinusInfinity()) {}
20*d9f75844SAndroid Build Coastguard Worker 
RtpPacketInfo(uint32_t ssrc,std::vector<uint32_t> csrcs,uint32_t rtp_timestamp,Timestamp receive_time)21*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo::RtpPacketInfo(uint32_t ssrc,
22*d9f75844SAndroid Build Coastguard Worker                              std::vector<uint32_t> csrcs,
23*d9f75844SAndroid Build Coastguard Worker                              uint32_t rtp_timestamp,
24*d9f75844SAndroid Build Coastguard Worker                              Timestamp receive_time)
25*d9f75844SAndroid Build Coastguard Worker     : ssrc_(ssrc),
26*d9f75844SAndroid Build Coastguard Worker       csrcs_(std::move(csrcs)),
27*d9f75844SAndroid Build Coastguard Worker       rtp_timestamp_(rtp_timestamp),
28*d9f75844SAndroid Build Coastguard Worker       receive_time_(receive_time) {}
29*d9f75844SAndroid Build Coastguard Worker 
RtpPacketInfo(const RTPHeader & rtp_header,Timestamp receive_time)30*d9f75844SAndroid Build Coastguard Worker RtpPacketInfo::RtpPacketInfo(const RTPHeader& rtp_header,
31*d9f75844SAndroid Build Coastguard Worker                              Timestamp receive_time)
32*d9f75844SAndroid Build Coastguard Worker     : ssrc_(rtp_header.ssrc),
33*d9f75844SAndroid Build Coastguard Worker       rtp_timestamp_(rtp_header.timestamp),
34*d9f75844SAndroid Build Coastguard Worker       receive_time_(receive_time) {
35*d9f75844SAndroid Build Coastguard Worker   const auto& extension = rtp_header.extension;
36*d9f75844SAndroid Build Coastguard Worker   const auto csrcs_count = std::min<size_t>(rtp_header.numCSRCs, kRtpCsrcSize);
37*d9f75844SAndroid Build Coastguard Worker 
38*d9f75844SAndroid Build Coastguard Worker   csrcs_.assign(&rtp_header.arrOfCSRCs[0], &rtp_header.arrOfCSRCs[csrcs_count]);
39*d9f75844SAndroid Build Coastguard Worker 
40*d9f75844SAndroid Build Coastguard Worker   if (extension.hasAudioLevel) {
41*d9f75844SAndroid Build Coastguard Worker     audio_level_ = extension.audioLevel;
42*d9f75844SAndroid Build Coastguard Worker   }
43*d9f75844SAndroid Build Coastguard Worker 
44*d9f75844SAndroid Build Coastguard Worker   absolute_capture_time_ = extension.absolute_capture_time;
45*d9f75844SAndroid Build Coastguard Worker }
46*d9f75844SAndroid Build Coastguard Worker 
operator ==(const RtpPacketInfo & lhs,const RtpPacketInfo & rhs)47*d9f75844SAndroid Build Coastguard Worker bool operator==(const RtpPacketInfo& lhs, const RtpPacketInfo& rhs) {
48*d9f75844SAndroid Build Coastguard Worker   return (lhs.ssrc() == rhs.ssrc()) && (lhs.csrcs() == rhs.csrcs()) &&
49*d9f75844SAndroid Build Coastguard Worker          (lhs.rtp_timestamp() == rhs.rtp_timestamp()) &&
50*d9f75844SAndroid Build Coastguard Worker          (lhs.receive_time() == rhs.receive_time()) &&
51*d9f75844SAndroid Build Coastguard Worker          (lhs.audio_level() == rhs.audio_level()) &&
52*d9f75844SAndroid Build Coastguard Worker          (lhs.absolute_capture_time() == rhs.absolute_capture_time()) &&
53*d9f75844SAndroid Build Coastguard Worker          (lhs.local_capture_clock_offset() == rhs.local_capture_clock_offset());
54*d9f75844SAndroid Build Coastguard Worker }
55*d9f75844SAndroid Build Coastguard Worker 
56*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
57