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:
Elad Alon
2019-07-02 11:20:09 +02:00
committed by Commit Bot
parent 14be7993c6
commit 45befc5f1f
20 changed files with 118 additions and 47 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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_);

View File

@ -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

View File

@ -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;
}

View File

@ -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;