Pass FecControllerOverride to Vp8FrameBufferController

Bug: webrtc:10769
Change-Id: I06d875f5afdc7ebf290ad70934b6632e20ddf065
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143964
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28418}
This commit is contained in:
Elad Alon 2019-06-28 18:12:15 +02:00 committed by Commit Bot
parent 22896d4e78
commit 7e00c679a5
8 changed files with 36 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#include <vector> #include <vector>
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "api/fec_controller_override.h"
#include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_codec.h"
#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/vp8_frame_config.h" #include "api/video_codecs/vp8_frame_config.h"
@ -105,6 +106,13 @@ class Vp8FrameBufferController {
// The limits are suggestion-only; the controller is allowed to exceed them. // The limits are suggestion-only; the controller is allowed to exceed them.
virtual void SetQpLimits(size_t stream_index, int min_qp, int max_qp) = 0; virtual void SetQpLimits(size_t stream_index, int min_qp, int max_qp) = 0;
// Set a FecControllerOverride, through which the bandwidth allocation
// decisions made by FecController may be overridden.
// TODO(bugs.webrtc.org/10769): Update downstream projects, then make
// this pure-virtual.
virtual void SetFecControllerOverride(
FecControllerOverride* fec_controller_override) {}
// Number of streamed controlled by |this|. // Number of streamed controlled by |this|.
virtual size_t StreamCount() const = 0; virtual size_t StreamCount() const = 0;

View file

@ -35,6 +35,11 @@ void Vp8TemporalLayers::SetQpLimits(size_t stream_index,
return controllers_[stream_index]->SetQpLimits(0, min_qp, max_qp); return controllers_[stream_index]->SetQpLimits(0, min_qp, max_qp);
} }
void Vp8TemporalLayers::SetFecControllerOverride(
FecControllerOverride* fec_controller_override) {
// Ignore.
}
size_t Vp8TemporalLayers::StreamCount() const { size_t Vp8TemporalLayers::StreamCount() const {
return controllers_.size(); return controllers_.size();
} }

View file

@ -14,6 +14,7 @@
#include <memory> #include <memory>
#include <vector> #include <vector>
#include "api/fec_controller_override.h"
#include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_codec.h"
#include "api/video_codecs/vp8_frame_buffer_controller.h" #include "api/video_codecs/vp8_frame_buffer_controller.h"
#include "api/video_codecs/vp8_frame_config.h" #include "api/video_codecs/vp8_frame_config.h"
@ -37,6 +38,9 @@ class Vp8TemporalLayers final : public Vp8FrameBufferController {
void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override; void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override;
void SetFecControllerOverride(
FecControllerOverride* fec_controller_override) override;
size_t StreamCount() const override; size_t StreamCount() const override;
bool SupportsEncoderFrameDropping(size_t stream_index) const override; bool SupportsEncoderFrameDropping(size_t stream_index) const override;

View file

@ -416,6 +416,7 @@ rtc_static_library("webrtc_vp8_temporal_layers") {
":video_coding_utility", ":video_coding_utility",
"..:module_api", "..:module_api",
"../..:webrtc_common", "../..:webrtc_common",
"../../api:fec_controller_api",
"../../api/video_codecs:video_codecs_api", "../../api/video_codecs:video_codecs_api",
"../../rtc_base:checks", "../../rtc_base:checks",
"../../rtc_base:rtc_base_approved", "../../rtc_base:rtc_base_approved",

View file

@ -257,6 +257,11 @@ void DefaultTemporalLayers::SetQpLimits(size_t stream_index,
// Ignore. // Ignore.
} }
void DefaultTemporalLayers::SetFecControllerOverride(
FecControllerOverride* fec_controller_override) {
// Ignore.
}
size_t DefaultTemporalLayers::StreamCount() const { size_t DefaultTemporalLayers::StreamCount() const {
return 1; return 1;
} }

View file

@ -22,6 +22,7 @@
#include <vector> #include <vector>
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "api/fec_controller_override.h"
#include "api/video_codecs/vp8_frame_config.h" #include "api/video_codecs/vp8_frame_config.h"
#include "api/video_codecs/vp8_temporal_layers.h" #include "api/video_codecs/vp8_temporal_layers.h"
#include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h" #include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h"
@ -36,6 +37,9 @@ class DefaultTemporalLayers final : public Vp8FrameBufferController {
void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override; void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override;
void SetFecControllerOverride(
FecControllerOverride* fec_controller_override) override;
size_t StreamCount() const override; size_t StreamCount() const override;
bool SupportsEncoderFrameDropping(size_t stream_index) const override; bool SupportsEncoderFrameDropping(size_t stream_index) const override;

View file

@ -87,6 +87,11 @@ void ScreenshareLayers::SetQpLimits(size_t stream_index,
} }
} }
void ScreenshareLayers::SetFecControllerOverride(
FecControllerOverride* fec_controller_override) {
// Ignore.
}
size_t ScreenshareLayers::StreamCount() const { size_t ScreenshareLayers::StreamCount() const {
return 1; return 1;
} }

View file

@ -14,6 +14,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "api/fec_controller_override.h"
#include "api/video_codecs/vp8_frame_config.h" #include "api/video_codecs/vp8_frame_config.h"
#include "api/video_codecs/vp8_temporal_layers.h" #include "api/video_codecs/vp8_temporal_layers.h"
#include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h" #include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h"
@ -38,6 +39,9 @@ class ScreenshareLayers final : public Vp8FrameBufferController {
void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override; void SetQpLimits(size_t stream_index, int min_qp, int max_qp) override;
void SetFecControllerOverride(
FecControllerOverride* fec_controller_override) override;
size_t StreamCount() const override; size_t StreamCount() const override;
bool SupportsEncoderFrameDropping(size_t stream_index) const override; bool SupportsEncoderFrameDropping(size_t stream_index) const override;