* Remove global variables of class type for chromium build.
Review URL: http://webrtc-codereview.appspot.com/299008

git-svn-id: http://libjingle.googlecode.com/svn/trunk@98 dd674b97-3498-5ee5-1854-bdd07cd0ff33
diff --git a/talk/app/webrtc/webrtcjson.cc b/talk/app/webrtc/webrtcjson.cc
index f8318cf..b071746 100644
--- a/talk/app/webrtc/webrtcjson.cc
+++ b/talk/app/webrtc/webrtcjson.cc
@@ -27,11 +27,15 @@
 
 #include "talk/app/webrtc/webrtcjson.h"
 
-#include <stdio.h>
-#include <string>
+#ifdef WEBRTC_RELATIVE_PATH
+#include "json/json.h"
+#else
+#include "third_party/jsoncpp/json.h"
+#endif
 
 // TODO: Remove webrtcsession.h once we can get size from signaling.
-#include "talk/app/webrtc/webrtcsession.h"  // For kDefaultVideoCodec
+// webrtcsession.h is for kDefaultVideoCodecWidth and kDefaultVideoCodecHeight.
+#include "talk/app/webrtc/webrtcsession.h"
 #include "talk/base/json.h"
 #include "talk/base/logging.h"
 #include "talk/base/stringutils.h"
@@ -42,6 +46,50 @@
 static const int kIceComponent = 1;
 static const int kIceFoundation = 1;
 
+static std::vector<Json::Value> ReadValues(const Json::Value& value,
+                                           const std::string& key);
+
+static bool BuildMediaMessage(
+    const cricket::ContentInfo& content_info,
+    const std::vector<cricket::Candidate>& candidates,
+    bool video,
+    Json::Value* value);
+
+static bool BuildRtpMapParams(
+    const cricket::ContentInfo& audio_offer,
+    bool video,
+    std::vector<Json::Value>* rtpmap);
+
+static bool BuildAttributes(const std::vector<cricket::Candidate>& candidates,
+                            bool video,
+                            std::vector<Json::Value>* jcandidates);
+
+static std::string Serialize(const Json::Value& value);
+static bool Deserialize(const std::string& message, Json::Value* value);
+
+static bool ParseRtcpMux(const Json::Value& value);
+static bool ParseAudioCodec(const Json::Value& value,
+                            cricket::AudioContentDescription* content);
+static bool ParseVideoCodec(const Json::Value& value,
+                            cricket::VideoContentDescription* content);
+static bool ParseIceCandidates(const Json::Value& value,
+                               std::vector<cricket::Candidate>* candidates);
+
+static Json::Value ReadValue(const Json::Value& value, const std::string& key);
+static std::string ReadString(const Json::Value& value, const std::string& key);
+static uint32 ReadUInt(const Json::Value& value, const std::string& key);
+
+static void Append(Json::Value* object, const std::string& key, bool value);
+static void Append(Json::Value* object, const std::string& key, int value);
+static void Append(Json::Value* object, const std::string& key,
+                   const std::string& value);
+static void Append(Json::Value* object, const std::string& key, uint32 value);
+static void Append(Json::Value* object, const std::string& key,
+                   const Json::Value& value);
+static void Append(Json::Value* object,
+                   const std::string& key,
+                   const std::vector<Json::Value>& values);
+
 bool GetJsonSignalingMessage(
     const cricket::SessionDescription* sdp,
     const std::vector<cricket::Candidate>& candidates,
@@ -291,8 +339,8 @@
     talk_base::split(codec_info["codec"].asString(), '/', &tokens);
     codec.name = tokens[1];
     // TODO: Remove once we can get size from signaling message.
-    codec.width = WebRtcSession::kDefaultVideoCodec.width;
-    codec.height = WebRtcSession::kDefaultVideoCodec.height;
+    codec.width = WebRtcSession::kDefaultVideoCodecWidth;
+    codec.height = WebRtcSession::kDefaultVideoCodecHeight;
     content->AddCodec(codec);
   }
   return true;
@@ -387,18 +435,10 @@
   return value[key].asUInt();
 }
 
