64 lines
2.1 KiB
C++
64 lines
2.1 KiB
C++
|
/*
|
||
|
* Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
|
||
|
*
|
||
|
* Use of this source code is governed by a BSD-style license
|
||
|
* that can be found in the LICENSE file in the root of the source
|
||
|
* tree. An additional intellectual property rights grant can be found
|
||
|
* in the file PATENTS. All contributing project authors may
|
||
|
* be found in the AUTHORS file in the root of the source tree.
|
||
|
*/
|
||
|
|
||
|
#include "api/rtp_packet_info.h"
|
||
|
|
||
|
#include <stddef.h>
|
||
|
|
||
|
#include <algorithm>
|
||
|
#include <cstdint>
|
||
|
#include <utility>
|
||
|
#include <vector>
|
||
|
|
||
|
#include "api/rtp_headers.h"
|
||
|
#include "api/units/timestamp.h"
|
||
|
|
||
|
namespace webrtc {
|
||
|
|
||
|
RtpPacketInfo::RtpPacketInfo()
|
||
|
: ssrc_(0), rtp_timestamp_(0), receive_time_(Timestamp::MinusInfinity()) {}
|
||
|
|
||
|
RtpPacketInfo::RtpPacketInfo(uint32_t ssrc,
|
||
|
std::vector<uint32_t> csrcs,
|
||
|
uint32_t rtp_timestamp,
|
||
|
Timestamp receive_time)
|
||
|
: ssrc_(ssrc),
|
||
|
csrcs_(std::move(csrcs)),
|
||
|
rtp_timestamp_(rtp_timestamp),
|
||
|
receive_time_(receive_time) {}
|
||
|
|
||
|
RtpPacketInfo::RtpPacketInfo(const RTPHeader& rtp_header,
|
||
|
Timestamp receive_time)
|
||
|
: ssrc_(rtp_header.ssrc),
|
||
|
rtp_timestamp_(rtp_header.timestamp),
|
||
|
receive_time_(receive_time) {
|
||
|
const auto& extension = rtp_header.extension;
|
||
|
const auto csrcs_count = std::min<size_t>(rtp_header.numCSRCs, kRtpCsrcSize);
|
||
|
|
||
|
csrcs_.assign(&rtp_header.arrOfCSRCs[0], &rtp_header.arrOfCSRCs[csrcs_count]);
|
||
|
|
||
|
if (extension.audio_level()) {
|
||
|
audio_level_ = extension.audio_level()->level();
|
||
|
}
|
||
|
|
||
|
absolute_capture_time_ = extension.absolute_capture_time;
|
||
|
}
|
||
|
|
||
|
bool operator==(const RtpPacketInfo& lhs, const RtpPacketInfo& rhs) {
|
||
|
return (lhs.ssrc() == rhs.ssrc()) && (lhs.csrcs() == rhs.csrcs()) &&
|
||
|
(lhs.rtp_timestamp() == rhs.rtp_timestamp()) &&
|
||
|
(lhs.receive_time() == rhs.receive_time()) &&
|
||
|
(lhs.audio_level() == rhs.audio_level()) &&
|
||
|
(lhs.absolute_capture_time() == rhs.absolute_capture_time()) &&
|
||
|
(lhs.local_capture_clock_offset() == rhs.local_capture_clock_offset());
|
||
|
}
|
||
|
|
||
|
} // namespace webrtc
|