tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

rtp_packet_received.cc (3362B)


      1 /*
      2 *  Copyright (c) 2017 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 "modules/rtp_rtcp/source/rtp_packet_received.h"
     12 
     13 #include <cstddef>
     14 #include <cstdint>
     15 #include <vector>
     16 
     17 #include "api/rtp_headers.h"
     18 #include "api/units/timestamp.h"
     19 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
     20 #include "modules/rtp_rtcp/source/rtp_packet.h"
     21 #include "rtc_base/numerics/safe_conversions.h"
     22 
     23 namespace webrtc {
     24 
     25 RtpPacketReceived::RtpPacketReceived() = default;
     26 RtpPacketReceived::RtpPacketReceived(
     27    const ExtensionManager* extensions,
     28    class Timestamp arrival_time /*= Timestamp::MinusInfinity()*/)
     29    : RtpPacket(extensions), arrival_time_(arrival_time) {}
     30 RtpPacketReceived::RtpPacketReceived(const RtpPacketReceived& packet) = default;
     31 RtpPacketReceived::RtpPacketReceived(RtpPacketReceived&& packet) = default;
     32 
     33 RtpPacketReceived& RtpPacketReceived::operator=(
     34    const RtpPacketReceived& packet) = default;
     35 RtpPacketReceived& RtpPacketReceived::operator=(RtpPacketReceived&& packet) =
     36    default;
     37 
     38 RtpPacketReceived::~RtpPacketReceived() {}
     39 
     40 void RtpPacketReceived::GetHeader(RTPHeader* header) const {
     41  header->markerBit = Marker();
     42  header->payloadType = PayloadType();
     43  header->sequenceNumber = SequenceNumber();
     44  header->timestamp = Timestamp();
     45  header->ssrc = Ssrc();
     46  std::vector<uint32_t> csrcs = Csrcs();
     47  header->numCSRCs = dchecked_cast<uint8_t>(csrcs.size());
     48  for (size_t i = 0; i < csrcs.size(); ++i) {
     49    header->arrOfCSRCs[i] = csrcs[i];
     50  }
     51  header->paddingLength = padding_size();
     52  header->headerLength = headers_size();
     53  header->extension.hasTransmissionTimeOffset =
     54      GetExtension<TransmissionOffset>(
     55          &header->extension.transmissionTimeOffset);
     56  header->extension.hasAbsoluteSendTime =
     57      GetExtension<AbsoluteSendTime>(&header->extension.absoluteSendTime);
     58  header->extension.absolute_capture_time =
     59      GetExtension<AbsoluteCaptureTimeExtension>();
     60  header->extension.hasTransportSequenceNumber =
     61      GetExtension<TransportSequenceNumberV2>(
     62          &header->extension.transportSequenceNumber,
     63          &header->extension.feedback_request) ||
     64      GetExtension<TransportSequenceNumber>(
     65          &header->extension.transportSequenceNumber);
     66  header->extension.set_audio_level(GetExtension<AudioLevelExtension>());
     67  header->extension.hasVideoRotation =
     68      GetExtension<VideoOrientation>(&header->extension.videoRotation);
     69  header->extension.hasVideoContentType =
     70      GetExtension<VideoContentTypeExtension>(
     71          &header->extension.videoContentType);
     72  header->extension.has_video_timing =
     73      GetExtension<VideoTimingExtension>(&header->extension.video_timing);
     74  GetExtension<RtpStreamId>(&header->extension.stream_id);
     75  GetExtension<RepairedRtpStreamId>(&header->extension.repaired_stream_id);
     76  GetExtension<RtpMid>(&header->extension.mid);
     77  GetExtension<PlayoutDelayLimits>(&header->extension.playout_delay);
     78  header->extension.color_space = GetExtension<ColorSpaceExtension>();
     79 }
     80 
     81 }  // namespace webrtc