Add FrameInstrumentationData to RTPVideoHeader and CodecSpecificInfo

Bug: webrtc:358039777
Change-Id: If2659240047e1935f7666266bff25ed86a6a234c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361420
Commit-Queue: Fanny Linderborg <linderborg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42940}
This commit is contained in:
Fanny Linderborg 2024-09-03 13:23:33 +02:00 committed by WebRTC LUCI CQ
parent 55a59337c8
commit dac0805955
5 changed files with 17 additions and 0 deletions

View File

@ -53,6 +53,7 @@ void PopulateRtpWithCodecSpecifics(const CodecSpecificInfo& info,
RTPVideoHeader* rtp) { RTPVideoHeader* rtp) {
rtp->codec = info.codecType; rtp->codec = info.codecType;
rtp->is_last_frame_in_picture = info.end_of_picture; rtp->is_last_frame_in_picture = info.end_of_picture;
rtp->frame_instrumentation_data = info.frame_instrumentation_data;
switch (info.codecType) { switch (info.codecType) {
case kVideoCodecVP8: { case kVideoCodecVP8: {
auto& vp8_header = rtp->video_type_header.emplace<RTPVideoHeaderVP8>(); auto& vp8_header = rtp->video_type_header.emplace<RTPVideoHeaderVP8>();

View File

@ -464,6 +464,7 @@ rtc_library("rtp_video_header") {
"../../api/video:video_frame_metadata", "../../api/video:video_frame_metadata",
"../../api/video:video_frame_type", "../../api/video:video_frame_type",
"../../api/video:video_rtp_headers", "../../api/video:video_rtp_headers",
"../../common_video:frame_instrumentation_data",
"../../modules/video_coding:codec_globals_headers", "../../modules/video_coding:codec_globals_headers",
"//third_party/abseil-cpp/absl/container:inlined_vector", "//third_party/abseil-cpp/absl/container:inlined_vector",
"//third_party/abseil-cpp/absl/types:variant", "//third_party/abseil-cpp/absl/types:variant",

View File

@ -25,6 +25,7 @@
#include "api/video/video_frame_type.h" #include "api/video/video_frame_type.h"
#include "api/video/video_rotation.h" #include "api/video/video_rotation.h"
#include "api/video/video_timing.h" #include "api/video/video_timing.h"
#include "common_video/frame_instrumentation_data.h"
#include "modules/video_coding/codecs/h264/include/h264_globals.h" #include "modules/video_coding/codecs/h264/include/h264_globals.h"
#include "modules/video_coding/codecs/vp8/include/vp8_globals.h" #include "modules/video_coding/codecs/vp8/include/vp8_globals.h"
#include "modules/video_coding/codecs/vp9/include/vp9_globals.h" #include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
@ -94,6 +95,11 @@ struct RTPVideoHeader {
// http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time. // http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time.
// Otherwise, it is derived from other relevant information. // Otherwise, it is derived from other relevant information.
std::optional<AbsoluteCaptureTime> absolute_capture_time; std::optional<AbsoluteCaptureTime> absolute_capture_time;
// Required for automatic corruption detection.
std::optional<
absl::variant<FrameInstrumentationSyncData, FrameInstrumentationData>>
frame_instrumentation_data;
}; };
} // namespace webrtc } // namespace webrtc

View File

@ -291,8 +291,10 @@ rtc_library("video_codec_interface") {
"../../api/video_codecs:scalability_mode", "../../api/video_codecs:scalability_mode",
"../../api/video_codecs:video_codecs_api", "../../api/video_codecs:video_codecs_api",
"../../common_video", "../../common_video",
"../../common_video:frame_instrumentation_data",
"../../common_video/generic_frame_descriptor", "../../common_video/generic_frame_descriptor",
"../../rtc_base/system:rtc_export", "../../rtc_base/system:rtc_export",
"//third_party/abseil-cpp/absl/types:variant",
] ]
} }

View File

@ -14,10 +14,12 @@
#include <optional> #include <optional>
#include <vector> #include <vector>
#include "absl/types/variant.h"
#include "api/video/video_frame.h" #include "api/video/video_frame.h"
#include "api/video_codecs/scalability_mode.h" #include "api/video_codecs/scalability_mode.h"
#include "api/video_codecs/video_decoder.h" #include "api/video_codecs/video_decoder.h"
#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder.h"
#include "common_video/frame_instrumentation_data.h"
#include "common_video/generic_frame_descriptor/generic_frame_info.h" #include "common_video/generic_frame_descriptor/generic_frame_info.h"
#include "modules/video_coding/codecs/h264/include/h264_globals.h" #include "modules/video_coding/codecs/h264/include/h264_globals.h"
#include "modules/video_coding/codecs/vp9/include/vp9_globals.h" #include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
@ -119,6 +121,11 @@ struct RTC_EXPORT CodecSpecificInfo {
std::optional<GenericFrameInfo> generic_frame_info; std::optional<GenericFrameInfo> generic_frame_info;
std::optional<FrameDependencyStructure> template_structure; std::optional<FrameDependencyStructure> template_structure;
std::optional<ScalabilityMode> scalability_mode; std::optional<ScalabilityMode> scalability_mode;
// Required for automatic corruption detection.
std::optional<
absl::variant<FrameInstrumentationSyncData, FrameInstrumentationData>>
frame_instrumentation_data;
}; };
} // namespace webrtc } // namespace webrtc