-double ReadDouble(const Json::Value& value, const std::string& key) {
-  return value[key].asDouble();
-}
-
 void Append(Json::Value* object, const std::string& key, bool value) {
   (*object)[key] = Json::Value(value);
 }
 
-void Append(Json::Value* object, const std::string& key, char * value) {
-  (*object)[key] = Json::Value(value);
-}
-
 void Append(Json::Value* object, const std::string& key, int value) {
   (*object)[key] = Json::Value(value);
 }
diff --git a/talk/app/webrtc/webrtcjson.h b/talk/app/webrtc/webrtcjson.h
index 906326d..d923f83 100644
--- a/talk/app/webrtc/webrtcjson.h
+++ b/talk/app/webrtc/webrtcjson.h
@@ -30,11 +30,6 @@
 
 #include <string>
 
-#ifdef WEBRTC_RELATIVE_PATH
-#include "json/json.h"
-#else
-#include "third_party/jsoncpp/json.h"
-#endif
 #include "talk/p2p/base/candidate.h"
 #include "talk/session/phone/codec.h"
 
@@ -51,58 +46,14 @@
 
 namespace webrtc {
 
-std::vector<Json::Value> ReadValues(const Json::Value& value,
-                                    const std::string& key);
-
-bool BuildMediaMessage(
-    const cricket::ContentInfo& content_info,
-    const std::vector<cricket::Candidate>& candidates,
-    bool video,
-    Json::Value* value);
-
 bool GetJsonSignalingMessage(
     const cricket::SessionDescription* sdp,
     const std::vector<cricket::Candidate>& candidates,
     std::string* signaling_message);
 
-bool BuildRtpMapParams(
-    const cricket::ContentInfo& audio_offer,
-    bool video,
-    std::vector<Json::Value>* rtpmap);
-
-bool BuildAttributes(const std::vector<cricket::Candidate>& candidates,
-                     bool video,
-                     std::vector<Json::Value>* jcandidates);
-
-std::string Serialize(const Json::Value& value);
-bool Deserialize(const std::string& message, Json::Value& value);
-
 bool ParseJsonSignalingMessage(const std::string& signaling_message,
                                cricket::SessionDescription** sdp,
                                std::vector<cricket::Candidate>* candidates);
-bool ParseRtcpMux(const Json::Value& value);
-bool ParseAudioCodec(const Json::Value& value,
-                     cricket::AudioContentDescription* content);
-bool ParseVideoCodec(const Json::Value& value,
-                     cricket::VideoContentDescription* content);
-bool ParseIceCandidates(const Json::Value& value,
-                        std::vector<cricket::Candidate>* candidates);
-Json::Value ReadValue(const Json::Value& value, const std::string& key);
-std::string ReadString(const Json::Value& value, const std::string& key);
-double ReadDouble(const Json::Value& value, const std::string& key);
-uint32 ReadUInt(const Json::Value& value, const std::string& key);
-
-void Append(Json::Value* object, const std::string& key, bool value);
-void Append(Json::Value* object, const std::string& key, char * value);
-void Append(Json::Value* object, const std::string& key, int value);
-void Append(Json::Value* object, const std::string& key,
-            const std::string& value);
-void Append(Json::Value* object, const std::string& key, uint32 value);
-void Append(Json::Value* object, const std::string& key,
-            const Json::Value& value);
-void Append(Json::Value* object,
-            const std::string& key,
-            const std::vector<Json::Value>& values);
 }
 
 #endif  // TALK_APP_WEBRTC_WEBRTCJSON_H_
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index 6c9abb3..634da77 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -31,7 +31,6 @@
 #include <vector>
 
 #include "talk/base/common.h"
-#include "talk/base/json.h"
 #include "talk/base/scoped_ptr.h"
 #include "talk/p2p/base/constants.h"
 #include "talk/p2p/base/sessiondescription.h"
@@ -61,8 +60,9 @@
 static const char kVideoStream[] = "video_rtp";
 static const char kAudioStream[] = "rtp";
 
