h264: skip empty NAL units, do not reject them

BUG=webrtc:380291923

Change-Id: If05268bde2ac0c600dcef479c88ca54dce708dcb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/368893
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43451}
diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
index 97bbe7d..b9e74f5 100644
--- a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
+++ b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
@@ -101,8 +101,8 @@
         nal_unit.subview(H264::kNaluTypeSize);
 
     if (nalu_data.empty()) {
-      RTC_LOG(LS_ERROR) << "Empty NAL unit found.";
-      return std::nullopt;
+      RTC_LOG(LS_WARNING) << "Skipping empty NAL unit.";
+      continue;
     }
 
     switch (nalu.type) {
diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264_unittest.cc b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264_unittest.cc
index 8f1d272..8330bf2 100644
--- a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264_unittest.cc
+++ b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264_unittest.cc
@@ -542,5 +542,15 @@
   EXPECT_TRUE(parsed->video_header.is_first_packet_in_frame);
 }
 
+TEST(VideoRtpDepacketizerH264Test, EmptyNaluPayload) {
+  const uint8_t kPayload[] = {
+      0x10,  // End of sequence.
+  };
+  VideoRtpDepacketizerH264 depacketizer;
+  std::optional<VideoRtpDepacketizer::ParsedRtpPayload> parsed =
+      depacketizer.Parse(rtc::CopyOnWriteBuffer(kPayload));
+  ASSERT_TRUE(parsed);
+}
+
 }  // namespace
 }  // namespace webrtc