Cleanup RemoteEstimatorProxy::IncomingPacket

relax DCHECK and explain when it previous version could be hit.
Use concise versions of the GetExtension functions.
Reduce scope of the `lock_`

Bug: None
Change-Id: Iafc570ffe7e5b2dcbdfe166b26b140f7959c28c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291711
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39246}
diff --git a/modules/remote_bitrate_estimator/remote_estimator_proxy.cc b/modules/remote_bitrate_estimator/remote_estimator_proxy.cc
index 3672604..01a23ba 100644
--- a/modules/remote_bitrate_estimator/remote_estimator_proxy.cc
+++ b/modules/remote_bitrate_estimator/remote_estimator_proxy.cc
@@ -88,28 +88,31 @@
     RTC_LOG(LS_WARNING) << "Arrival time not set.";
     return;
   }
-  MutexLock lock(&lock_);
-  send_periodic_feedback_ = packet.HasExtension<TransportSequenceNumber>();
 
   Packet internal_packet = {.arrival_time = packet.arrival_time(),
                             .size = DataSize::Bytes(packet.size()),
                             .ssrc = packet.Ssrc()};
   uint16_t seqnum;
-  absl::optional<FeedbackRequest> feedback_request;
-  if (!packet.GetExtension<TransportSequenceNumber>(&seqnum)) {
-    if (!packet.GetExtension<TransportSequenceNumberV2>(&seqnum,
-                                                        &feedback_request)) {
-      RTC_DCHECK_NOTREACHED() << " Expected transport sequence number.";
-      return;
-    }
+  if (packet.GetExtension<TransportSequenceNumber>(&seqnum) ||
+      packet.GetExtension<TransportSequenceNumberV2>(
+          &seqnum, &internal_packet.feedback_request)) {
+    internal_packet.transport_sequence_number = seqnum;
+  } else {
+    // This function expected to be called only for packets that have
+    // TransportSequenceNumber rtp header extension, however malformed RTP
+    // packet may contain unparsable TransportSequenceNumber.
+    RTC_DCHECK(packet.HasExtension<TransportSequenceNumber>() ||
+               packet.HasExtension<TransportSequenceNumberV2>())
+        << " Expected transport sequence number.";
+    return;
   }
-  internal_packet.transport_sequence_number = seqnum;
-  internal_packet.feedback_request = feedback_request;
 
-  uint32_t send_time_24_bits;
-  if (packet.GetExtension<AbsoluteSendTime>(&send_time_24_bits)) {
-    internal_packet.absolute_send_time_24bits = send_time_24_bits;
-  }
+  internal_packet.absolute_send_time_24bits =
+      packet.GetExtension<AbsoluteSendTime>();
+
+  MutexLock lock(&lock_);
+  send_periodic_feedback_ = packet.HasExtension<TransportSequenceNumber>();
+
   IncomingPacket(internal_packet);
 }