Remove WebRtcVideoEncoderFactory2.

This interface is no longer required and just adds complexity.

R=stefan@webrtc.org
BUG=1788

Review URL: https://webrtc-codereview.appspot.com/33009004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8065 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
pbos@webrtc.org 2015-01-14 17:29:27 +00:00
parent e5a31e1bf5
commit f1c8b90520
2 changed files with 36 additions and 83 deletions

View File

@ -207,11 +207,8 @@ static bool RtpExtensionsHaveChanged(
return false;
}
WebRtcVideoEncoderFactory2::~WebRtcVideoEncoderFactory2() {
}
std::vector<webrtc::VideoStream>
WebRtcVideoEncoderFactory2::CreateSimulcastVideoStreams(
WebRtcVideoChannel2::WebRtcVideoSendStream::CreateSimulcastVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams) {
@ -240,7 +237,8 @@ WebRtcVideoEncoderFactory2::CreateSimulcastVideoStreams(
codec.framerate != 0 ? codec.framerate : kDefaultVideoMaxFramerate);
}
std::vector<webrtc::VideoStream> WebRtcVideoEncoderFactory2::CreateVideoStreams(
std::vector<webrtc::VideoStream>
WebRtcVideoChannel2::WebRtcVideoSendStream::CreateVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams) {
@ -264,38 +262,22 @@ std::vector<webrtc::VideoStream> WebRtcVideoEncoderFactory2::CreateVideoStreams(
return streams;
}
void* WebRtcVideoEncoderFactory2::CreateVideoEncoderSettings(
void* WebRtcVideoChannel2::WebRtcVideoSendStream::ConfigureVideoEncoderSettings(
const VideoCodec& codec,
const VideoOptions& options) {
if (CodecNameMatches(codec.name, kVp8CodecName)) {
webrtc::VideoCodecVP8* settings = new webrtc::VideoCodecVP8(
webrtc::VideoEncoder::GetDefaultVp8Settings());
options.video_noise_reduction.Get(&settings->denoisingOn);
return settings;
encoder_settings_.vp8 = webrtc::VideoEncoder::GetDefaultVp8Settings();
options.video_noise_reduction.Get(&encoder_settings_.vp8.denoisingOn);
return &encoder_settings_.vp8;
}
if (CodecNameMatches(codec.name, kVp9CodecName)) {
webrtc::VideoCodecVP9* settings = new webrtc::VideoCodecVP9(
webrtc::VideoEncoder::GetDefaultVp9Settings());
options.video_noise_reduction.Get(&settings->denoisingOn);
return settings;
encoder_settings_.vp9 = webrtc::VideoEncoder::GetDefaultVp9Settings();
options.video_noise_reduction.Get(&encoder_settings_.vp9.denoisingOn);
return &encoder_settings_.vp9;
}
return NULL;
}
void WebRtcVideoEncoderFactory2::DestroyVideoEncoderSettings(
const VideoCodec& codec,
void* encoder_settings) {
if (encoder_settings == NULL) {
return;
}
if (CodecNameMatches(codec.name, kVp8CodecName)) {
delete reinterpret_cast<webrtc::VideoCodecVP8*>(encoder_settings);
}
if (CodecNameMatches(codec.name, kVp9CodecName)) {
delete reinterpret_cast<webrtc::VideoCodecVP9*>(encoder_settings);
}
}
DefaultUnsignalledSsrcHandler::DefaultUnsignalledSsrcHandler()
: default_recv_ssrc_(0), default_renderer_(NULL) {}
@ -439,8 +421,7 @@ WebRtcVideoChannel2* WebRtcVideoEngine2::CreateChannel(
voice_channel,
options,
external_encoder_factory_,
external_decoder_factory_,
GetVideoEncoderFactory());
external_decoder_factory_);
if (!channel->Init()) {
delete channel;
return NULL;
@ -579,10 +560,6 @@ bool WebRtcVideoEngine2::ShouldIgnoreTrace(const std::string& trace) {
return false;
}
WebRtcVideoEncoderFactory2* WebRtcVideoEngine2::GetVideoEncoderFactory() {
return &default_video_encoder_factory_;
}
std::vector<VideoCodec> WebRtcVideoEngine2::GetSupportedCodecs() const {
std::vector<VideoCodec> supported_codecs = DefaultVideoCodecList();
@ -618,13 +595,11 @@ WebRtcVideoChannel2::WebRtcVideoChannel2(
VoiceMediaChannel* voice_channel,
const VideoOptions& options,
WebRtcVideoEncoderFactory* external_encoder_factory,
WebRtcVideoDecoderFactory* external_decoder_factory,
WebRtcVideoEncoderFactory2* encoder_factory)
WebRtcVideoDecoderFactory* external_decoder_factory)
: unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_),
voice_channel_(voice_channel),
external_encoder_factory_(external_encoder_factory),
external_decoder_factory_(external_decoder_factory),
encoder_factory_(encoder_factory) {
external_decoder_factory_(external_decoder_factory) {
SetDefaultOptions();
options_.SetAll(options);
webrtc::Call::Config config(this);
@ -862,7 +837,6 @@ bool WebRtcVideoChannel2::AddSendStream(const StreamParams& sp) {
WebRtcVideoSendStream* stream =
new WebRtcVideoSendStream(call_.get(),
external_encoder_factory_,
encoder_factory_,
options_,
send_codec_,
sp,
@ -1353,14 +1327,12 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::VideoSendStreamParameters::
WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream(
webrtc::Call* call,
WebRtcVideoEncoderFactory* external_encoder_factory,
WebRtcVideoEncoderFactory2* encoder_factory,
const VideoOptions& options,
const Settable<VideoCodecSettings>& codec_settings,
const StreamParams& sp,
const std::vector<webrtc::RtpExtension>& rtp_extensions)
: call_(call),
external_encoder_factory_(external_encoder_factory),
encoder_factory_(encoder_factory),
stream_(NULL),
parameters_(webrtc::VideoSendStream::Config(), options, codec_settings),
allocated_encoder_(NULL, webrtc::kVideoCodecUnknown, false),
@ -1700,7 +1672,7 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::CreateVideoEncoderConfig(
clamped_codec.width = width;
clamped_codec.height = height;
encoder_config.streams = encoder_factory_->CreateVideoStreams(
encoder_config.streams = CreateVideoStreams(
clamped_codec, parameters_.options, parameters_.config.rtp.ssrcs.size());
// Conference mode screencast uses 2 temporal layers split at 100kbit.
@ -1746,15 +1718,10 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetDimensions(
CreateVideoEncoderConfig(last_dimensions_, codec_settings.codec);
encoder_config.encoder_specific_settings =
encoder_factory_->CreateVideoEncoderSettings(codec_settings.codec,
parameters_.options);
ConfigureVideoEncoderSettings(codec_settings.codec, parameters_.options);
bool stream_reconfigured = stream_->ReconfigureVideoEncoder(encoder_config);
encoder_factory_->DestroyVideoEncoderSettings(
codec_settings.codec,
encoder_config.encoder_specific_settings);
encoder_config.encoder_specific_settings = NULL;
if (!stream_reconfigured) {
@ -1880,16 +1847,11 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() {
VideoCodecSettings codec_settings;
parameters_.codec_settings.Get(&codec_settings);
parameters_.encoder_config.encoder_specific_settings =
encoder_factory_->CreateVideoEncoderSettings(codec_settings.codec,
parameters_.options);
ConfigureVideoEncoderSettings(codec_settings.codec, parameters_.options);
stream_ = call_->CreateVideoSendStream(parameters_.config,
parameters_.encoder_config);
encoder_factory_->DestroyVideoEncoderSettings(
codec_settings.codec,
parameters_.encoder_config.encoder_specific_settings);
parameters_.encoder_config.encoder_specific_settings = NULL;
if (sending_) {

View File

@ -106,27 +106,6 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler {
VideoRenderer* default_renderer_;
};
// TODO(pbos): Remove this class and just inline configuring code.
class WebRtcVideoEncoderFactory2 {
public:
virtual ~WebRtcVideoEncoderFactory2();
virtual std::vector<webrtc::VideoStream> CreateVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams);
std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams);
virtual void* CreateVideoEncoderSettings(const VideoCodec& codec,
const VideoOptions& options);
virtual void DestroyVideoEncoderSettings(const VideoCodec& codec,
void* encoder_settings);
};
// CallFactory, overridden for testing to verify that webrtc::Call is configured
// properly.
class WebRtcCallFactory {
@ -187,8 +166,6 @@ class WebRtcVideoEngine2 : public sigslot::has_slots<> {
rtc::CpuMonitor* cpu_monitor() { return cpu_monitor_.get(); }
virtual WebRtcVideoEncoderFactory2* GetVideoEncoderFactory();
private:
std::vector<VideoCodec> GetSupportedCodecs() const;
@ -201,7 +178,6 @@ class WebRtcVideoEngine2 : public sigslot::has_slots<> {
bool initialized_;
rtc::scoped_ptr<rtc::CpuMonitor> cpu_monitor_;
WebRtcVideoEncoderFactory2 default_video_encoder_factory_;
WebRtcCallFactory default_call_factory_;
WebRtcCallFactory* call_factory_;
@ -221,8 +197,7 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
VoiceMediaChannel* voice_channel,
const VideoOptions& options,
WebRtcVideoEncoderFactory* external_encoder_factory,
WebRtcVideoDecoderFactory* external_decoder_factory,
WebRtcVideoEncoderFactory2* encoder_factory);
WebRtcVideoDecoderFactory* external_decoder_factory);
~WebRtcVideoChannel2();
bool Init();
@ -301,7 +276,6 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
WebRtcVideoSendStream(
webrtc::Call* call,
WebRtcVideoEncoderFactory* external_encoder_factory,
WebRtcVideoEncoderFactory2* encoder_factory,
const VideoOptions& options,
const Settable<VideoCodecSettings>& codec_settings,
const StreamParams& sp,
@ -364,6 +338,24 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
bool is_screencast;
};
union VideoEncoderSettings {
webrtc::VideoCodecVP8 vp8;
webrtc::VideoCodecVP9 vp9;
};
static std::vector<webrtc::VideoStream> CreateVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams);
static std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams(
const VideoCodec& codec,
const VideoOptions& options,
size_t num_streams);
void* ConfigureVideoEncoderSettings(const VideoCodec& codec,
const VideoOptions& options)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
AllocatedEncoder CreateVideoEncoder(const VideoCodec& codec)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
void DestroyVideoEncoder(AllocatedEncoder* encoder)
@ -381,11 +373,11 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
webrtc::Call* const call_;
WebRtcVideoEncoderFactory* const external_encoder_factory_
GUARDED_BY(lock_);
WebRtcVideoEncoderFactory2* const encoder_factory_ GUARDED_BY(lock_);
rtc::CriticalSection lock_;
webrtc::VideoSendStream* stream_ GUARDED_BY(lock_);
VideoSendStreamParameters parameters_ GUARDED_BY(lock_);
VideoEncoderSettings encoder_settings_ GUARDED_BY(lock_);
AllocatedEncoder allocated_encoder_ GUARDED_BY(lock_);
Dimensions last_dimensions_ GUARDED_BY(lock_);
@ -496,7 +488,6 @@ class WebRtcVideoChannel2 : public rtc::MessageHandler,
VoiceMediaChannel* const voice_channel_;
WebRtcVideoEncoderFactory* const external_encoder_factory_;
WebRtcVideoDecoderFactory* const external_decoder_factory_;
WebRtcVideoEncoderFactory2* const encoder_factory_;
std::vector<VideoCodecSettings> recv_codecs_;
std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
webrtc::Call::Config::BitrateConfig bitrate_config_;