diff --git a/talk/media/webrtc/webrtcmediaengine.cc b/talk/media/webrtc/webrtcmediaengine.cc index 2dae42383..252b4e607 100644 --- a/talk/media/webrtc/webrtcmediaengine.cc +++ b/talk/media/webrtc/webrtcmediaengine.cc @@ -25,6 +25,9 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#if defined(LIBPEERCONNECTION_LIB) || \ + defined(LIBPEERCONNECTION_IMPLEMENTATION) + #include "talk/media/webrtc/webrtcmediaengine.h" #include "talk/media/webrtc/webrtcvideoengine.h" #ifdef WEBRTC_CHROMIUM_BUILD @@ -94,142 +97,23 @@ void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { namespace cricket { -class DelegatingWebRtcMediaEngine : public cricket::MediaEngineInterface { - public: - DelegatingWebRtcMediaEngine( - webrtc::AudioDeviceModule* adm, - webrtc::AudioDeviceModule* adm_sc, - WebRtcVideoEncoderFactory* encoder_factory, - WebRtcVideoDecoderFactory* decoder_factory) - : delegate_(CreateWebRtcMediaEngine( - adm, adm_sc, encoder_factory, decoder_factory)) { - } - virtual ~DelegatingWebRtcMediaEngine() { - DestroyWebRtcMediaEngine(delegate_); - } - virtual bool Init(rtc::Thread* worker_thread) OVERRIDE { - return delegate_->Init(worker_thread); - } - virtual void Terminate() OVERRIDE { - delegate_->Terminate(); - } - virtual int GetCapabilities() OVERRIDE { - return delegate_->GetCapabilities(); - } - virtual VoiceMediaChannel* CreateChannel() OVERRIDE { - return delegate_->CreateChannel(); - } - virtual VideoMediaChannel* CreateVideoChannel( - VoiceMediaChannel* voice_media_channel) OVERRIDE { - return delegate_->CreateVideoChannel(voice_media_channel); - } - virtual SoundclipMedia* CreateSoundclip() OVERRIDE { - return delegate_->CreateSoundclip(); - } - virtual AudioOptions GetAudioOptions() const OVERRIDE { - return delegate_->GetAudioOptions(); - } - virtual bool SetAudioOptions(const AudioOptions& options) OVERRIDE { - return delegate_->SetAudioOptions(options); - } - virtual bool SetVideoOptions(const VideoOptions& options) OVERRIDE { - return delegate_->SetVideoOptions(options); - } - virtual bool SetAudioDelayOffset(int offset) OVERRIDE { - return delegate_->SetAudioDelayOffset(offset); - } - virtual bool SetDefaultVideoEncoderConfig( - const VideoEncoderConfig& config) OVERRIDE { - return delegate_->SetDefaultVideoEncoderConfig(config); - } - virtual VideoEncoderConfig GetDefaultVideoEncoderConfig() const OVERRIDE { - return delegate_->GetDefaultVideoEncoderConfig(); - } - virtual bool SetSoundDevices( - const Device* in_device, const Device* out_device) OVERRIDE { - return delegate_->SetSoundDevices(in_device, out_device); - } - virtual bool GetOutputVolume(int* level) OVERRIDE { - return delegate_->GetOutputVolume(level); - } - virtual bool SetOutputVolume(int level) OVERRIDE { - return delegate_->SetOutputVolume(level); - } - virtual int GetInputLevel() OVERRIDE { - return delegate_->GetInputLevel(); - } - virtual bool SetLocalMonitor(bool enable) OVERRIDE { - return delegate_->SetLocalMonitor(enable); - } - virtual bool SetLocalRenderer(VideoRenderer* renderer) OVERRIDE { - return delegate_->SetLocalRenderer(renderer); - } - virtual const std::vector& audio_codecs() OVERRIDE { - return delegate_->audio_codecs(); - } - virtual const std::vector& - audio_rtp_header_extensions() OVERRIDE { - return delegate_->audio_rtp_header_extensions(); - } - virtual const std::vector& video_codecs() OVERRIDE { - return delegate_->video_codecs(); - } - virtual const std::vector& - video_rtp_header_extensions() OVERRIDE { - return delegate_->video_rtp_header_extensions(); - } - virtual void SetVoiceLogging(int min_sev, const char* filter) OVERRIDE { - delegate_->SetVoiceLogging(min_sev, filter); - } - virtual void SetVideoLogging(int min_sev, const char* filter) OVERRIDE { - delegate_->SetVideoLogging(min_sev, filter); - } - virtual bool StartAecDump(rtc::PlatformFile file) OVERRIDE { - return delegate_->StartAecDump(file); - } - virtual bool RegisterVoiceProcessor( - uint32 ssrc, VoiceProcessor* video_processor, - MediaProcessorDirection direction) OVERRIDE { - return delegate_->RegisterVoiceProcessor(ssrc, video_processor, direction); - } - virtual bool UnregisterVoiceProcessor( - uint32 ssrc, VoiceProcessor* video_processor, - MediaProcessorDirection direction) OVERRIDE { - return delegate_->UnregisterVoiceProcessor(ssrc, video_processor, - direction); - } - virtual VideoFormat GetStartCaptureFormat() const OVERRIDE { - return delegate_->GetStartCaptureFormat(); - } - virtual sigslot::repeater2& - SignalVideoCaptureStateChange() { - return delegate_->SignalVideoCaptureStateChange(); - } - - private: - cricket::MediaEngineInterface* delegate_; -}; - // Used by ChannelManager when no media engine is passed in to it // explicitly (acts as a default). MediaEngineInterface* WebRtcMediaEngineFactory::Create() { return new cricket::WebRtcMediaEngine(); } -// Used by PeerConnectionFactory and to create a media engine passed -// into ChannelManager. +// Used by PeerConnectionFactory to create a media engine passed into +// ChannelManager. MediaEngineInterface* WebRtcMediaEngineFactory::Create( webrtc::AudioDeviceModule* adm, webrtc::AudioDeviceModule* adm_sc, WebRtcVideoEncoderFactory* encoder_factory, WebRtcVideoDecoderFactory* decoder_factory) { -#if !defined(LIBPEERCONNECTION_LIB) && \ - !defined(LIBPEERCONNECTION_IMPLEMENTATION) - return new cricket::DelegatingWebRtcMediaEngine(); -#else return CreateWebRtcMediaEngine(adm, adm_sc, encoder_factory, decoder_factory); -#endif // !defined(LIBPEERCONNECTION_LIB) && - // !defined(LIBPEERCONNECTION_IMPLEMENTATION) } } // namespace cricket + +#endif // defined(LIBPEERCONNECTION_LIB) || + // defined(LIBPEERCONNECTION_IMPLEMENTATION) diff --git a/talk/media/webrtc/webrtcmediaengine.h b/talk/media/webrtc/webrtcmediaengine.h index 6eb90cddf..b906f5d39 100644 --- a/talk/media/webrtc/webrtcmediaengine.h +++ b/talk/media/webrtc/webrtcmediaengine.h @@ -59,7 +59,14 @@ namespace cricket { class WebRtcMediaEngineFactory { public: +#if !defined(LIBPEERCONNECTION_LIB) && \ + !defined(LIBPEERCONNECTION_IMPLEMENTATION) +// A bare Create() isn't supported when using the delegating media +// engine. +#else static MediaEngineInterface* Create(); +#endif // !defined(LIBPEERCONNECTION_LIB) && + // !defined(LIBPEERCONNECTION_IMPLEMENTATION) static MediaEngineInterface* Create( webrtc::AudioDeviceModule* adm, webrtc::AudioDeviceModule* adm_sc, @@ -69,4 +76,144 @@ class WebRtcMediaEngineFactory { } // namespace cricket + +#if !defined(LIBPEERCONNECTION_LIB) && \ + !defined(LIBPEERCONNECTION_IMPLEMENTATION) + +namespace cricket { + +// TODO(pthacther): Move this code into webrtcmediaengine.cc once +// Chrome compiles it. Right now it relies on only the .h file. +class DelegatingWebRtcMediaEngine : public cricket::MediaEngineInterface { + public: + DelegatingWebRtcMediaEngine( + webrtc::AudioDeviceModule* adm, + webrtc::AudioDeviceModule* adm_sc, + WebRtcVideoEncoderFactory* encoder_factory, + WebRtcVideoDecoderFactory* decoder_factory) + : delegate_(CreateWebRtcMediaEngine( + adm, adm_sc, encoder_factory, decoder_factory)) { + } + virtual ~DelegatingWebRtcMediaEngine() { + DestroyWebRtcMediaEngine(delegate_); + } + virtual bool Init(rtc::Thread* worker_thread) OVERRIDE { + return delegate_->Init(worker_thread); + } + virtual void Terminate() OVERRIDE { + delegate_->Terminate(); + } + virtual int GetCapabilities() OVERRIDE { + return delegate_->GetCapabilities(); + } + virtual VoiceMediaChannel* CreateChannel() OVERRIDE { + return delegate_->CreateChannel(); + } + virtual VideoMediaChannel* CreateVideoChannel( + VoiceMediaChannel* voice_media_channel) OVERRIDE { + return delegate_->CreateVideoChannel(voice_media_channel); + } + virtual SoundclipMedia* CreateSoundclip() OVERRIDE { + return delegate_->CreateSoundclip(); + } + virtual AudioOptions GetAudioOptions() const OVERRIDE { + return delegate_->GetAudioOptions(); + } + virtual bool SetAudioOptions(const AudioOptions& options) OVERRIDE { + return delegate_->SetAudioOptions(options); + } + virtual bool SetVideoOptions(const VideoOptions& options) OVERRIDE { + return delegate_->SetVideoOptions(options); + } + virtual bool SetAudioDelayOffset(int offset) OVERRIDE { + return delegate_->SetAudioDelayOffset(offset); + } + virtual bool SetDefaultVideoEncoderConfig( + const VideoEncoderConfig& config) OVERRIDE { + return delegate_->SetDefaultVideoEncoderConfig(config); + } + virtual VideoEncoderConfig GetDefaultVideoEncoderConfig() const OVERRIDE { + return delegate_->GetDefaultVideoEncoderConfig(); + } + virtual bool SetSoundDevices( + const Device* in_device, const Device* out_device) OVERRIDE { + return delegate_->SetSoundDevices(in_device, out_device); + } + virtual bool GetOutputVolume(int* level) OVERRIDE { + return delegate_->GetOutputVolume(level); + } + virtual bool SetOutputVolume(int level) OVERRIDE { + return delegate_->SetOutputVolume(level); + } + virtual int GetInputLevel() OVERRIDE { + return delegate_->GetInputLevel(); + } + virtual bool SetLocalMonitor(bool enable) OVERRIDE { + return delegate_->SetLocalMonitor(enable); + } + virtual bool SetLocalRenderer(VideoRenderer* renderer) OVERRIDE { + return delegate_->SetLocalRenderer(renderer); + } + virtual const std::vector& audio_codecs() OVERRIDE { + return delegate_->audio_codecs(); + } + virtual const std::vector& + audio_rtp_header_extensions() OVERRIDE { + return delegate_->audio_rtp_header_extensions(); + } + virtual const std::vector& video_codecs() OVERRIDE { + return delegate_->video_codecs(); + } + virtual const std::vector& + video_rtp_header_extensions() OVERRIDE { + return delegate_->video_rtp_header_extensions(); + } + virtual void SetVoiceLogging(int min_sev, const char* filter) OVERRIDE { + delegate_->SetVoiceLogging(min_sev, filter); + } + virtual void SetVideoLogging(int min_sev, const char* filter) OVERRIDE { + delegate_->SetVideoLogging(min_sev, filter); + } + virtual bool StartAecDump(rtc::PlatformFile file) OVERRIDE { + return delegate_->StartAecDump(file); + } + virtual bool RegisterVoiceProcessor( + uint32 ssrc, VoiceProcessor* video_processor, + MediaProcessorDirection direction) OVERRIDE { + return delegate_->RegisterVoiceProcessor(ssrc, video_processor, direction); + } + virtual bool UnregisterVoiceProcessor( + uint32 ssrc, VoiceProcessor* video_processor, + MediaProcessorDirection direction) OVERRIDE { + return delegate_->UnregisterVoiceProcessor(ssrc, video_processor, + direction); + } + virtual VideoFormat GetStartCaptureFormat() const OVERRIDE { + return delegate_->GetStartCaptureFormat(); + } + virtual sigslot::repeater2& + SignalVideoCaptureStateChange() { + return delegate_->SignalVideoCaptureStateChange(); + } + + private: + cricket::MediaEngineInterface* delegate_; +}; + +// Used by PeerConnectionFactory to create a media engine passed into +// ChannelManager. +MediaEngineInterface* WebRtcMediaEngineFactory::Create( + webrtc::AudioDeviceModule* adm, + webrtc::AudioDeviceModule* adm_sc, + WebRtcVideoEncoderFactory* encoder_factory, + WebRtcVideoDecoderFactory* decoder_factory) { + return new cricket::DelegatingWebRtcMediaEngine( + adm, adm_sc, encoder_factory, decoder_factory); +} + +} // namespace cricket + +#endif // !defined(LIBPEERCONNECTION_LIB) && + // !defined(LIBPEERCONNECTION_IMPLEMENTATION) + #endif // TALK_MEDIA_WEBRTCMEDIAENGINE_H_