From b2f827cb796eae4f8a4824af156bb664a7bf26b3 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Thu, 22 Feb 2024 13:58:27 +0100 Subject: [PATCH] Remove extra trait to read only mandatory part of the dependency descriptor Same can be achieved by having multiple Parse functions in the same RtpDependencyDescriptorExtension trait Bug: None Change-Id: I4eab0001d1ffff631a9d70fafde13e51f5c6ce36 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340320 Reviewed-by: Philip Eliasson Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/main@{#41786} --- .../source/rtp_dependency_descriptor_extension.cc | 2 +- .../source/rtp_dependency_descriptor_extension.h | 15 +++++---------- video/rtp_video_stream_receiver2.cc | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.cc b/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.cc index 27b0420926..5d61e66c9b 100644 --- a/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.cc +++ b/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.cc @@ -52,7 +52,7 @@ bool RtpDependencyDescriptorExtension::Write( return writer.Write(); } -bool RtpDependencyDescriptorExtensionMandatory::Parse( +bool RtpDependencyDescriptorExtension::Parse( rtc::ArrayView data, DependencyDescriptorMandatory* descriptor) { if (data.size() < 3) { diff --git a/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h b/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h index a3e415917c..93498fb141 100644 --- a/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h +++ b/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h @@ -33,6 +33,11 @@ class RtpDependencyDescriptorExtension { const FrameDependencyStructure* structure, DependencyDescriptor* descriptor); + // Reads the mandatory part of the descriptor. + // Such read is stateless, i.e., doesn't require `FrameDependencyStructure`. + static bool Parse(rtc::ArrayView data, + DependencyDescriptorMandatory* descriptor); + static size_t ValueSize(const FrameDependencyStructure& structure, const DependencyDescriptor& descriptor) { return ValueSize(structure, kAllChainsAreActive, descriptor); @@ -54,16 +59,6 @@ class RtpDependencyDescriptorExtension { static constexpr std::bitset<32> kAllChainsAreActive = ~uint32_t{0}; }; -// Trait to only read the mandatory part of the descriptor. -class RtpDependencyDescriptorExtensionMandatory { - public: - static constexpr webrtc::RTPExtensionType kId = - webrtc::RtpDependencyDescriptorExtension::kId; - - static bool Parse(rtc::ArrayView data, - DependencyDescriptorMandatory* descriptor); -}; - } // namespace webrtc #endif // MODULES_RTP_RTCP_SOURCE_RTP_DEPENDENCY_DESCRIPTOR_EXTENSION_H_ diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc index 624f699b73..6b41acc1f2 100644 --- a/video/rtp_video_stream_receiver2.cc +++ b/video/rtp_video_stream_receiver2.cc @@ -432,7 +432,7 @@ RtpVideoStreamReceiver2::ParseGenericDependenciesExtension( RTPVideoHeader* video_header) { RTC_DCHECK_RUN_ON(&packet_sequence_checker_); if (DependencyDescriptorMandatory dd_mandatory; - rtp_packet.GetExtension( + rtp_packet.GetExtension( &dd_mandatory)) { const int64_t frame_id = frame_id_unwrapper_.Unwrap(dd_mandatory.frame_number());