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