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:
parent
e5a31e1bf5
commit
f1c8b90520
@ -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_) {
|
||||
|
@ -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_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user