Remove static initializer from WebRtcVideoEngine2.

BUG=
R=pliard@google.com, pthatcher@webrtc.org, pliard@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6338 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
index 13ed3d1..723ef1d 100644
--- a/talk/media/webrtc/webrtcvideoengine2.cc
+++ b/talk/media/webrtc/webrtcvideoengine2.cc
@@ -192,6 +192,9 @@
   return codecs;
 }
 
+WebRtcVideoEncoderFactory2::~WebRtcVideoEncoderFactory2() {
+}
+
 class DefaultVideoEncoderFactory : public WebRtcVideoEncoderFactory2 {
  public:
   virtual bool CreateEncoderSettings(
@@ -239,7 +242,7 @@
   virtual bool SupportsCodec(const VideoCodec& codec) OVERRIDE {
     return _stricmp(codec.name.c_str(), kVp8PayloadName) == 0;
   }
-} default_encoder_factory;
+};
 
 WebRtcVideoEngine2::WebRtcVideoEngine2() {
   // Construct without a factory or voice engine.
@@ -265,6 +268,7 @@
 
   video_codecs_ = DefaultVideoCodecs();
   default_codec_format_ = VideoFormat(kDefaultVideoFormat);
+  default_video_encoder_factory_.reset(new DefaultVideoEncoderFactory());
 }
 
 WebRtcVideoEngine2::~WebRtcVideoEngine2() {
@@ -328,7 +332,7 @@
       channel_factory_ != NULL
           ? channel_factory_->Create(this, voice_channel)
           : new WebRtcVideoChannel2(
-                this, voice_channel, GetDefaultVideoEncoderFactory());
+                this, voice_channel, GetVideoEncoderFactory());
   if (!channel->Init()) {
     delete channel;
     return NULL;
@@ -463,9 +467,8 @@
   return false;
 }
 
-WebRtcVideoEncoderFactory2* WebRtcVideoEngine2::GetDefaultVideoEncoderFactory()
-    const {
-  return &default_encoder_factory;
+WebRtcVideoEncoderFactory2* WebRtcVideoEngine2::GetVideoEncoderFactory() const {
+  return default_video_encoder_factory_.get();
 }
 
 // Thin map between cricket::VideoFrame and an existing webrtc::I420VideoFrame
diff --git a/talk/media/webrtc/webrtcvideoengine2.h b/talk/media/webrtc/webrtcvideoengine2.h
index e6b9598..10a1608 100644
--- a/talk/media/webrtc/webrtcvideoengine2.h
+++ b/talk/media/webrtc/webrtcvideoengine2.h
@@ -82,6 +82,7 @@
 
 class WebRtcVideoEncoderFactory2 {
  public:
+  virtual ~WebRtcVideoEncoderFactory2();
   virtual bool CreateEncoderSettings(
       webrtc::VideoSendStream::Config::EncoderSettings* encoder_settings,
       const VideoOptions& options,
@@ -139,7 +140,7 @@
 
   talk_base::CpuMonitor* cpu_monitor() { return cpu_monitor_.get(); }
 
-  virtual WebRtcVideoEncoderFactory2* GetDefaultVideoEncoderFactory() const;
+  virtual WebRtcVideoEncoderFactory2* GetVideoEncoderFactory() const;
 
  private:
   void Construct(WebRtcVideoChannelFactory* channel_factory,
@@ -162,6 +163,8 @@
 
   talk_base::scoped_ptr<talk_base::CpuMonitor> cpu_monitor_;
   WebRtcVideoChannelFactory* channel_factory_;
+  talk_base::scoped_ptr<WebRtcVideoEncoderFactory2>
+      default_video_encoder_factory_;
 };
 
 // Adapter between webrtc::VideoRenderer and cricket::VideoRenderer.
diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
index 1e402e0..bba1455 100644
--- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
@@ -243,9 +243,7 @@
   FakeWebRtcVideoChannel2(FakeCall* call,
                           WebRtcVideoEngine2* engine,
                           VoiceMediaChannel* voice_channel)
-      : WebRtcVideoChannel2(call,
-                            engine,
-                            engine->GetDefaultVideoEncoderFactory()),
+      : WebRtcVideoChannel2(call, engine, engine->GetVideoEncoderFactory()),
         fake_call_(call),
         voice_channel_(voice_channel) {}