aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorHenrik Boström <hbos@webrtc.org>2022-11-25 14:46:40 +0100
committerWebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-25 14:40:30 +0000
commit158d5e3078bdf119ba34ad58495e72ecc1ca0abc (patch)
tree92e9dac90ed155a834ca7b3c38a112a16cf11522 /modules
parente862da376f11d8279eeaca4fee144ae8b042d327 (diff)
downloadwebrtc-158d5e3078bdf119ba34ad58495e72ecc1ca0abc.tar.gz
Add RTPVideoHeader::GetAsMetadata().
In preparation of adding RTPVideoHeader::SetFromMetadata() method, the VideoFrameMetadata construct-from-RTPVideoHeader is replaced by RTPVideoHeader::GetAsMetadata(). This serves two purposes: 1. Having "GetAs" and "SetFrom" in the same file reduces the risk of these two methods getting out of sync as we expand its usage. 2. This is necessary to avoid a circular dependency that would otherwise be introduced by RTPVideoHeader::SetFromMetadata(). Bug: webrtc:14709 Change-Id: I127b3d15f9a8c6af210449a5a50d414c9ba79930 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/285080 Reviewed-by: Tony Herre <herre@google.com> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38735}
Diffstat (limited to 'modules')
-rw-r--r--modules/rtp_rtcp/BUILD.gn1
-rw-r--r--modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc2
-rw-r--r--modules/rtp_rtcp/source/rtp_video_header.cc22
-rw-r--r--modules/rtp_rtcp/source/rtp_video_header.h4
4 files changed, 24 insertions, 5 deletions
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index e046882357..a23f595da1 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -425,6 +425,7 @@ rtc_library("rtp_video_header") {
"../../api:rtp_headers",
"../../api/transport/rtp:dependency_descriptor",
"../../api/video:video_frame",
+ "../../api/video:video_frame_metadata",
"../../api/video:video_frame_type",
"../../api/video:video_rtp_headers",
"../../modules/video_coding:codec_globals_headers",
diff --git a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
index a60c39395a..ef0437ab2a 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc
@@ -35,7 +35,7 @@ class TransformableVideoSenderFrame : public TransformableVideoFrameInterface {
uint32_t ssrc)
: encoded_data_(encoded_image.GetEncodedData()),
header_(video_header),
- metadata_(header_),
+ metadata_(header_.GetAsMetadata()),
frame_type_(encoded_image._frameType),
payload_type_(payload_type),
codec_type_(codec_type),
diff --git a/modules/rtp_rtcp/source/rtp_video_header.cc b/modules/rtp_rtcp/source/rtp_video_header.cc
index bb9413ddd5..d800b7d3c7 100644
--- a/modules/rtp_rtcp/source/rtp_video_header.cc
+++ b/modules/rtp_rtcp/source/rtp_video_header.cc
@@ -12,13 +12,27 @@
namespace webrtc {
-RTPVideoHeader::RTPVideoHeader() : video_timing() {}
-RTPVideoHeader::RTPVideoHeader(const RTPVideoHeader& other) = default;
-RTPVideoHeader::~RTPVideoHeader() = default;
-
RTPVideoHeader::GenericDescriptorInfo::GenericDescriptorInfo() = default;
RTPVideoHeader::GenericDescriptorInfo::GenericDescriptorInfo(
const GenericDescriptorInfo& other) = default;
RTPVideoHeader::GenericDescriptorInfo::~GenericDescriptorInfo() = default;
+RTPVideoHeader::RTPVideoHeader() : video_timing() {}
+RTPVideoHeader::RTPVideoHeader(const RTPVideoHeader& other) = default;
+RTPVideoHeader::~RTPVideoHeader() = default;
+
+VideoFrameMetadata RTPVideoHeader::GetAsMetadata() const {
+ VideoFrameMetadata metadata;
+ metadata.SetWidth(width);
+ metadata.SetHeight(height);
+ if (generic) {
+ metadata.SetFrameId(generic->frame_id);
+ metadata.SetSpatialIndex(generic->spatial_index);
+ metadata.SetTemporalIndex(generic->temporal_index);
+ metadata.SetFrameDependencies(generic->dependencies);
+ metadata.SetDecodeTargetIndications(generic->decode_target_indications);
+ }
+ return metadata;
+}
+
} // namespace webrtc
diff --git a/modules/rtp_rtcp/source/rtp_video_header.h b/modules/rtp_rtcp/source/rtp_video_header.h
index 115b17d36d..c65bde9fab 100644
--- a/modules/rtp_rtcp/source/rtp_video_header.h
+++ b/modules/rtp_rtcp/source/rtp_video_header.h
@@ -21,6 +21,7 @@
#include "api/video/color_space.h"
#include "api/video/video_codec_type.h"
#include "api/video/video_content_type.h"
+#include "api/video/video_frame_metadata.h"
#include "api/video/video_frame_type.h"
#include "api/video/video_rotation.h"
#include "api/video/video_timing.h"
@@ -62,6 +63,9 @@ struct RTPVideoHeader {
~RTPVideoHeader();
+ // The subset of RTPVideoHeader that is exposed in the Insertable Streams API.
+ VideoFrameMetadata GetAsMetadata() const;
+
absl::optional<GenericDescriptorInfo> generic;
VideoFrameType frame_type = VideoFrameType::kEmptyFrame;