-const cricket::VideoCodec WebRtcSession::kDefaultVideoCodec =
-    cricket::VideoCodec(100, "VP8", 640, 480, 30, 0);
+static const int kDefaultVideoCodecId = 100;
+static const int kDefaultVideoCodecFramerate = 30;
+static const char kDefaultVideoCodecName[] = "VP8";
 
 WebRtcSession::WebRtcSession(const std::string& id,
                              bool incoming,
@@ -96,8 +96,11 @@
 }
 
 bool WebRtcSession::Initiate() {
+  const cricket::VideoCodec default_codec(kDefaultVideoCodecId,
+      kDefaultVideoCodecName, kDefaultVideoCodecWidth, kDefaultVideoCodecHeight,
+      kDefaultVideoCodecFramerate, 0);
   channel_manager_->SetDefaultVideoEncoderConfig(
-      cricket::VideoEncoderConfig(kDefaultVideoCodec));
+      cricket::VideoEncoderConfig(default_codec));
 
   if (signaling_thread_ == NULL)
     return false;
diff --git a/talk/app/webrtc/webrtcsession.h b/talk/app/webrtc/webrtcsession.h
index 3d05b34..8f6c6ad 100644
--- a/talk/app/webrtc/webrtcsession.h
+++ b/talk/app/webrtc/webrtcsession.h
@@ -125,7 +125,8 @@
   cricket::PortAllocator* port_allocator() const { return port_allocator_; }
   talk_base::Thread* signaling_thread() const { return signaling_thread_; }
 
-  static const cricket::VideoCodec kDefaultVideoCodec;
+  static const int kDefaultVideoCodecWidth = 640;
+  static const int kDefaultVideoCodecHeight = 480;
 
  protected:
   // methods from cricket::BaseSession
diff --git a/talk/app/webrtcv1/webrtcjson.cc b/talk/app/webrtcv1/webrtcjson.cc
index 81ee059..4cc4239 100644
--- a/talk/app/webrtcv1/webrtcjson.cc
+++ b/talk/app/webrtcv1/webrtcjson.cc
@@ -27,11 +27,15 @@
 
 #include "talk/app/webrtcv1/webrtcjson.h"
 
-#include <stdio.h>
-#include <string>
+#ifdef WEBRTC_RELATIVE_PATH
+#include "json/json.h"
+#else
+#include "third_party/jsoncpp/json.h"
+#endif
 
 // TODO: Remove webrtcsession.h once we can get size from signaling.
-#include "talk/app/webrtcv1/webrtcsession.h"  // For kDefaultVideoCodec
+// webrtcsession.h is for kDefaultVideoCodecWidth and kDefaultVideoCodecHeight.
+#include "talk/app/webrtcv1/webrtcsession.h"
 #include "talk/base/json.h"
 #include "talk/base/logging.h"
 #include "talk/base/stringutils.h"
@@ -42,6 +46,50 @@
 static const int kIceComponent = 1;
 static const int kIceFoundation = 1;
 
