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:
parent
55a59337c8
commit
dac0805955
@ -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>();
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user