Pass buffer with size when writing rtp header extension
Bug: chromium:826911 Change-Id: I617fecfee74745004067d892d6e31c94304f99ea Reviewed-on: https://webrtc-review.googlesource.com/83945 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23641}
This commit is contained in:
committed by
Commit Bot
parent
0040b66ad3
commit
9bf31584d1
@ -43,9 +43,11 @@ bool AbsoluteSendTime::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AbsoluteSendTime::Write(uint8_t* data, uint32_t time_24bits) {
|
||||
bool AbsoluteSendTime::Write(rtc::ArrayView<uint8_t> data,
|
||||
uint32_t time_24bits) {
|
||||
RTC_DCHECK_EQ(data.size(), 3);
|
||||
RTC_DCHECK_LE(time_24bits, 0x00FFFFFF);
|
||||
ByteWriter<uint32_t, 3>::WriteBigEndian(data, time_24bits);
|
||||
ByteWriter<uint32_t, 3>::WriteBigEndian(data.data(), time_24bits);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -75,9 +77,10 @@ bool AudioLevel::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AudioLevel::Write(uint8_t* data,
|
||||
bool AudioLevel::Write(rtc::ArrayView<uint8_t> data,
|
||||
bool voice_activity,
|
||||
uint8_t audio_level) {
|
||||
RTC_DCHECK_EQ(data.size(), 1);
|
||||
RTC_CHECK_LE(audio_level, 0x7f);
|
||||
data[0] = (voice_activity ? 0x80 : 0x00) | audio_level;
|
||||
return true;
|
||||
@ -111,9 +114,10 @@ bool TransmissionOffset::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TransmissionOffset::Write(uint8_t* data, int32_t rtp_time) {
|
||||
bool TransmissionOffset::Write(rtc::ArrayView<uint8_t> data, int32_t rtp_time) {
|
||||
RTC_DCHECK_EQ(data.size(), 3);
|
||||
RTC_DCHECK_LE(rtp_time, 0x00ffffff);
|
||||
ByteWriter<int32_t, 3>::WriteBigEndian(data, rtp_time);
|
||||
ByteWriter<int32_t, 3>::WriteBigEndian(data.data(), rtp_time);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -134,8 +138,10 @@ bool TransportSequenceNumber::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TransportSequenceNumber::Write(uint8_t* data, uint16_t value) {
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data, value);
|
||||
bool TransportSequenceNumber::Write(rtc::ArrayView<uint8_t> data,
|
||||
uint16_t value) {
|
||||
RTC_DCHECK_EQ(data.size(), 2);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data(), value);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -162,7 +168,9 @@ bool VideoOrientation::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoOrientation::Write(uint8_t* data, VideoRotation rotation) {
|
||||
bool VideoOrientation::Write(rtc::ArrayView<uint8_t> data,
|
||||
VideoRotation rotation) {
|
||||
RTC_DCHECK_EQ(data.size(), 1);
|
||||
data[0] = ConvertVideoRotationToCVOByte(rotation);
|
||||
return true;
|
||||
}
|
||||
@ -175,7 +183,8 @@ bool VideoOrientation::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoOrientation::Write(uint8_t* data, uint8_t value) {
|
||||
bool VideoOrientation::Write(rtc::ArrayView<uint8_t> data, uint8_t value) {
|
||||
RTC_DCHECK_EQ(data.size(), 1);
|
||||
data[0] = value;
|
||||
return true;
|
||||
}
|
||||
@ -204,15 +213,17 @@ bool PlayoutDelayLimits::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PlayoutDelayLimits::Write(uint8_t* data,
|
||||
bool PlayoutDelayLimits::Write(rtc::ArrayView<uint8_t> data,
|
||||
const PlayoutDelay& playout_delay) {
|
||||
RTC_DCHECK_EQ(data.size(), 3);
|
||||
RTC_DCHECK_LE(0, playout_delay.min_ms);
|
||||
RTC_DCHECK_LE(playout_delay.min_ms, playout_delay.max_ms);
|
||||
RTC_DCHECK_LE(playout_delay.max_ms, kMaxMs);
|
||||
// Convert MS to value to be sent on extension header.
|
||||
uint32_t min_delay = playout_delay.min_ms / kGranularityMs;
|
||||
uint32_t max_delay = playout_delay.max_ms / kGranularityMs;
|
||||
ByteWriter<uint32_t, 3>::WriteBigEndian(data, (min_delay << 12) | max_delay);
|
||||
ByteWriter<uint32_t, 3>::WriteBigEndian(data.data(),
|
||||
(min_delay << 12) | max_delay);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -239,8 +250,9 @@ bool VideoContentTypeExtension::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool VideoContentTypeExtension::Write(uint8_t* data,
|
||||
bool VideoContentTypeExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||
VideoContentType content_type) {
|
||||
RTC_DCHECK_EQ(data.size(), 1);
|
||||
data[0] = static_cast<uint8_t>(content_type);
|
||||
return true;
|
||||
}
|
||||
@ -303,35 +315,38 @@ bool VideoTimingExtension::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoTimingExtension::Write(uint8_t* data, const VideoSendTiming& timing) {
|
||||
ByteWriter<uint8_t>::WriteBigEndian(data + VideoSendTiming::kFlagsOffset,
|
||||
timing.flags);
|
||||
bool VideoTimingExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||
const VideoSendTiming& timing) {
|
||||
RTC_DCHECK_EQ(data.size(), 1 + 2 * 6);
|
||||
ByteWriter<uint8_t>::WriteBigEndian(
|
||||
data.data() + VideoSendTiming::kFlagsOffset, timing.flags);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kEncodeStartDeltaOffset,
|
||||
data.data() + VideoSendTiming::kEncodeStartDeltaOffset,
|
||||
timing.encode_start_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kEncodeFinishDeltaOffset,
|
||||
data.data() + VideoSendTiming::kEncodeFinishDeltaOffset,
|
||||
timing.encode_finish_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kPacketizationFinishDeltaOffset,
|
||||
data.data() + VideoSendTiming::kPacketizationFinishDeltaOffset,
|
||||
timing.packetization_finish_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kPacerExitDeltaOffset,
|
||||
data.data() + VideoSendTiming::kPacerExitDeltaOffset,
|
||||
timing.pacer_exit_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kNetworkTimestampDeltaOffset,
|
||||
data.data() + VideoSendTiming::kNetworkTimestampDeltaOffset,
|
||||
timing.network_timestamp_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(
|
||||
data + VideoSendTiming::kNetwork2TimestampDeltaOffset,
|
||||
data.data() + VideoSendTiming::kNetwork2TimestampDeltaOffset,
|
||||
timing.network2_timestamp_delta_ms);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoTimingExtension::Write(uint8_t* data,
|
||||
bool VideoTimingExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||
uint16_t time_delta_ms,
|
||||
uint8_t offset) {
|
||||
RTC_DCHECK_GE(data.size(), offset + 2);
|
||||
RTC_DCHECK_LE(offset, kValueSizeBytes - sizeof(uint16_t));
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data + offset, time_delta_ms);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data() + offset, time_delta_ms);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -344,11 +359,12 @@ bool BaseRtpStringExtension::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BaseRtpStringExtension::Write(uint8_t* data,
|
||||
bool BaseRtpStringExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||
const StringRtpHeaderExtension& str) {
|
||||
RTC_DCHECK_EQ(data.size(), str.size());
|
||||
RTC_DCHECK_GE(str.size(), 1);
|
||||
RTC_DCHECK_LE(str.size(), StringRtpHeaderExtension::kMaxSize);
|
||||
memcpy(data, str.data(), str.size());
|
||||
memcpy(data.data(), str.data(), str.size());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -364,10 +380,12 @@ bool BaseRtpStringExtension::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BaseRtpStringExtension::Write(uint8_t* data, const std::string& str) {
|
||||
bool BaseRtpStringExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||
const std::string& str) {
|
||||
RTC_DCHECK_EQ(data.size(), str.size());
|
||||
RTC_DCHECK_GE(str.size(), 1);
|
||||
RTC_DCHECK_LE(str.size(), StringRtpHeaderExtension::kMaxSize);
|
||||
memcpy(data, str.data(), str.size());
|
||||
memcpy(data.data(), str.data(), str.size());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user