commit | b7cb8fe75a0b0f19a003e4f78f83fb7bd8fa84ef | [log] [tgz] |
---|---|---|
author | Philipp Hancke <phancke@meta.com> | Mon Nov 25 18:14:35 2024 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Nov 26 03:55:09 2024 |
tree | af2212e678cbbca8f8f0e6ade77f07ef019d82dd | |
parent | a08189b948fb1e820e8bfa772bf70d8c598b87e5 [diff] |
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