Pass FecControllerOverride to Vp8FrameBufferControllerFactory::Create
Previously, FecControllerOverride was passed to Vp8FrameBufferController::SetFecControllerOverride. Passing to the factory is a more elegant way, since it's only used when the controller is constructed. TBR=kwiberg@webrtc.org Bug: webrtc:10769 Change-Id: Iae599889e7ca9003e3200c2911239cbb763ee65a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144380 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Elad Alon <eladalon@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28443}
This commit is contained in:
@ -257,11 +257,6 @@ void DefaultTemporalLayers::SetQpLimits(size_t stream_index,
|
||||
// Ignore.
|
||||
}
|
||||
|
||||
void DefaultTemporalLayers::SetFecControllerOverride(
|
||||
FecControllerOverride* fec_controller_override) {
|
||||
// Ignore.
|
||||
}
|
||||
|
||||
size_t DefaultTemporalLayers::StreamCount() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -22,7 +22,6 @@
|
||||
#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"
|
||||
@ -37,9 +36,6 @@ class DefaultTemporalLayers final : public Vp8FrameBufferController {
|
||||
|
||||
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;
|
||||
|
||||
@ -290,7 +290,8 @@ LibvpxVp8Encoder::LibvpxVp8Encoder(
|
||||
variable_framerate_experiment_(ParseVariableFramerateConfig(
|
||||
"WebRTC-VP8VariableFramerateScreenshare")),
|
||||
framerate_controller_(variable_framerate_experiment_.framerate_limit),
|
||||
num_steady_state_frames_(0) {
|
||||
num_steady_state_frames_(0),
|
||||
fec_controller_override_(nullptr) {
|
||||
// TODO(eladalon/ilnik): These reservations might be wasting memory.
|
||||
// InitEncode() is resizing to the actual size, which might be smaller.
|
||||
raw_images_.reserve(kMaxSimulcastStreams);
|
||||
@ -452,8 +453,11 @@ void LibvpxVp8Encoder::SetStreamState(bool send_stream, int stream_idx) {
|
||||
|
||||
void LibvpxVp8Encoder::SetFecControllerOverride(
|
||||
FecControllerOverride* fec_controller_override) {
|
||||
RTC_DCHECK(fec_controller_override);
|
||||
// TODO(bugs.webrtc.og/10769): Pass on to the frame buffer controller.
|
||||
// TODO(bugs.webrtc.org/10769): Update downstream and remove ability to
|
||||
// pass nullptr.
|
||||
// RTC_DCHECK(fec_controller_override);
|
||||
RTC_DCHECK(!fec_controller_override_);
|
||||
fec_controller_override_ = fec_controller_override;
|
||||
}
|
||||
|
||||
// TODO(eladalon): s/inst/codec_settings/g.
|
||||
@ -491,11 +495,12 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst,
|
||||
|
||||
RTC_DCHECK(!frame_buffer_controller_);
|
||||
if (frame_buffer_controller_factory_) {
|
||||
frame_buffer_controller_ =
|
||||
frame_buffer_controller_factory_->Create(*inst, settings);
|
||||
frame_buffer_controller_ = frame_buffer_controller_factory_->Create(
|
||||
*inst, settings, fec_controller_override_);
|
||||
} else {
|
||||
Vp8TemporalLayersFactory factory;
|
||||
frame_buffer_controller_ = factory.Create(*inst, settings);
|
||||
frame_buffer_controller_ =
|
||||
factory.Create(*inst, settings, fec_controller_override_);
|
||||
}
|
||||
RTC_DCHECK(frame_buffer_controller_);
|
||||
|
||||
|
||||
@ -141,6 +141,8 @@ class LibvpxVp8Encoder : public VideoEncoder {
|
||||
std::string group_name);
|
||||
FramerateController framerate_controller_;
|
||||
int num_steady_state_frames_;
|
||||
|
||||
FecControllerOverride* fec_controller_override_;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -87,11 +87,6 @@ void ScreenshareLayers::SetQpLimits(size_t stream_index,
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenshareLayers::SetFecControllerOverride(
|
||||
FecControllerOverride* fec_controller_override) {
|
||||
// Ignore.
|
||||
}
|
||||
|
||||
size_t ScreenshareLayers::StreamCount() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
#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"
|
||||
@ -39,9 +38,6 @@ class ScreenshareLayers final : public Vp8FrameBufferController {
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user