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) {}
 
