Decode Target Information for VP8 libvpx encoder.
In this CL:
- Created static helper function GenericFrameInfo::DecodeTargetInfo to
convert DTI symbols to a list of GenericFrameInfo::OperatingPointIndication.
- Added per frame DTI information for the different stream structures.
Bug: webrtc:10342
Change-Id: I62ff2e9fc9b380fe1d0447ff071e86b6b35ab249
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129923
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27350}
diff --git a/modules/video_coding/codecs/vp8/screenshare_layers.h b/modules/video_coding/codecs/vp8/screenshare_layers.h
index 6b1bc7e..8fe5fa3 100644
--- a/modules/video_coding/codecs/vp8/screenshare_layers.h
+++ b/modules/video_coding/codecs/vp8/screenshare_layers.h
@@ -11,6 +11,7 @@
#include <map>
#include <memory>
+#include <utility>
#include <vector>
#include "api/video_codecs/vp8_frame_config.h"
@@ -67,6 +68,19 @@
private:
enum class TemporalLayerState : int { kDrop, kTl0, kTl1, kTl1Sync };
+ struct DependencyInfo {
+ DependencyInfo() = default;
+ DependencyInfo(absl::string_view indication_symbols,
+ Vp8FrameConfig frame_config)
+ : decode_target_indications(
+ GenericFrameInfo::DecodeTargetInfo(indication_symbols)),
+ frame_config(frame_config) {}
+
+ absl::InlinedVector<GenericFrameInfo::DecodeTargetIndication, 10>
+ decode_target_indications;
+ Vp8FrameConfig frame_config;
+ };
+
bool TimeToSync(int64_t timestamp) const;
uint32_t GetCodecTargetBitrateKbps() const;
@@ -81,7 +95,7 @@
int max_qp_;
uint32_t max_debt_bytes_;
- std::map<uint32_t, Vp8FrameConfig> pending_frame_configs_;
+ std::map<uint32_t, DependencyInfo> pending_frame_configs_;
// Configured max framerate.
absl::optional<uint32_t> target_framerate_;