From fc50e44a0337e0aa3cbe1aa8fb0c171a375e4925 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Thu, 5 Dec 2019 14:41:45 +0100 Subject: [PATCH] Introduce VideoRtpDepacketizer interface to replace RtpDepacketizer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:11152 Change-Id: I20fd81233080d45d8978e5e57d0be6b592f44f43 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161322 Commit-Queue: Danil Chapovalov Reviewed-by: Erik Språng Cr-Commit-Position: refs/heads/master@{#30018} --- modules/rtp_rtcp/BUILD.gn | 1 + modules/rtp_rtcp/source/rtp_format.h | 2 +- .../rtp_rtcp/source/video_rtp_depacketizer.h | 34 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/rtp_rtcp/source/video_rtp_depacketizer.h diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn index 2bb12ce515..d0f4ce803c 100644 --- a/modules/rtp_rtcp/BUILD.gn +++ b/modules/rtp_rtcp/BUILD.gn @@ -210,6 +210,7 @@ rtc_library("rtp_rtcp") { "source/ulpfec_header_reader_writer.h", "source/ulpfec_receiver_impl.cc", "source/ulpfec_receiver_impl.h", + "source/video_rtp_depacketizer.h", ] if (rtc_enable_bwe_test_logging) { diff --git a/modules/rtp_rtcp/source/rtp_format.h b/modules/rtp_rtcp/source/rtp_format.h index 1c498119e5..2093bfab13 100644 --- a/modules/rtp_rtcp/source/rtp_format.h +++ b/modules/rtp_rtcp/source/rtp_format.h @@ -60,7 +60,7 @@ class RtpPacketizer { const PayloadSizeLimits& limits); }; -// TODO(sprang): Update the depacketizer to return a std::unqie_ptr with a copy +// TODO(bugs.webrtc.org/11152): Update the depacketizer to return a copy // of the parsed payload, rather than just a pointer into the incoming buffer. // This way we can move some parsing out from the jitter buffer into here, and // the jitter buffer can just store that pointer rather than doing a copy there. diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer.h b/modules/rtp_rtcp/source/video_rtp_depacketizer.h new file mode 100644 index 0000000000..0420e4e646 --- /dev/null +++ b/modules/rtp_rtcp/source/video_rtp_depacketizer.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef MODULES_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_ +#define MODULES_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_ + +#include "absl/types/optional.h" +#include "modules/rtp_rtcp/source/rtp_video_header.h" +#include "rtc_base/copy_on_write_buffer.h" + +namespace webrtc { + +class VideoRtpDepacketizer { + public: + struct ParsedRtpPayload { + RTPVideoHeader video_header; + rtc::CopyOnWriteBuffer video_payload; + }; + + virtual ~VideoRtpDepacketizer() = default; + virtual absl::optional Parse( + rtc::CopyOnWriteBuffer rtp_payload) = 0; +}; + +} // namespace webrtc + +#endif // MODULES_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_