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}
diff --git a/api/video_codecs/vp8_frame_buffer_controller.h b/api/video_codecs/vp8_frame_buffer_controller.h
index e0d4851..94e08a9 100644
--- a/api/video_codecs/vp8_frame_buffer_controller.h
+++ b/api/video_codecs/vp8_frame_buffer_controller.h
@@ -16,6 +16,7 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/fec_controller_override.h"
#include "api/video_codecs/video_codec.h"
#include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/vp8_frame_config.h"
@@ -105,6 +106,13 @@
// 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;
+ // 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|.
virtual size_t StreamCount() const = 0;
diff --git a/api/video_codecs/vp8_temporal_layers.cc b/api/video_codecs/vp8_temporal_layers.cc
index 22916a7..b29cf65 100644
--- a/api/video_codecs/vp8_temporal_layers.cc
+++ b/api/video_codecs/vp8_temporal_layers.cc
@@ -35,6 +35,11 @@
return controllers_[stream_index]->SetQpLimits(0, min_qp, max_qp);
}
+void Vp8TemporalLayers::SetFecControllerOverride(
+ FecControllerOverride* fec_controller_override) {
+ // Ignore.
+}
+
size_t Vp8TemporalLayers::StreamCount() const {
return controllers_.size();
}
diff --git a/api/video_codecs/vp8_temporal_layers.h b/api/video_codecs/vp8_temporal_layers.h
index 4194352..efd013e 100644
--- a/api/video_codecs/vp8_temporal_layers.h
+++ b/api/video_codecs/vp8_temporal_layers.h
@@ -14,6 +14,7 @@
#include <memory>
#include <vector>
+#include "api/fec_controller_override.h"
#include "api/video_codecs/video_codec.h"
#include "api/video_codecs/vp8_frame_buffer_controller.h"
#include "api/video_codecs/vp8_frame_config.h"
@@ -37,6 +38,9 @@
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;
bool SupportsEncoderFrameDropping(size_t stream_index) const override;
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 1938a88..1646fe6 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -416,6 +416,7 @@
":video_coding_utility",
"..:module_api",
"../..:webrtc_common",
+ "../../api:fec_controller_api",
"../../api/video_codecs:video_codecs_api",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers.cc b/modules/video_coding/codecs/vp8/default_temporal_layers.cc
index 84e948e..07d6c16 100644
--- a/modules/video_coding/codecs/vp8/default_temporal_layers.cc
+++ b/modules/video_coding/codecs/vp8/default_temporal_layers.cc
@@ -257,6 +257,11 @@
// Ignore.
}
+void DefaultTemporalLayers::SetFecControllerOverride(
+ FecControllerOverride* fec_controller_override) {
+ // Ignore.
+}
+
size_t DefaultTemporalLayers::StreamCount() const {
return 1;
}
diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers.h b/modules/video_coding/codecs/vp8/default_temporal_layers.h
index 9f86d40..e8a1cee 100644
--- a/modules/video_coding/codecs/vp8/default_temporal_layers.h
+++ b/modules/video_coding/codecs/vp8/default_temporal_layers.h
@@ -22,6 +22,7 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/fec_controller_override.h"
#include "api/video_codecs/vp8_frame_config.h"
#include "api/video_codecs/vp8_temporal_layers.h"
#include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h"
@@ -36,6 +37,9 @@
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;
bool SupportsEncoderFrameDropping(size_t stream_index) const override;
diff --git a/modules/video_coding/codecs/vp8/screenshare_layers.cc b/modules/video_coding/codecs/vp8/screenshare_layers.cc
index b5b963e..84f3d11 100644
--- a/modules/video_coding/codecs/vp8/screenshare_layers.cc
+++ b/modules/video_coding/codecs/vp8/screenshare_layers.cc
@@ -87,6 +87,11 @@
}
}
+void ScreenshareLayers::SetFecControllerOverride(
+ FecControllerOverride* fec_controller_override) {
+ // Ignore.
+}
+
size_t ScreenshareLayers::StreamCount() const {
return 1;
}
diff --git a/modules/video_coding/codecs/vp8/screenshare_layers.h b/modules/video_coding/codecs/vp8/screenshare_layers.h
index 5270ffe..770ea01 100644
--- a/modules/video_coding/codecs/vp8/screenshare_layers.h
+++ b/modules/video_coding/codecs/vp8/screenshare_layers.h
@@ -14,6 +14,7 @@
#include <utility>
#include <vector>
+#include "api/fec_controller_override.h"
#include "api/video_codecs/vp8_frame_config.h"
#include "api/video_codecs/vp8_temporal_layers.h"
#include "modules/video_coding/codecs/vp8/include/temporal_layers_checker.h"
@@ -38,6 +39,9 @@
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;
bool SupportsEncoderFrameDropping(size_t stream_index) const override;