blob: f84029b6040c009f59f9183181ca8f38d43e2a44 [file] [log] [blame]
danilchapce251812017-09-11 12:24:41 -07001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "modules/rtp_rtcp/source/rtp_packet_received.h"
danilchapce251812017-09-11 12:24:41 -070012
13#include <vector>
14
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020015#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
16#include "rtc_base/safe_conversions.h"
danilchapce251812017-09-11 12:24:41 -070017
18namespace webrtc {
19
20void RtpPacketReceived::GetHeader(RTPHeader* header) const {
21 header->markerBit = Marker();
22 header->payloadType = PayloadType();
23 header->sequenceNumber = SequenceNumber();
24 header->timestamp = Timestamp();
25 header->ssrc = Ssrc();
26 std::vector<uint32_t> csrcs = Csrcs();
danilchap772bd8b2017-09-13 03:24:28 -070027 header->numCSRCs = rtc::dchecked_cast<uint8_t>(csrcs.size());
danilchapce251812017-09-11 12:24:41 -070028 for (size_t i = 0; i < csrcs.size(); ++i) {
29 header->arrOfCSRCs[i] = csrcs[i];
30 }
31 header->paddingLength = padding_size();
32 header->headerLength = headers_size();
33 header->payload_type_frequency = payload_type_frequency();
34 header->extension.hasTransmissionTimeOffset =
35 GetExtension<TransmissionOffset>(
36 &header->extension.transmissionTimeOffset);
37 header->extension.hasAbsoluteSendTime =
38 GetExtension<AbsoluteSendTime>(&header->extension.absoluteSendTime);
39 header->extension.hasTransportSequenceNumber =
40 GetExtension<TransportSequenceNumber>(
41 &header->extension.transportSequenceNumber);
42 header->extension.hasAudioLevel = GetExtension<AudioLevel>(
43 &header->extension.voiceActivity, &header->extension.audioLevel);
44 header->extension.hasVideoRotation =
45 GetExtension<VideoOrientation>(&header->extension.videoRotation);
46 header->extension.hasVideoContentType =
47 GetExtension<VideoContentTypeExtension>(
48 &header->extension.videoContentType);
49 header->extension.has_video_timing =
50 GetExtension<VideoTimingExtension>(&header->extension.video_timing);
51 GetExtension<RtpStreamId>(&header->extension.stream_id);
52 GetExtension<RepairedRtpStreamId>(&header->extension.repaired_stream_id);
53 GetExtension<RtpMid>(&header->extension.mid);
54 GetExtension<PlayoutDelayLimits>(&header->extension.playout_delay);
55}
56
57} // namespace webrtc