+static std::vector<Json::Value> ReadValues(const Json::Value& value,
+                                           const std::string& key);
+
+static bool BuildMediaMessage(
+    const cricket::ContentInfo& content_info,
+    const std::vector<cricket::Candidate>& candidates,
+    bool video,
+    Json::Value* value);
+
+static bool BuildRtpMapParams(
+    const cricket::ContentInfo& audio_offer,
+    bool video,
+    std::vector<Json::Value>* rtpmap);
+
+static bool BuildAttributes(const std::vector<cricket::Candidate>& candidates,
+                            bool video,
+                            std::vector<Json::Value>* jcandidates);
+
+static std::string Serialize(const Json::Value& value);
+static bool Deserialize(const std::string& message, Json::Value* value);
+
+static bool ParseRtcpMux(const Json::Value& value);
+static bool ParseAudioCodec(const Json::Value& value,
+                            cricket::AudioContentDescription* content);
+static bool ParseVideoCodec(const Json::Value& value,
+                            cricket::VideoContentDescription* content);
+static bool ParseIceCandidates(const Json::Value& value,
+                               std::vector<cricket::Candidate>* candidates);
+
+static Json::Value ReadValue(const Json::Value& value, const std::string& key);
+static std::string ReadString(const Json::Value& value, const std::string& key);
+static uint32 ReadUInt(const Json::Value& value, const std::string& key);
+
+static void Append(Json::Value* object, const std::string& key, bool value);
+static void Append(Json::Value* object, const std::string& key, int value);
+static void Append(Json::Value* object, const std::string& key,
+                   const std::string& value);
+static void Append(Json::Value* object, const std::string& key, uint32 value);
+static void Append(Json::Value* object, const std::string& key,
+                   const Json::Value& value);
+static void Append(Json::Value* object,
+                   const std::string& key,
+                   const std::vector<Json::Value>& values);
+
 bool GetJsonSignalingMessage(
     const cricket::SessionDescription* sdp,
     const std::vector<cricket::Candidate>& candidates,
@@ -291,8 +339,8 @@
     talk_base::split(codec_info["codec"].asString(), '/', &tokens);
     codec.name = tokens[1];
     // TODO: Remove once we can get size from signaling message.
-    codec.width = WebRtcSession::kDefaultVideoCodec.width;
-    codec.height = WebRtcSession::kDefaultVideoCodec.height;
+    codec.width = WebRtcSession::kDefaultVideoCodecWidth;
+    codec.height = WebRtcSession::kDefaultVideoCodecHeight;
     content->AddCodec(codec);
   }
   return true;
@@ -387,18 +435,10 @@
   return value[key].asUInt();
 }
 
-double ReadDouble(const Json::Value& value, const std::string& key) {
-  return value[key].asDouble();
-}
-
 void Append(Json::Value* object, const std::string& key, bool value) {
   (*object)[key] = Json::Value(value);
 }
 
-void Append(Json::Value* object, const std::string& key, char * value) {
-  (*object)[key] = Json::Value(value);
-}
-
 void Append(Json::Value* object, const std::string& key, int value) {
   (*object)[key] = Json::Value(value);
 }
diff --git a/talk/app/webrtcv1/webrtcjson.h b/talk/app/webrtcv1/webrtcjson.h
index 906326d..d923f83 100644
--- a/talk/app/webrtcv1/webrtcjson.h
+++ b/talk/app/webrtcv1/webrtcjson.h
@@ -30,11 +30,6 @@
 
 #include <string>
 
-#ifdef WEBRTC_RELATIVE_PATH
-#include "json/json.h"
-#else
-#include "third_party/jsoncpp/json.h"
-#endif
 #include "talk/p2p/base/candidate.h"
 #include "talk/session/phone/codec.h"
 
@@ -51,58 +46,14 @@
 
 namespace webrtc {
 
-std::vector<Json::Value> ReadValues(const Json::Value& value,
-                                    const std::string& key);
-
-bool BuildMediaMessage(
-    const cricket::ContentInfo& content_info,
-    const std::vector<cricket::Candidate>& candidates,
-    bool video,
-    Json::Value* value);
-
 bool GetJsonSignalingMessage(
     const cricket::SessionDescription* sdp,
     const std::vector<cricket::Candidate>& candidates,
     std::string* signaling_message);
 
-bool BuildRtpMapParams(
-    const cricket::ContentInfo& audio_offer,
-    bool video,
-    std::vector<Json::Value>* rtpmap);
-
-bool BuildAttributes(const std::vector<cricket::Candidate>& candidates,
-                     bool video,
-                     std::vector<Json::Value>* jcandidates);
-
-std::string Serialize(const Json::Value& value);
-bool Deserialize(const std::string& message, Json::Value& value);
-
 bool ParseJsonSignalingMessage(const std::string& signaling_message,
                                cricket::SessionDescription** sdp,
                                std::vector<cricket::Candidate>* candidates);
-bool ParseRtcpMux(const Json::Value& value);
-bool ParseAudioCodec(const Json::Value& value,
-                     cricket::AudioContentDescription* content);
-bool ParseVideoCodec(const Json::Value& value,
-                     cricket::VideoContentDescription* content);
-bool ParseIceCandidates(const Json::Value& value,
-                        std::vector<cricket::Candidate>* candidates);
-Json::Value ReadValue(const Json::Value& value, const std::string& key);
-std::string ReadString(const Json::Value& value, const std::string& key);
-double ReadDouble(const Json::Value& value, const std::string& key);
-uint32 ReadUInt(const Json::Value& value, const std::string& key);
-
-void Append(Json::Value* object, const std::string& key, bool value);
-void Append(Json::Value* object, const std::string& key, char * value);
-void Append(Json::Value* object, const std::string& key, int value);
-void Append(Json::Value* object, const std::string& key,
-            const std::string& value);
-void Append(Json::Value* object, const std::string& key, uint32 value);
-void Append(Json::Value* object, const std::string& key,
-            const Json::Value& value);
-void Append(Json::Value* object,
-            const std::string& key,
-            const std::vector<Json::Value>& values);
 }
 
 #endif  // TALK_APP_WEBRTC_WEBRTCJSON_H_
