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 <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29832}
diff --git a/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc b/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.cc
index 5103d7f..cf816c2 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 @@
 
 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 @@
   RTC_DCHECK(descriptor);
 
   ReadMandatoryFields();
-  if (frame_dependency_template_id_ == kExtendedFieldsIndicator)
+  if (raw_data.size() > 3)
     ReadExtendedFields();
 
   structure_ = descriptor->attached_structure
@@ -71,11 +69,6 @@
   descriptor_->attached_structure =
       std::make_unique<FrameDependencyStructure>();
   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::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::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 1190acf..28f4444 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 @@
   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::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);