Revert "Extend TransportSequenceNumber RTP header extension"
This reverts commit 28c7362bc485d22bdc8c744bc725022780187a96. Reason for revert: It breaks Linux64 Release (libfuzzer): https://logs.chromium.org/logs/webrtc/buildbucket/cr-buildbucket.appspot.com/8921003137877469920/+/steps/compile/0/stdout Original change's description: > Extend TransportSequenceNumber RTP header extension > > Extend TransportSequenceNumber RTP header extension to support > feedback on sender request. > > Bug: webrtc:10262 > Change-Id: Ibc1cf18162d15cd102e951c9dc697d8ea536ebb6 > Reviewed-on: https://webrtc-review.googlesource.com/c/123233 > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> > Reviewed-by: Alex Loiko <aleloi@webrtc.org> > Commit-Queue: Johannes Kron <kron@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#26766} TBR=danilchap@webrtc.org,aleloi@webrtc.org,kron@webrtc.org Change-Id: Ie8a73f5fdffd99919ceaa1ae8911a1645f2077e9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:10262 Reviewed-on: https://webrtc-review.googlesource.com/c/123522 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26767}
This commit is contained in:
committed by
Commit Bot
parent
28c7362bc4
commit
109b5fb5f5
@ -126,93 +126,27 @@ bool TransmissionOffset::Write(rtc::ArrayView<uint8_t> data, int32_t rtp_time) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// TransportSequenceNumber
|
||||
//
|
||||
// 0 1 2
|
||||
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
// | ID | L=1 |transport-wide sequence number |
|
||||
// | ID | L=1 |transport wide sequence number |
|
||||
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
constexpr RTPExtensionType TransportSequenceNumber::kId;
|
||||
constexpr uint8_t TransportSequenceNumber::kValueSizeBytes;
|
||||
constexpr const char TransportSequenceNumber::kUri[];
|
||||
|
||||
bool TransportSequenceNumber::Parse(rtc::ArrayView<const uint8_t> data,
|
||||
uint16_t* transport_sequence_number) {
|
||||
if (data.size() != kValueSizeBytes)
|
||||
uint16_t* value) {
|
||||
if (data.size() != 2)
|
||||
return false;
|
||||
*transport_sequence_number = ByteReader<uint16_t>::ReadBigEndian(data.data());
|
||||
*value = ByteReader<uint16_t>::ReadBigEndian(data.data());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TransportSequenceNumber::Write(rtc::ArrayView<uint8_t> data,
|
||||
uint16_t transport_sequence_number) {
|
||||
RTC_DCHECK_EQ(data.size(), ValueSize(transport_sequence_number));
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data(), transport_sequence_number);
|
||||
return true;
|
||||
}
|
||||
|
||||
// TransportSequenceNumberV2
|
||||
//
|
||||
// In addition to the format used for TransportSequencNumber, V2 also supports
|
||||
// the following packet format where two extra bytes are used to specify that
|
||||
// the sender requests immediate feedback.
|
||||
// 0 1 2 3
|
||||
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
// | ID | L=3 |transport-wide sequence number |T| seq count |
|
||||
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
// |seq count cont.|
|
||||
// +-+-+-+-+-+-+-+-+
|
||||
//
|
||||
// The bit |T| determines whether the feedback should include timing information
|
||||
// or not and |seq_count| determines how many additional packets the feedback
|
||||
// packet should cover.
|
||||
constexpr RTPExtensionType TransportSequenceNumberV2::kId;
|
||||
constexpr uint8_t TransportSequenceNumberV2::kValueSizeBytesWithFeedbackRequest;
|
||||
constexpr const char TransportSequenceNumberV2::kUri[];
|
||||
constexpr uint16_t TransportSequenceNumberV2::kIncludeTimestampsBit;
|
||||
|
||||
bool TransportSequenceNumberV2::Parse(
|
||||
rtc::ArrayView<const uint8_t> data,
|
||||
uint16_t* transport_sequence_number,
|
||||
absl::optional<FeedbackRequest>* feedback_request) {
|
||||
if (data.size() != TransportSequenceNumber::kValueSizeBytes &&
|
||||
data.size() != kValueSizeBytesWithFeedbackRequest)
|
||||
return false;
|
||||
|
||||
*transport_sequence_number = ByteReader<uint16_t>::ReadBigEndian(data.data());
|
||||
|
||||
if (data.size() == kValueSizeBytesWithFeedbackRequest) {
|
||||
uint16_t feedback_request_raw =
|
||||
ByteReader<uint16_t>::ReadBigEndian(data.data() + 2);
|
||||
bool include_timestamps =
|
||||
(feedback_request_raw & kIncludeTimestampsBit) != 0;
|
||||
uint16_t sequence_count = feedback_request_raw & ~kIncludeTimestampsBit;
|
||||
*feedback_request = {include_timestamps, sequence_count};
|
||||
} else {
|
||||
*feedback_request = absl::nullopt;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TransportSequenceNumberV2::Write(
|
||||
rtc::ArrayView<uint8_t> data,
|
||||
uint16_t transport_sequence_number,
|
||||
const absl::optional<FeedbackRequest>& feedback_request) {
|
||||
RTC_DCHECK_EQ(data.size(),
|
||||
ValueSize(transport_sequence_number, feedback_request));
|
||||
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data(), transport_sequence_number);
|
||||
|
||||
if (feedback_request) {
|
||||
RTC_DCHECK_GE(feedback_request->sequence_count, 0);
|
||||
RTC_DCHECK_LT(feedback_request->sequence_count, kIncludeTimestampsBit);
|
||||
uint16_t feedback_request_raw =
|
||||
feedback_request->sequence_count |
|
||||
(feedback_request->include_timestamps ? kIncludeTimestampsBit : 0);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data() + 2, feedback_request_raw);
|
||||
}
|
||||
uint16_t value) {
|
||||
RTC_DCHECK_EQ(data.size(), 2);
|
||||
ByteWriter<uint16_t>::WriteBigEndian(data.data(), value);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user