/* * Copyright (c) 2017 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 "modules/rtp_rtcp/source/rtp_packet_received.h" #include #include #include #include "modules/rtp_rtcp/source/rtp_header_extensions.h" #include "rtc_base/numerics/safe_conversions.h" namespace webrtc { RtpPacketReceived::RtpPacketReceived() = default; RtpPacketReceived::RtpPacketReceived( const ExtensionManager* extensions, webrtc::Timestamp arrival_time /*= webrtc::Timestamp::MinusInfinity()*/) : RtpPacket(extensions), arrival_time_(arrival_time) {} RtpPacketReceived::RtpPacketReceived(const RtpPacketReceived& packet) = default; RtpPacketReceived::RtpPacketReceived(RtpPacketReceived&& packet) = default; RtpPacketReceived& RtpPacketReceived::operator=( const RtpPacketReceived& packet) = default; RtpPacketReceived& RtpPacketReceived::operator=(RtpPacketReceived&& packet) = default; RtpPacketReceived::~RtpPacketReceived() {} void RtpPacketReceived::GetHeader(RTPHeader* header) const { header->markerBit = Marker(); header->payloadType = PayloadType(); header->sequenceNumber = SequenceNumber(); header->timestamp = Timestamp(); header->ssrc = Ssrc(); std::vector csrcs = Csrcs(); header->numCSRCs = rtc::dchecked_cast(csrcs.size()); for (size_t i = 0; i < csrcs.size(); ++i) { header->arrOfCSRCs[i] = csrcs[i]; } header->paddingLength = padding_size(); header->headerLength = headers_size(); header->payload_type_frequency = payload_type_frequency(); header->extension.hasTransmissionTimeOffset = GetExtension( &header->extension.transmissionTimeOffset); header->extension.hasAbsoluteSendTime = GetExtension(&header->extension.absoluteSendTime); header->extension.absolute_capture_time = GetExtension(); header->extension.hasTransportSequenceNumber = GetExtension( &header->extension.transportSequenceNumber, &header->extension.feedback_request) || GetExtension( &header->extension.transportSequenceNumber); header->extension.hasAudioLevel = GetExtension( &header->extension.voiceActivity, &header->extension.audioLevel); header->extension.hasVideoRotation = GetExtension(&header->extension.videoRotation); header->extension.hasVideoContentType = GetExtension( &header->extension.videoContentType); header->extension.has_video_timing = GetExtension(&header->extension.video_timing); GetExtension(&header->extension.stream_id); GetExtension(&header->extension.repaired_stream_id); GetExtension(&header->extension.mid); GetExtension(&header->extension.playout_delay); header->extension.color_space = GetExtension(); } } // namespace webrtc