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}
This commit is contained in:
philipel
2019-03-28 16:09:52 +01:00
committed by Commit Bot
parent 1f928d3316
commit b19f27a5f9
6 changed files with 168 additions and 122 deletions

View File

@ -11,6 +11,7 @@
#include <map>
#include <memory>
#include <utility>
#include <vector>
#include "api/video_codecs/vp8_frame_config.h"
@ -67,6 +68,19 @@ class ScreenshareLayers final : public Vp8FrameBufferController {
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 @@ class ScreenshareLayers final : public Vp8FrameBufferController {
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_;