diff --git a/talk/app/webrtcv1/webrtcsession.cc b/talk/app/webrtcv1/webrtcsession.cc
index febbb48..0678627 100644
--- a/talk/app/webrtcv1/webrtcsession.cc
+++ b/talk/app/webrtcv1/webrtcsession.cc
@@ -31,7 +31,6 @@
 #include <vector>
 
 #include "talk/base/common.h"
-#include "talk/base/json.h"
 #include "talk/base/scoped_ptr.h"
 #include "talk/p2p/base/constants.h"
 #include "talk/p2p/base/sessiondescription.h"
@@ -61,8 +60,9 @@
 static const char kVideoStream[] = "video_rtp";
 static const char kAudioStream[] = "rtp";
 
-const cricket::VideoCodec WebRtcSession::kDefaultVideoCodec =
-    cricket::VideoCodec(100, "VP8", 640, 480, 30, 0);
+static const int kDefaultVideoCodecId = 100;
+static const int kDefaultVideoCodecFramerate = 30;
+static const char kDefaultVideoCodecName[] = "VP8";
 
 WebRtcSession::WebRtcSession(const std::string& id,
                              bool incoming,
@@ -96,8 +96,11 @@
 }
 
 bool WebRtcSession::Initiate() {
+  const cricket::VideoCodec default_codec(kDefaultVideoCodecId,
+      kDefaultVideoCodecName, kDefaultVideoCodecWidth, kDefaultVideoCodecHeight,
+      kDefaultVideoCodecFramerate, 0);
   channel_manager_->SetDefaultVideoEncoderConfig(
-      cricket::VideoEncoderConfig(kDefaultVideoCodec));
+      cricket::VideoEncoderConfig(default_codec));
 
   if (signaling_thread_ == NULL)
     return false;
diff --git a/talk/app/webrtcv1/webrtcsession.h b/talk/app/webrtcv1/webrtcsession.h
index 3d05b34..8f6c6ad 100644
--- a/talk/app/webrtcv1/webrtcsession.h
+++ b/talk/app/webrtcv1/webrtcsession.h
@@ -125,7 +125,8 @@
   cricket::PortAllocator* port_allocator() const { return port_allocator_; }
   talk_base::Thread* signaling_thread() const { return signaling_thread_; }
 
-  static const cricket::VideoCodec kDefaultVideoCodec;
+  static const int kDefaultVideoCodecWidth = 640;
+  static const int kDefaultVideoCodecHeight = 480;
 
  protected:
   // methods from cricket::BaseSession
diff --git a/talk/session/phone/videocommon.h b/talk/session/phone/videocommon.h
index b294f12..fb1f393 100644
--- a/talk/session/phone/videocommon.h
+++ b/talk/session/phone/videocommon.h
@@ -113,6 +113,14 @@
 // Definition of VideoFormat.
 //////////////////////////////////////////////////////////////////////////////
 
