From 063c7d18c048a5869c286f0bce48f8debabab6b3 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 19 Nov 2019 11:44:06 +0100 Subject: [PATCH] In dependency descriptor remove extended fields indicator to follow PR64 spec change https://github.com/AOMediaCodec/av1-rtp-spec/pull/64 Bug: webrtc:10342 Change-Id: Ic082d5e551b5f38427d5a43be987b0d35f6ea155 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160001 Reviewed-by: Philip Eliasson Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#29832} --- .../rtp_dependency_descriptor_reader.cc | 22 +++++-------------- .../rtp_dependency_descriptor_writer.cc | 8 +++---- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc b/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc index 5103d7f6c1..cf816c27bc 100644 --- a/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc +++ b/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc @@ -21,9 +21,7 @@ namespace { constexpr int kMaxTemporalId = 7; constexpr int kMaxSpatialId = 3; -constexpr int kMaxTemplates = 63; -constexpr int kMaxTemplateId = kMaxTemplates - 1; -constexpr int kExtendedFieldsIndicator = kMaxTemplates; +constexpr int kMaxTemplates = 64; } // namespace @@ -35,7 +33,7 @@ RtpDependencyDescriptorReader::RtpDependencyDescriptorReader( RTC_DCHECK(descriptor); ReadMandatoryFields(); - if (frame_dependency_template_id_ == kExtendedFieldsIndicator) + if (raw_data.size() > 3) ReadExtendedFields(); structure_ = descriptor->attached_structure @@ -71,11 +69,6 @@ void RtpDependencyDescriptorReader::ReadTemplateDependencyStructure() { descriptor_->attached_structure = std::make_unique(); descriptor_->attached_structure->structure_id = ReadBits(6); - if (descriptor_->attached_structure->structure_id == - kExtendedFieldsIndicator) { - parsing_failed_ = true; - return; - } descriptor_->attached_structure->num_decode_targets = ReadBits(5) + 1; ReadTemplateLayers(); @@ -189,11 +182,6 @@ void RtpDependencyDescriptorReader::ReadMandatoryFields() { } void RtpDependencyDescriptorReader::ReadExtendedFields() { - frame_dependency_template_id_ = ReadBits(6); - if (frame_dependency_template_id_ == kExtendedFieldsIndicator) { - parsing_failed_ = true; - return; - } bool template_dependency_structure_present_flag = ReadBits(1); active_decode_targets_present_flag_ = ReadBits(1); custom_dtis_flag_ = ReadBits(1); @@ -209,9 +197,9 @@ void RtpDependencyDescriptorReader::ReadExtendedFields() { } void RtpDependencyDescriptorReader::ReadFrameDependencyDefinition() { - size_t template_index = (frame_dependency_template_id_ + - (kMaxTemplateId + 1) - structure_->structure_id) % - (kMaxTemplateId + 1); + size_t template_index = (frame_dependency_template_id_ + kMaxTemplates - + structure_->structure_id) % + kMaxTemplates; if (template_index >= structure_->templates.size()) { parsing_failed_ = true; diff --git a/modules/rtp_rtcp/source/rtp_dependency_descriptor_writer.cc b/modules/rtp_rtcp/source/rtp_dependency_descriptor_writer.cc index 1190acf012..28f4444e9c 100644 --- a/modules/rtp_rtcp/source/rtp_dependency_descriptor_writer.cc +++ b/modules/rtp_rtcp/source/rtp_dependency_descriptor_writer.cc @@ -23,7 +23,7 @@ namespace webrtc { namespace { -constexpr int kMaxTemplates = 63; +constexpr int kMaxTemplates = 64; enum class NextLayerIdc : uint64_t { kSameLayer = 0, @@ -81,7 +81,7 @@ int RtpDependencyDescriptorWriter::ValueSizeBits() const { static constexpr int kMandatoryFields = 1 + 1 + 6 + 16; int value_size_bits = kMandatoryFields + best_template_.extra_size_bits; if (HasExtendedFields()) { - value_size_bits += 11; + value_size_bits += 5; if (descriptor_.attached_structure) value_size_bits += StructureSizeBits(); if (ShouldWriteActiveDecodeTargetsBitmask()) @@ -304,15 +304,13 @@ void RtpDependencyDescriptorWriter::WriteResolutions() { } void RtpDependencyDescriptorWriter::WriteMandatoryFields() { - static constexpr uint64_t kExtendedFieldsIndicator = 0b111111; WriteBits(descriptor_.first_packet_in_frame, 1); WriteBits(descriptor_.last_packet_in_frame, 1); - WriteBits(HasExtendedFields() ? kExtendedFieldsIndicator : TemplateId(), 6); + WriteBits(TemplateId(), 6); WriteBits(descriptor_.frame_number, 16); } void RtpDependencyDescriptorWriter::WriteExtendedFields() { - WriteBits(TemplateId(), 6); uint64_t template_dependency_structure_present_flag = descriptor_.attached_structure ? 1u : 0u; WriteBits(template_dependency_structure_present_flag, 1);