OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/modules/rtp_rtcp/source/rtp_packet.h" | 11 #include "webrtc/modules/rtp_rtcp/source/rtp_packet.h" |
12 | 12 |
13 #include <cstring> | 13 #include <cstring> |
14 #include <utility> | 14 #include <utility> |
15 | 15 |
16 #include "webrtc/common_types.h" | 16 #include "webrtc/common_types.h" |
17 #include "webrtc/modules/rtp_rtcp/include/rtp_header_extension_map.h" | 17 #include "webrtc/modules/rtp_rtcp/include/rtp_header_extension_map.h" |
18 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" | 18 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
19 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h" | |
20 #include "webrtc/rtc_base/checks.h" | 19 #include "webrtc/rtc_base/checks.h" |
21 #include "webrtc/rtc_base/logging.h" | 20 #include "webrtc/rtc_base/logging.h" |
22 #include "webrtc/rtc_base/random.h" | 21 #include "webrtc/rtc_base/random.h" |
23 | 22 |
24 namespace webrtc { | 23 namespace webrtc { |
25 namespace rtp { | 24 namespace rtp { |
26 namespace { | 25 namespace { |
27 constexpr size_t kFixedHeaderSize = 12; | 26 constexpr size_t kFixedHeaderSize = 12; |
28 constexpr uint8_t kRtpVersion = 2; | 27 constexpr uint8_t kRtpVersion = 2; |
29 constexpr uint16_t kOneByteExtensionId = 0xBEDE; | 28 constexpr uint16_t kOneByteExtensionId = 0xBEDE; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 size_t num_csrc = data()[0] & 0x0F; | 137 size_t num_csrc = data()[0] & 0x0F; |
139 RTC_DCHECK_GE(capacity(), kFixedHeaderSize + num_csrc * 4); | 138 RTC_DCHECK_GE(capacity(), kFixedHeaderSize + num_csrc * 4); |
140 std::vector<uint32_t> csrcs(num_csrc); | 139 std::vector<uint32_t> csrcs(num_csrc); |
141 for (size_t i = 0; i < num_csrc; ++i) { | 140 for (size_t i = 0; i < num_csrc; ++i) { |
142 csrcs[i] = | 141 csrcs[i] = |
143 ByteReader<uint32_t>::ReadBigEndian(&data()[kFixedHeaderSize + i * 4]); | 142 ByteReader<uint32_t>::ReadBigEndian(&data()[kFixedHeaderSize + i * 4]); |
144 } | 143 } |
145 return csrcs; | 144 return csrcs; |
146 } | 145 } |
147 | 146 |
148 void Packet::GetHeader(RTPHeader* header) const { | |
149 header->markerBit = Marker(); | |
150 header->payloadType = PayloadType(); | |
151 header->sequenceNumber = SequenceNumber(); | |
152 header->timestamp = Timestamp(); | |
153 header->ssrc = Ssrc(); | |
154 std::vector<uint32_t> csrcs = Csrcs(); | |
155 header->numCSRCs = csrcs.size(); | |
156 for (size_t i = 0; i < csrcs.size(); ++i) { | |
157 header->arrOfCSRCs[i] = csrcs[i]; | |
158 } | |
159 header->paddingLength = padding_size(); | |
160 header->headerLength = headers_size(); | |
161 header->payload_type_frequency = 0; | |
162 header->extension.hasTransmissionTimeOffset = | |
163 GetExtension<TransmissionOffset>( | |
164 &header->extension.transmissionTimeOffset); | |
165 header->extension.hasAbsoluteSendTime = | |
166 GetExtension<AbsoluteSendTime>(&header->extension.absoluteSendTime); | |
167 header->extension.hasTransportSequenceNumber = | |
168 GetExtension<TransportSequenceNumber>( | |
169 &header->extension.transportSequenceNumber); | |
170 header->extension.hasAudioLevel = GetExtension<AudioLevel>( | |
171 &header->extension.voiceActivity, &header->extension.audioLevel); | |
172 header->extension.hasVideoRotation = | |
173 GetExtension<VideoOrientation>(&header->extension.videoRotation); | |
174 header->extension.hasVideoContentType = | |
175 GetExtension<VideoContentTypeExtension>( | |
176 &header->extension.videoContentType); | |
177 header->extension.has_video_timing = | |
178 GetExtension<VideoTimingExtension>(&header->extension.video_timing); | |
179 GetExtension<RtpStreamId>(&header->extension.stream_id); | |
180 GetExtension<RepairedRtpStreamId>(&header->extension.repaired_stream_id); | |
181 GetExtension<RtpMid>(&header->extension.mid); | |
182 GetExtension<PlayoutDelayLimits>(&header->extension.playout_delay); | |
183 } | |
184 | |
185 size_t Packet::headers_size() const { | 147 size_t Packet::headers_size() const { |
186 return payload_offset_; | 148 return payload_offset_; |
187 } | 149 } |
188 | 150 |
189 size_t Packet::payload_size() const { | 151 size_t Packet::payload_size() const { |
190 return payload_size_; | 152 return payload_size_; |
191 } | 153 } |
192 | 154 |
193 size_t Packet::padding_size() const { | 155 size_t Packet::padding_size() const { |
194 return padding_size_; | 156 return padding_size_; |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 uint8_t* Packet::WriteAt(size_t offset) { | 540 uint8_t* Packet::WriteAt(size_t offset) { |
579 return buffer_.data() + offset; | 541 return buffer_.data() + offset; |
580 } | 542 } |
581 | 543 |
582 void Packet::WriteAt(size_t offset, uint8_t byte) { | 544 void Packet::WriteAt(size_t offset, uint8_t byte) { |
583 buffer_.data()[offset] = byte; | 545 buffer_.data()[offset] = byte; |
584 } | 546 } |
585 | 547 |
586 } // namespace rtp | 548 } // namespace rtp |
587 } // namespace webrtc | 549 } // namespace webrtc |
OLD | NEW |