+// VideoFormat with Plain Old Data for global variables
+struct VideoFormatPod {
+  int width;  // in number of pixels
+  int height;  // in number of pixels
+  int framerate;
+  uint32 fourcc;  // color space. FOURCC_ANY means that any color space is OK.
+};
+
 struct VideoFormat {
   static const int64 kMinimumInterval =
       talk_base::kNumNanosecsPerSec / 10000;  // 10k fps
@@ -133,6 +141,13 @@
         fourcc(format.fourcc) {
   }
 
+  explicit VideoFormat(const VideoFormatPod& format)
+      : width(format.width),
+        height(format.height),
+        interval(FpsToInterval(format.framerate)),
+        fourcc(format.fourcc) {
+  }
+
   static int64 FpsToInterval(int fps) {
     return fps ? talk_base::kNumNanosecsPerSec / fps : kMinimumInterval;
   }
diff --git a/talk/session/phone/webrtcvideoengine.cc b/talk/session/phone/webrtcvideoengine.cc
index 3f30dce..3460e49 100644
--- a/talk/session/phone/webrtcvideoengine.cc
+++ b/talk/session/phone/webrtcvideoengine.cc
@@ -232,30 +232,30 @@
 
 // The formats are sorted by the descending order of width. We use the order to
 // find the next format for CPU and bandwidth adaptation.
-const VideoFormat WebRtcVideoEngine::kVideoFormats[] = {
-  VideoFormat(1280, 800, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(1280, 720, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(960, 600, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(960, 540, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(640, 400, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(640, 360, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(640, 480, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(480, 300, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(480, 270, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(480, 360, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(320, 200, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(320, 180, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(320, 240, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(240, 150, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(240, 135, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(240, 180, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(160, 100, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(160, 90, VideoFormat::FpsToInterval(30), FOURCC_ANY),
-  VideoFormat(160, 120, VideoFormat::FpsToInterval(30), FOURCC_ANY)
+const VideoFormatPod WebRtcVideoEngine::kVideoFormats[] = {
+  {1280, 800, 30, FOURCC_ANY},
+  {1280, 720, 30, FOURCC_ANY},
+  {960, 600, 30, FOURCC_ANY},
+  {960, 540, 30, FOURCC_ANY},
+  {640, 400, 30, FOURCC_ANY},
+  {640, 360, 30, FOURCC_ANY},
+  {640, 480, 30, FOURCC_ANY},
+  {480, 300, 30, FOURCC_ANY},
+  {480, 270, 30, FOURCC_ANY},
+  {480, 360, 30, FOURCC_ANY},
+  {320, 200, 30, FOURCC_ANY},
+  {320, 180, 30, FOURCC_ANY},
+  {320, 240, 30, FOURCC_ANY},
+  {240, 150, 30, FOURCC_ANY},
+  {240, 135, 30, FOURCC_ANY},
+  {240, 180, 30, FOURCC_ANY},
+  {160, 100, 30, FOURCC_ANY},
+  {160, 90, 30, FOURCC_ANY},
+  {160, 120, 30, FOURCC_ANY},
 };
 
-const VideoFormat WebRtcVideoEngine::kDefaultVideoFormat =
-    VideoFormat(640, 400, VideoFormat::FpsToInterval(30), FOURCC_ANY);
+const VideoFormatPod WebRtcVideoEngine::kDefaultVideoFormat =
+    {640, 400, 30, FOURCC_ANY};
 
 WebRtcVideoEngine::WebRtcVideoEngine() {
   Construct(new ViEWrapper(), new ViETraceWrapper(), NULL);
@@ -302,7 +302,8 @@
                        kVideoCodecPrefs[0].name,
                        kDefaultVideoFormat.width,
                        kDefaultVideoFormat.height,
-                       kDefaultVideoFormat.framerate(), 0);
+                       kDefaultVideoFormat.framerate,
+                       0);
   if (!SetDefaultCodec(max_codec)) {
     LOG(LS_ERROR) << "Failed to initialize list of supported codec types";
   }
@@ -639,7 +640,7 @@
 // Checks to see whether we comprehend and could receive a particular codec
 bool WebRtcVideoEngine::FindCodec(const VideoCodec& in) {
   for (int i = 0; i < ARRAY_SIZE(kVideoFormats); ++i) {
-    const VideoFormat& fmt = kVideoFormats[i];
+    const VideoFormat fmt(kVideoFormats[i]);
     if ((in.width == 0 && in.height == 0) ||
         (fmt.width == in.width && fmt.height == in.height)) {
       for (int j = 0; j < ARRAY_SIZE(kVideoCodecPrefs); ++j) {
@@ -691,7 +692,7 @@
     // Pick the best quality that is within their and our bounds and has the
     // correct aspect ratio.
     for (int j = 0; j < ARRAY_SIZE(kVideoFormats); ++j) {
-      const VideoFormat& format = kVideoFormats[j];
+      const VideoFormat format(kVideoFormats[j]);
 
       // Skip any format that is larger than the local or remote maximums, or
       // smaller than the current best match
@@ -873,7 +874,7 @@
 // Ignore spammy trace messages, mostly from the stats API when we haven't
 // gotten RTCP info yet from the remote side.
 bool WebRtcVideoEngine::ShouldIgnoreTrace(const std::string& trace) {
-  static const char* kTracesToIgnore[] = {
+  static const char* const kTracesToIgnore[] = {
     NULL
   };
   for (const char* const* p = kTracesToIgnore; *p; ++p) {
diff --git a/talk/session/phone/webrtcvideoengine.h b/talk/session/phone/webrtcvideoengine.h
index 1e9f773..eb2caa9 100644
--- a/talk/session/phone/webrtcvideoengine.h
+++ b/talk/session/phone/webrtcvideoengine.h
@@ -36,7 +36,7 @@
 #include "talk/session/phone/channel.h"
 #include "talk/session/phone/webrtccommon.h"
 #ifdef WEBRTC_RELATIVE_PATH
-#include "video_engine/include/vie_base.h"
+#include "video_engine/main/interface/vie_base.h"
 #else
 #include "third_party/webrtc/files/include/vie_base.h"
 #endif  // WEBRTC_RELATIVE_PATH
@@ -148,8 +148,8 @@
   };
 
   static const VideoCodecPref kVideoCodecPrefs[];
-  static const VideoFormat kVideoFormats[];
-  static const VideoFormat kDefaultVideoFormat;
+  static const VideoFormatPod kVideoFormats[];
+  static const VideoFormatPod kDefaultVideoFormat;
 
   void Construct(ViEWrapper* vie_wrapper,
                  ViETraceWrapper* tracing,
diff --git a/talk/session/phone/webrtcvie.h b/talk/session/phone/webrtcvie.h
index bd2ba71..cdbfd89 100644
--- a/talk/session/phone/webrtcvie.h
+++ b/talk/session/phone/webrtcvie.h
@@ -37,14 +37,14 @@
 #include "modules/interface/module_common_types.h"
 #include "modules/video_capture/main/interface/video_capture.h"
 #include "modules/video_render/main/interface/video_render.h"
-#include "video_engine/include/vie_base.h"
-#include "video_engine/include/vie_capture.h"
-#include "video_engine/include/vie_codec.h"
-#include "video_engine/include/vie_errors.h"
-#include "video_engine/include/vie_image_process.h"
-#include "video_engine/include/vie_network.h"
-#include "video_engine/include/vie_render.h"
-#include "video_engine/include/vie_rtp_rtcp.h"
+#include "video_engine/main/interface/vie_base.h"
+#include "video_engine/main/interface/vie_capture.h"
+#include "video_engine/main/interface/vie_codec.h"
+#include "video_engine/main/interface/vie_errors.h"
+#include "video_engine/main/interface/vie_image_process.h"
+#include "video_engine/main/interface/vie_network.h"
+#include "video_engine/main/interface/vie_render.h"
+#include "video_engine/main/interface/vie_rtp_rtcp.h"
 #else
 #include "third_party/webrtc/files/include/common_types.h"
 #include "third_party/webrtc/files/include/module_common_types.h"