git-svn-id: http://webrtc.googlecode.com/svn/trunk@11 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..c84c84b
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,4 @@
+# Names should be added to this file like so:

+# Name or Organization <email address>

+

+Google Inc.
\ No newline at end of file
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..5819fdb
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,60 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+MY_WEBRTC_ROOT_PATH := $(call my-dir)
+
+# voice
+include $(MY_WEBRTC_ROOT_PATH)/common_audio/resampler/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/common_audio/signal_processing_library/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/common_audio/vad/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/NetEQ/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/CNG/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/G711/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/G722/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/PCM16B/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/iLBC/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/iSAC/fix/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/codecs/iSAC/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_coding/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_conference_mixer/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_device/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/aec/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/aecm/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/agc/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/ns/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/audio_processing/utility/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/media_file/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/rtp_rtcp/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/udp_transport/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/utility/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/system_wrappers/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/voice_engine/main/source/Android.mk
+
+# video
+include $(MY_WEBRTC_ROOT_PATH)/common_video/jpeg/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/common_video/vplib/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_capture/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_coding/codecs/i420/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_coding/codecs/vp8/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_coding/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_processing/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_mixer/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/modules/video_render/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/video_engine/main/source/Android.mk
+
+# third party
+#include $(MY_WEBRTC_ROOT_PATH)/third_party/libvpx/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/libvpx.mk
+
+# build .so
+include $(MY_WEBRTC_ROOT_PATH)/android-webrtc.mk
+
+# build test app
+include $(MY_WEBRTC_ROOT_PATH)/voice_engine/main/test/Android/native_test/Android.mk 
+include $(MY_WEBRTC_ROOT_PATH)/video_engine/main/test/AutoTest/source/Android.mk
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..da40b33
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) 2011, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSE_THIRD_PARTY b/LICENSE_THIRD_PARTY
new file mode 100644
index 0000000..ec38ec6
--- /dev/null
+++ b/LICENSE_THIRD_PARTY
@@ -0,0 +1,10 @@
+This source tree contain third party source code which is governed by third 
+party licenses. This file contain references to files which are under other 
+licenses than the one provided in the LICENSE file in the root of the source
+tree.
+
+Files governed by third party licenses:
+system_wrappers/source/condition_variable_windows.cc
+system_wrappers/source/fix_interlocked_exchange_pointer_windows.h
+system_wrappers/source/spreadsortlib/*
+system_wrappers/source/thread_windows_set_name.h
\ No newline at end of file
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..f59ec20
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1 @@
+*
\ No newline at end of file
diff --git a/PATENTS b/PATENTS
new file mode 100644
index 0000000..4f81d30
--- /dev/null
+++ b/PATENTS
@@ -0,0 +1,28 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the WebRTC project.
+
+Google hereby grants to you a perpetual, worldwide, non-exclusive,
+no-charge, irrevocable (except as stated in this section) patent
+license to make, have made, use, offer to sell, sell, import,
+transfer, and otherwise run, modify and propagate the contents of this
+implementation of the VoiceEngine Framework and the VideoEngine
+Framework included in the WebRTC package, where such license applies
+only to those patent claims, both currently owned by Google and
+acquired in the future, licensable by Google that are necessarily
+infringed by this implementation of the VoiceEngine Framework and the
+VideoEngine Framework included in the WebRTC package. This grant does
+not include claims that would be infringed only as a consequence of
+further modification of this implementation. If you or your agent or
+exclusive licensee institute or order or agree to the institution of
+patent litigation against any entity (including a cross-claim or
+counterclaim in a lawsuit) alleging that this implementation of the
+VoiceEngine Framework and the VideoEngine Framework included in the
+WebRTC package or any code incorporated within this implementation of
+the media components included in the WebRTC package constitutes direct
+or contributory patent infringement, or inducement of patent
+infringement, then any patent rights granted to you under this License
+for this implementation of the VoiceEngine Framework and the
+VideoEngine Framework included in the WebRTC package shall terminate
+as of the date such litigation is filed.
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
new file mode 100644
index 0000000..ddb15ce
--- /dev/null
+++ b/PRESUBMIT.py
@@ -0,0 +1,35 @@
+
+	
+
+
+webrtc_license_header = (
+      r'.*? Copyright \(c\) 2011 The WebRTC project authors'
+      r'.*?Use of this source code is governed by a BSD-style license\n'
+      r'.*? that can be found in the LICENSE file in the root of the source\n'
+      r'.*? tree. An additional intellectual property rights grant can be found\n'
+r'.*? in the file PATENTS.  All contributing project authors may\n'
+r'.*? be found in the AUTHORS file in the root of the source tree\n'
+  ) 
+
+
+def CheckChangeOnUpload(input_api, output_api):
+  results = []
+  results.extend(input_api.canned_checks.CheckLongLines(input_api, output_api,maxlen=95))
+  results.extend(input_api.canned_checks.CheckChangeHasNoTabs(input_api, output_api))
+  return results
+
+
+ #results.extend(CheckChangeLintsClean(input_api, output_api))
+ #results.extend(input_api.canned_checks.CheckLicense(input_api, output_api, license_re=webrtc_license_header))
+  
+
+
+
+
+#def CheckChangeOnCommit (input_api, output_api):
+#  results = []
+#  sources = lambda x: input_api.FilterSourceFile(x, black_list=black_list)
+#  results.extend(input_api.canned_checks.CheckOwners(input_api, output_api, source_file_filter=sources))
+#  return results
+
+
diff --git a/android-webrtc.mk b/android-webrtc.mk
new file mode 100644
index 0000000..db54b39
--- /dev/null
+++ b/android-webrtc.mk
@@ -0,0 +1,100 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+MY_APM_WHOLE_STATIC_LIBRARIES := \
+	libwebrtc_spl \
+	libwebrtc_resampler \
+	libwebrtc_apm \
+	libwebrtc_apm_utility \
+	libwebrtc_vad \
+	libwebrtc_ns \
+	libwebrtc_agc \
+	libwebrtc_aec \
+	libwebrtc_aecm 
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_audio_preprocessing
+LOCAL_MODULE_TAGS := optional
+LOCAL_LDFLAGS :=
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+	$(MY_APM_WHOLE_STATIC_LIBRARIES) \
+	libwebrtc_system_wrappers \
+
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+	libdl \
+	libstlport 
+
+LOCAL_ADDITIONAL_DEPENDENCIES :=
+
+include external/stlport/libstlport.mk
+include $(BUILD_SHARED_LIBRARY)
+
+###
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc
+LOCAL_MODULE_TAGS := optional
+LOCAL_LDFLAGS :=
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+	libwebrtc_system_wrappers \
+	libwebrtc_audio_device \
+	libwebrtc_pcm16b \
+	libwebrtc_cng \
+	libwebrtc_audio_coding \
+	libwebrtc_rtp_rtcp \
+	libwebrtc_media_file \
+	libwebrtc_udp_transport \
+	libwebrtc_utility \
+	libwebrtc_neteq \
+	libwebrtc_audio_conference_mixer \
+	libwebrtc_isac \
+	libwebrtc_ilbc \
+	libwebrtc_isacfix \
+	libwebrtc_g722 \
+	libwebrtc_g711 \
+	libwebrtc_vplib \
+	libwebrtc_video_render \
+	libwebrtc_video_capture \
+	libwebrtc_i420 \
+	libwebrtc_video_coding \
+	libwebrtc_video_processing \
+	libwebrtc_vp8 \
+	libwebrtc_video_mixer \
+	libwebrtc_voe_core \
+	libwebrtc_vie_core \
+	libwebrtc_vpx_enc \
+	libwebrtc_jpeg \
+	libvpx 
+
+#LOCAL_LDLIBS := -ljpeg
+
+LOCAL_STATIC_LIBRARIES := 	
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+	libdl \
+	libstlport \
+	libjpeg \
+	libGLESv2 \
+	libOpenSLES \
+	libwebrtc_audio_preprocessing
+
+LOCAL_ADDITIONAL_DEPENDENCIES :=
+
+include external/stlport/libstlport.mk
+include $(BUILD_SHARED_LIBRARY)
diff --git a/codereview.settings b/codereview.settings
new file mode 100644
index 0000000..c76fa46
--- /dev/null
+++ b/codereview.settings
@@ -0,0 +1,9 @@
+# This file is used by gcl to get repository specific information.

+CODE_REVIEW_SERVER: webrtc-codereview.appspot.com

+CC_LIST:

+VIEW_VC:

+STATUS: 

+TRY_ON_UPLOAD: False

+TRYSERVER_SVN_URL: 

+GITCL_PREUPLOAD: 

+GITCL_PREDCOMMIT: 

diff --git a/common_settings.gypi b/common_settings.gypi
new file mode 100644
index 0000000..dd1c8f0
--- /dev/null
+++ b/common_settings.gypi
@@ -0,0 +1,76 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# This file contains common settings for building WebRTC components.
+
+{
+  'variables': {
+    'build_with_chromium%': 0, # 1 to build webrtc with chromium
+    'inside_chromium_build%': 0,
+
+    # Selects fixed-point code where possible.
+    # TODO(ajm): we'd like to set this based on the target OS/architecture.
+    'prefer_fixed_point%': 0,
+
+    'conditions': [
+      ['inside_chromium_build==1', {
+        'build_with_chromium': 1,
+      }],
+      ['OS=="win"', {
+        # Path needed to build Direct Show base classes on Windows. The code is included in Windows SDK.
+        'direct_show_base_classes':'C:/Program Files/Microsoft SDKs/Windows/v7.1/Samples/multimedia/directshow/baseclasses/',
+      }],
+    ], # conditions
+  },
+  'target_defaults': {
+    'include_dirs': [
+      '.', # For common_typs.h and typedefs.h
+    ],
+    'conditions': [
+      ['OS=="linux"', {
+        'defines': [
+          'WEBRTC_TARGET_PC',
+          'WEBRTC_LINUX',
+          'WEBRTC_THREAD_RR',
+          # INTEL_OPT is for iLBC floating point code optimized for Intel processors
+          # supporting SSE3. The compiler will be automatically switched to Intel 
+          # compiler icc in the iLBC folder for iLBC floating point library build.
+          #'INTEL_OPT',
+          # Define WEBRTC_CLOCK_TYPE_REALTIME if the Linux system does not support CLOCK_MONOTONIC
+          #'WEBRTC_CLOCK_TYPE_REALTIME',
+        ],
+      }],
+      ['OS=="mac"', {
+        # Setup for Intel
+        'defines': [
+          'WEBRTC_TARGET_MAC_INTEL',
+          'WEBRTC_MAC_INTEL',
+          'WEBRTC_MAC',
+          'WEBRTC_THREAD_RR',
+          'WEBRTC_CLOCK_TYPE_REALTIME',
+        ],
+      }],
+      ['OS=="win"', {
+        'defines': [
+          'WEBRTC_TARGET_PC',
+         ],
+      }],
+      ['build_with_chromium==1', {
+        'defines': [
+          'WEBRTC_VIDEO_EXTERNAL_CAPTURE_AND_RENDER',
+        ],
+      }],
+    ], # conditions
+  }, # target-defaults
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/common_types.h b/common_types.h
new file mode 100644
index 0000000..f4f80db
--- /dev/null
+++ b/common_types.h
@@ -0,0 +1,595 @@
+/*
+ *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_COMMON_TYPES_H
+#define WEBRTC_COMMON_TYPES_H
+
+#include "typedefs.h"
+
+#ifdef WEBRTC_EXPORT
+    #define WEBRTC_DLLEXPORT _declspec(dllexport)
+#elif WEBRTC_DLL
+    #define WEBRTC_DLLEXPORT _declspec(dllimport)
+#else
+    #define WEBRTC_DLLEXPORT
+#endif
+
+#ifndef NULL
+    #define NULL 0
+#endif
+
+namespace webrtc {
+
+class InStream
+{
+public:
+    virtual int Read(void *buf,int len) = 0;
+    virtual int Rewind() {return -1;}
+    virtual ~InStream() {}
+protected:
+    InStream() {}
+};
+
+class OutStream
+{
+public:
+    virtual bool Write(const void *buf,int len) = 0;
+    virtual int Rewind() {return -1;}
+    virtual ~OutStream() {}
+protected:
+    OutStream() {}
+};
+
+enum TraceModule
+{
+    // not a module, triggered from the engine code
+    kTraceVoice              = 0x0001,
+    // not a module, triggered from the engine code
+    kTraceVideo              = 0x0002,
+    // not a module, triggered from the utility code
+    kTraceUtility            = 0x0003,
+    kTraceRtpRtcp            = 0x0004,
+    kTraceTransport          = 0x0005,
+    kTraceSrtp               = 0x0006,
+    kTraceAudioCoding        = 0x0007,
+    kTraceAudioMixerServer   = 0x0008,
+    kTraceAudioMixerClient   = 0x0009,
+    kTraceFile               = 0x000a,
+    kTraceVqe                = 0x000b,
+    kTraceVideoCoding        = 0x0010,
+    kTraceVideoMixer         = 0x0011,
+    kTraceAudioDevice        = 0x0012,
+    kTraceVideoRenderer      = 0x0014,
+    kTraceVideoCapture       = 0x0015,
+    kTraceVideoPreocessing   = 0x0016
+};
+
+enum TraceLevel
+{
+    kTraceNone               = 0x0000,    // no trace
+    kTraceStateInfo          = 0x0001,
+    kTraceWarning            = 0x0002,
+    kTraceError              = 0x0004,
+    kTraceCritical           = 0x0008,
+    kTraceApiCall            = 0x0010,
+    kTraceDefault            = 0x00ff,
+
+    kTraceModuleCall         = 0x0020,
+    kTraceMemory             = 0x0100,   // memory info
+    kTraceTimer              = 0x0200,   // timing info
+    kTraceStream             = 0x0400,   // "continuous" stream of data
+
+    // used for debug purposes
+    kTraceDebug              = 0x0800,  // debug
+    kTraceInfo               = 0x1000,  // debug info
+
+    kTraceAll                = 0xffff
+};
+
+// External Trace API
+class TraceCallback
+{
+public:
+    virtual void Print(const TraceLevel level,
+                       const char *traceString,
+                       const int length) = 0;
+protected:
+    virtual ~TraceCallback() {}
+    TraceCallback() {}
+};
+
+
+enum FileFormats
+{
+    kFileFormatWavFile        = 1,
+    kFileFormatCompressedFile = 2,
+    kFileFormatAviFile        = 3,
+    kFileFormatPreencodedFile = 4,
+    kFileFormatPcm16kHzFile   = 7,
+    kFileFormatPcm8kHzFile    = 8,
+    kFileFormatPcm32kHzFile   = 9
+};
+
+
+enum ProcessingTypes
+{
+    kPlaybackPerChannel = 0,
+    kPlaybackAllChannelsMixed,
+    kRecordingPerChannel,
+    kRecordingAllChannelsMixed
+};
+
+// Encryption enums
+enum CipherTypes
+{
+    kCipherNull               = 0,
+    kCipherAes128CounterMode  = 1
+};
+
+enum AuthenticationTypes
+{
+    kAuthNull       = 0,
+    kAuthHmacSha1   = 3
+};
+
+enum SecurityLevels
+{
+    kNoProtection                    = 0,
+    kEncryption                      = 1,
+    kAuthentication                  = 2,
+    kEncryptionAndAuthentication     = 3
+};
+
+class Encryption
+{
+public:
+    virtual void encrypt(
+        int channel_no,
+        unsigned char* in_data,
+        unsigned char* out_data,
+        int bytes_in,
+        int* bytes_out) = 0;
+
+    virtual void decrypt(
+        int channel_no,
+        unsigned char* in_data,
+        unsigned char* out_data,
+        int bytes_in,
+        int* bytes_out) = 0;
+
+    virtual void encrypt_rtcp(
+        int channel_no,
+        unsigned char* in_data,
+        unsigned char* out_data,
+        int bytes_in,
+        int* bytes_out) = 0;
+
+    virtual void decrypt_rtcp(
+        int channel_no,
+        unsigned char* in_data,
+        unsigned char* out_data,
+        int bytes_in,
+        int* bytes_out) = 0;
+
+protected:
+    virtual ~Encryption() {}
+    Encryption() {}
+};
+
+// External transport callback interface
+class Transport
+{
+public:
+    virtual int SendPacket(int channel, const void *data, int len) = 0;
+    virtual int SendRTCPPacket(int channel, const void *data, int len) = 0;
+
+protected:
+    virtual ~Transport() {}
+    Transport() {}
+};
+
+// ==================================================================
+// Voice specific types
+// ==================================================================
+
+// Each codec supported can be described by this structure.
+struct CodecInst
+{
+    int pltype;
+    char plname[32];
+    int plfreq;
+    int pacsize;
+    int channels;
+    int rate;
+};
+
+enum FrameType
+{
+    kFrameEmpty            = 0,
+    kAudioFrameSpeech      = 1,
+    kAudioFrameCN          = 2,
+    kVideoFrameKey         = 3,    // independent frame
+    kVideoFrameDelta       = 4,    // depends on the previus frame
+    kVideoFrameGolden      = 5,    // depends on a old known previus frame
+    kVideoFrameAltRef      = 6
+};
+
+// RTP
+enum {kRtpCsrcSize = 15}; // RFC 3550 page 13
+
+enum RTPDirections
+{
+    kRtpIncoming = 0,
+    kRtpOutgoing
+};
+
+enum PayloadFrequencies
+{
+    kFreq8000Hz = 8000,
+    kFreq16000Hz = 16000,
+    kFreq32000Hz = 32000
+};
+
+enum VadModes                 // degree of bandwidth reduction
+{
+    kVadConventional = 0,      // lowest reduction
+    kVadAggressiveLow,
+    kVadAggressiveMid,
+    kVadAggressiveHigh         // highest reduction
+};
+
+struct NetworkStatistics           // NETEQ statistics
+{
+    // current jitter buffer size in ms
+    WebRtc_UWord16 currentBufferSize;
+    // preferred (optimal) buffer size in ms
+    WebRtc_UWord16 preferredBufferSize;
+    // loss rate (network + late) in percent (in Q14)
+    WebRtc_UWord16 currentPacketLossRate;
+    // late loss rate in percent (in Q14)
+    WebRtc_UWord16 currentDiscardRate;
+    // fraction (of original stream) of synthesized speech inserted through
+    // expansion (in Q14)
+    WebRtc_UWord16 currentExpandRate;
+    // fraction of synthesized speech inserted through pre-emptive expansion
+    // (in Q14)
+    WebRtc_UWord16 currentPreemptiveRate;
+    // fraction of data removed through acceleration (in Q14)
+    WebRtc_UWord16 currentAccelerateRate;
+};
+
+struct JitterStatistics
+{
+    // smallest Jitter Buffer size during call in ms
+    WebRtc_UWord32 jbMinSize;
+    // largest Jitter Buffer size during call in ms
+    WebRtc_UWord32 jbMaxSize;
+    // the average JB size, measured over time - ms
+    WebRtc_UWord32 jbAvgSize;
+    // number of times the Jitter Buffer changed (using Accelerate or
+    // Pre-emptive Expand)
+    WebRtc_UWord32 jbChangeCount;
+    // amount (in ms) of audio data received late
+    WebRtc_UWord32 lateLossMs;
+    // milliseconds removed to reduce jitter buffer size
+    WebRtc_UWord32 accelerateMs;
+    // milliseconds discarded through buffer flushing
+    WebRtc_UWord32 flushedMs;
+    // milliseconds of generated silence
+    WebRtc_UWord32 generatedSilentMs;
+    // milliseconds of synthetic audio data (non-background noise)
+    WebRtc_UWord32 interpolatedVoiceMs;
+    // milliseconds of synthetic audio data (background noise level)
+    WebRtc_UWord32 interpolatedSilentMs;
+    // count of tiny expansions in output audio
+    WebRtc_UWord32 countExpandMoreThan120ms;
+    // count of small expansions in output audio
+    WebRtc_UWord32 countExpandMoreThan250ms;
+    // count of medium expansions in output audio
+    WebRtc_UWord32 countExpandMoreThan500ms;
+    // count of long expansions in output audio
+    WebRtc_UWord32 countExpandMoreThan2000ms;
+    // duration of longest audio drop-out
+    WebRtc_UWord32 longestExpandDurationMs;
+    // count of times we got small network outage (inter-arrival time in
+    // [500, 1000) ms)
+    WebRtc_UWord32 countIAT500ms;
+    // count of times we got medium network outage (inter-arrival time in
+    // [1000, 2000) ms)
+    WebRtc_UWord32 countIAT1000ms;
+    // count of times we got large network outage (inter-arrival time >=
+    // 2000 ms)
+    WebRtc_UWord32 countIAT2000ms;
+    // longest packet inter-arrival time in ms
+    WebRtc_UWord32 longestIATms;
+    // min time incoming Packet "waited" to be played
+    WebRtc_UWord32 minPacketDelayMs;
+    // max time incoming Packet "waited" to be played
+    WebRtc_UWord32 maxPacketDelayMs;
+    // avg time incoming Packet "waited" to be played
+    WebRtc_UWord32 avgPacketDelayMs;
+};
+
+typedef struct
+{
+    int min;              // minumum
+    int max;              // maximum
+    int average;          // average
+} StatVal;
+
+typedef struct           // All levels are reported in dBm0
+{
+    StatVal speech_rx;   // long-term speech levels on receiving side
+    StatVal speech_tx;   // long-term speech levels on transmitting side
+    StatVal noise_rx;    // long-term noise/silence levels on receiving side
+    StatVal noise_tx;    // long-term noise/silence levels on transmitting side
+} LevelStatistics;
+
+typedef struct        // All levels are reported in dB
+{
+    StatVal erl;      // Echo Return Loss
+    StatVal erle;     // Echo Return Loss Enhancement
+    StatVal rerl;     // RERL = ERL + ERLE
+    // Echo suppression inside EC at the point just before its NLP
+    StatVal a_nlp;
+} EchoStatistics;
+
+enum TelephoneEventDetectionMethods
+{
+    kInBand = 0,
+    kOutOfBand = 1,
+    kInAndOutOfBand = 2
+};
+
+enum NsModes    // type of Noise Suppression
+{
+    kNsUnchanged = 0,   // previously set mode
+    kNsDefault,         // platform default
+    kNsConference,      // conferencing default
+    kNsLowSuppression,  // lowest suppression
+    kNsModerateSuppression,
+    kNsHighSuppression,
+    kNsVeryHighSuppression,     // highest suppression
+};
+
+enum AgcModes                  // type of Automatic Gain Control
+{
+    kAgcUnchanged = 0,        // previously set mode
+    kAgcDefault,              // platform default
+    // adaptive mode for use when analog volume control exists (e.g. for
+    // PC softphone)
+    kAgcAdaptiveAnalog,
+    // scaling takes place in the digital domain (e.g. for conference servers
+    // and embedded devices)
+    kAgcAdaptiveDigital,
+    // can be used on embedded devices where the the capture signal is level
+    // is predictable
+    kAgcFixedDigital
+};
+
+// EC modes
+enum EcModes                   // type of Echo Control
+{
+    kEcUnchanged = 0,          // previously set mode
+    kEcDefault,                // platform default
+    kEcConference,             // conferencing default (aggressive AEC)
+    kEcAec,                    // Acoustic Echo Cancellation
+    kEcAecm,                   // AEC mobile
+};
+
+// AECM modes
+enum AecmModes                 // mode of AECM
+{
+    kAecmQuietEarpieceOrHeadset = 0,
+                               // Quiet earpiece or headset use
+    kAecmEarpiece,             // most earpiece use
+    kAecmLoudEarpiece,         // Loud earpiece or quiet speakerphone use
+    kAecmSpeakerphone,         // most speakerphone use (default)
+    kAecmLoudSpeakerphone      // Loud speakerphone
+};
+
+// AGC configuration
+typedef struct
+{
+    unsigned short targetLeveldBOv;
+    unsigned short digitalCompressionGaindB;
+    bool           limiterEnable;
+} AgcConfig;                  // AGC configuration parameters
+
+enum StereoChannel
+{
+    kStereoLeft = 0,
+    kStereoRight,
+    kStereoBoth
+};
+
+// Audio device layers
+enum AudioLayers
+{
+    kAudioPlatformDefault = 0,
+    kAudioWindowsWave = 1,
+    kAudioWindowsCore = 2,
+    kAudioLinuxAlsa = 3,
+    kAudioLinuxPulse = 4
+};
+
+enum NetEqModes             // NetEQ playout configurations
+{
+    // Optimized trade-off between low delay and jitter robustness for two-way
+    // communication.
+    kNetEqDefault = 0,
+    // Improved jitter robustness at the cost of increased delay. Can be
+    // used in one-way communication.
+    kNetEqStreaming = 1,
+    // Optimzed for decodability of fax signals rather than for perceived audio
+    // quality.
+    kNetEqFax = 2,
+};
+
+enum NetEqBgnModes          // NetEQ Background Noise (BGN) configurations
+{
+    // BGN is always on and will be generated when the incoming RTP stream
+    // stops (default).
+    kBgnOn = 0,
+    // The BGN is faded to zero (complete silence) after a few seconds.
+    kBgnFade = 1,
+    // BGN is not used at all. Silence is produced after speech extrapolation
+    // has faded.
+    kBgnOff = 2,
+};
+
+enum OnHoldModes            // On Hold direction
+{
+    kHoldSendAndPlay = 0,    // Put both sending and playing in on-hold state.
+    kHoldSendOnly,           // Put only sending in on-hold state.
+    kHoldPlayOnly            // Put only playing in on-hold state.
+};
+
+enum AmrMode
+{
+    kRfc3267BwEfficient = 0,
+    kRfc3267OctetAligned = 1,
+    kRfc3267FileStorage = 2,
+};
+
+// ==================================================================
+// Video specific types
+// ==================================================================
+
+// Raw video types
+enum RawVideoType
+{
+    kVideoI420     = 0,
+    kVideoYV12     = 1,
+    kVideoYUY2     = 2,
+    kVideoUYVY     = 3,
+    kVideoIYUV     = 4,
+    kVideoARGB     = 5,
+    kVideoRGB24    = 6,
+    kVideoRGB565   = 7,
+    kVideoARGB4444 = 8,
+    kVideoARGB1555 = 9,
+    kVideoMJPEG    = 10,
+    kVideoNV12     = 11,
+    kVideoNV21     = 12,
+    kVideoUnknown  = 99
+};
+
+// Video codec
+enum { kConfigParameterSize = 128};
+enum { kPayloadNameSize = 32};
+
+// H.263 specific
+struct VideoCodecH263
+{
+    char quality;
+};
+
+// H.264 specific
+enum H264Packetization
+{
+    kH264SingleMode         = 0,
+    kH264NonInterleavedMode = 1
+};
+
+enum VideoCodecComplexity
+{
+    kComplexityNormal = 0,
+    kComplexityHigh    = 1,
+    kComplexityHigher  = 2,
+    kComplexityMax     = 3
+};
+
+enum VideoCodecProfile
+{
+    kProfileBase = 0x00,
+    kProfileMain = 0x01
+};
+
+struct VideoCodecH264
+{
+    H264Packetization          packetization;
+    VideoCodecComplexity       complexity;
+    VideoCodecProfile          profile;
+    char                       level;
+    char                       quality;
+
+    bool                       useFMO;
+
+    unsigned char              configParameters[kConfigParameterSize];
+    unsigned char              configParametersSize;
+};
+
+// VP8 specific
+struct VideoCodecVP8
+{
+    bool                       pictureLossIndicationOn;
+    bool                       feedbackModeOn;
+    VideoCodecComplexity       complexity;
+};
+
+// MPEG-4 specific
+struct VideoCodecMPEG4
+{
+    unsigned char   configParameters[kConfigParameterSize];
+    unsigned char   configParametersSize;
+    char            level;
+};
+
+// Unknown specific
+struct VideoCodecGeneric
+{
+};
+
+// Video codec types
+enum VideoCodecType
+{
+    kVideoCodecH263,
+    kVideoCodecH264,
+    kVideoCodecVP8,
+    kVideoCodecMPEG4,
+    kVideoCodecI420,
+    kVideoCodecRED,
+    kVideoCodecULPFEC,
+    kVideoCodecUnknown
+};
+
+union VideoCodecUnion
+{
+    VideoCodecH263      H263;
+    VideoCodecH264      H264;
+    VideoCodecVP8       VP8;
+    VideoCodecMPEG4     MPEG4;
+    VideoCodecGeneric   Generic;
+};
+
+// Common video codec properties
+struct VideoCodec
+{
+    VideoCodecType      codecType;
+    char                plName[kPayloadNameSize];
+    unsigned char       plType;
+
+    unsigned short      width;
+    unsigned short      height;
+
+    unsigned int        startBitrate;
+    unsigned int        maxBitrate;
+    unsigned int        minBitrate;
+    unsigned char       maxFramerate;
+
+    VideoCodecUnion     codecSpecific;
+
+    unsigned int        qpMax;
+};
+
+}  // namespace webrtc
+
+#endif  // WEBRTC_COMMON_TYPES_H
diff --git a/engine_configurations.h b/engine_configurations.h
new file mode 100644
index 0000000..c24e3d2
--- /dev/null
+++ b/engine_configurations.h
@@ -0,0 +1,131 @@
+/*
+ *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_ENGINE_CONFIGURATIONS_H_
+#define WEBRTC_ENGINE_CONFIGURATIONS_H_
+
+// ============================================================================
+//                              Voice and Video
+// ============================================================================
+
+// #define WEBRTC_EXTERNAL_TRANSPORT
+
+// ----------------------------------------------------------------------------
+//  [Voice] Codec settings
+// ----------------------------------------------------------------------------
+
+#define WEBRTC_CODEC_ILBC
+#define WEBRTC_CODEC_ISAC       // floating-point iSAC implementation (default)
+// #define WEBRTC_CODEC_ISACFX  // fix-point iSAC implementation
+#define WEBRTC_CODEC_G722
+#define WEBRTC_CODEC_PCM16
+#define WEBRTC_CODEC_RED
+#define WEBRTC_CODEC_AVT
+
+// ----------------------------------------------------------------------------
+//  [Video] Codec settings
+// ----------------------------------------------------------------------------
+
+#define VIDEOCODEC_I420
+#define VIDEOCODEC_VP8
+
+// ============================================================================
+//                                 VoiceEngine
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+//  Settings for VoiceEngine
+// ----------------------------------------------------------------------------
+
+#define WEBRTC_VOICE_ENGINE_AGC                 // Near-end AGC
+#define WEBRTC_VOICE_ENGINE_ECHO                // Near-end AEC
+#define WEBRTC_VOICE_ENGINE_NR                  // Near-end NS
+#define WEBRTC_VOICE_ENGINE_TYPING_DETECTION
+#define WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
+
+// ----------------------------------------------------------------------------
+//  VoiceEngine sub-APIs
+// ----------------------------------------------------------------------------
+
+#define WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
+#define WEBRTC_VOICE_ENGINE_CALL_REPORT_API
+#define WEBRTC_VOICE_ENGINE_CODEC_API
+#define WEBRTC_VOICE_ENGINE_DTMF_API
+#define WEBRTC_VOICE_ENGINE_ENCRYPTION_API
+#define WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
+#define WEBRTC_VOICE_ENGINE_FILE_API
+#define WEBRTC_VOICE_ENGINE_HARDWARE_API
+#define WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
+#define WEBRTC_VOICE_ENGINE_NETWORK_API
+#define WEBRTC_VOICE_ENGINE_RTP_RTCP_API
+#define WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
+#define WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
+
+// ============================================================================
+//                                 VideoEngine
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+//  Settings for special VideoEngine configurations
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+//  VideoEngine sub-API:s
+// ----------------------------------------------------------------------------
+
+#define WEBRTC_VIDEO_ENGINE_CAPTURE_API
+#define WEBRTC_VIDEO_ENGINE_CODEC_API
+#define WEBRTC_VIDEO_ENGINE_ENCRYPTION_API
+#define WEBRTC_VIDEO_ENGINE_FILE_API
+#define WEBRTC_VIDEO_ENGINE_IMAGE_PROCESS_API
+#define WEBRTC_VIDEO_ENGINE_NETWORK_API
+#define WEBRTC_VIDEO_ENGINE_RENDER_API
+#define WEBRTC_VIDEO_ENGINE_RTP_RTCP_API
+// #define WEBRTC_VIDEO_ENGINE_EXTERNAL_CODEC_API
+
+// ============================================================================
+//                       Platform specific configurations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+//  VideoEngine Windows
+// ----------------------------------------------------------------------------
+
+#if defined(_WIN32)
+	// #define DIRECTDRAW_RENDERING
+	#define DIRECT3D9_RENDERING  // Requires DirectX 9.
+#endif 
+
+// ----------------------------------------------------------------------------
+//  VideoEngine MAC
+// ----------------------------------------------------------------------------
+
+#if defined(WEBRTC_MAC) && !defined(MAC_IPHONE)
+	// #define CARBON_RENDERING
+	#define COCOA_RENDERING
+#endif
+
+// ----------------------------------------------------------------------------
+//  VideoEngine Mobile iPhone
+// ----------------------------------------------------------------------------
+
+#if defined(MAC_IPHONE)
+    #define EAGL_RENDERING
+#endif
+
+// ----------------------------------------------------------------------------
+//  Deprecated
+// ----------------------------------------------------------------------------
+
+// #define WEBRTC_CODEC_G729
+// #define WEBRTC_DTMF_DETECTION
+// #define WEBRTC_SRTP
+// #define WEBRTC_SRTP_ALLOW_ROC_ITERATION
+
+#endif  // WEBRTC_ENGINE_CONFIGURATIONS_H_
diff --git a/gyp_gips b/gyp_gips
new file mode 100644
index 0000000..824d7c1
--- /dev/null
+++ b/gyp_gips
@@ -0,0 +1,129 @@
+#!/usr/bin/python

+

+# Copyright (c) 2009 The Chromium Authors. All rights reserved.

+# Use of this source code is governed by a BSD-style license that can be

+# found in the LICENSE file.

+

+# This script is wrapper for Chromium that adds some support for how GYP

+# is invoked by Chromium beyond what can be done in the gclient hooks.

+

+import glob

+import os

+import shlex

+import sys

+

+script_dir = os.path.dirname(__file__)

+chrome_src = '../..';#os.path.normpath(os.path.join(script_dir, os.pardir))

+

+sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib'))

+import gyp

+

+def apply_gyp_environment(file_path=None):

+  """

+  Reads in a *.gyp_env file and applies the valid keys to os.environ.

+  """

+  if not file_path or not os.path.exists(file_path):

+    return

+  file_contents = open(file_path).read()

+  try:

+    file_data = eval(file_contents, {'__builtins__': None}, None)

+  except SyntaxError, e:

+    e.filename = os.path.abspath(file_path)

+    raise

+  supported_vars = ( 'CHROMIUM_GYP_FILE',

+                     'CHROMIUM_GYP_SYNTAX_CHECK',

+                     'GYP_DEFINES',

+                     'GYP_GENERATOR_FLAGS',

+                     'GYP_GENERATOR_OUTPUT', )

+  for var in supported_vars:

+    val = file_data.get(var)

+    if val:

+      if var in os.environ:

+        print 'INFO: Environment value for "%s" overrides value in %s.' % (

+            var, os.path.abspath(file_path)

+        )

+      else:

+        os.environ[var] = val

+

+def additional_include_files(args=[]):

+  """

+  Returns a list of additional (.gypi) files to include, without

+  duplicating ones that are already specified on the command line.

+  """

+  # Determine the include files specified on the command line.

+  # This doesn't cover all the different option formats you can use,

+  # but it's mainly intended to avoid duplicating flags on the automatic

+  # makefile regeneration which only uses this format.

+  specified_includes = set()

+  for arg in args:

+    if arg.startswith('-I') and len(arg) > 2:

+      specified_includes.add(os.path.realpath(arg[2:]))

+

+  result = []

+  def AddInclude(path):

+    if os.path.realpath(path) not in specified_includes:

+      result.append(path)

+

+  # Always include common.gypi & features_override.gypi

+  AddInclude(os.path.join(script_dir, '../../build/common.gypi'))

+  AddInclude(os.path.join(script_dir, '../../build/features_override.gypi'))

+

+  # Optionally add supplemental .gypi files if present.

+  supplements = glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi'))

+  for supplement in supplements:

+    AddInclude(supplement)

+

+  return result

+

+if __name__ == '__main__':

+  args = sys.argv[1:]

+

+  if 'SKIP_CHROMIUM_GYP_ENV' not in os.environ:

+    # Update the environment based on chromium.gyp_env

+    gyp_env_path = os.path.join(os.path.dirname(chrome_src), 'chromium.gyp_env')

+    apply_gyp_environment(gyp_env_path)

+

+  # This could give false positives since it doesn't actually do real option

+  # parsing.  Oh well.

+  gyp_file_specified = False

+  for arg in args:

+    if arg.endswith('.gyp'):

+      gyp_file_specified = True

+      break

+

+  # If we didn't get a file, check an env var, and then fall back to

+  # assuming 'all.gyp' from the same directory as the script.

+  if not gyp_file_specified:

+    gyp_file = os.environ.get('CHROMIUM_GYP_FILE')

+    if gyp_file:

+      # Note that CHROMIUM_GYP_FILE values can't have backslashes as

+      # path separators even on Windows due to the use of shlex.split().

+      args.extend(shlex.split(gyp_file))

+    else:

+      args.append(os.path.join(script_dir, 'video_engine.gyp'))

+

+  args.extend(['-I' + i for i in additional_include_files(args)])

+

+  # There shouldn't be a circular dependency relationship between .gyp files,

+  # but in Chromium's .gyp files, on non-Mac platforms, circular relationships

+  # currently exist.  The check for circular dependencies is currently

+  # bypassed on other platforms, but is left enabled on the Mac, where a

+  # violation of the rule causes Xcode to misbehave badly.

+  # TODO(mark): Find and kill remaining circular dependencies, and remove this

+  # option.  http://crbug.com/35878.

+  # TODO(tc): Fix circular dependencies in ChromiumOS then add linux2 to the

+  # list.

+  if sys.platform not in ('darwin',):

+    args.append('--no-circular-check')

+

+  # If CHROMIUM_GYP_SYNTAX_CHECK is set to 1, it will invoke gyp with --check

+  # to enfore syntax checking.

+  syntax_check = os.environ.get('CHROMIUM_GYP_SYNTAX_CHECK')

+  if syntax_check and int(syntax_check):

+    args.append('--check')

+

+  print 'Updating projects from gyp files...'

+  sys.stdout.flush()

+

+  # Off we go...

+  sys.exit(gyp.main(args))

diff --git a/libvpx.mk b/libvpx.mk
new file mode 100644
index 0000000..792c70a
--- /dev/null
+++ b/libvpx.mk
@@ -0,0 +1,132 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+MY_LIBVPX_DEC_SRC = \
+     vpx/src/vpx_codec.c \
+     vpx/src/vpx_decoder.c \
+     vpx/src/vpx_image.c \
+     vpx_mem/vpx_mem.c \
+     vpx_scale/generic/vpxscale.c \
+     vpx_scale/generic/yv12config.c \
+     vpx_scale/generic/yv12extend.c \
+     vpx_scale/generic/gen_scalers.c \
+     vpx_scale/generic/scalesystemdependant.c \
+     vp8/common/alloccommon.c \
+     vp8/common/blockd.c \
+     vp8/common/debugmodes.c \
+     vp8/common/entropy.c \
+     vp8/common/entropymode.c \
+     vp8/common/entropymv.c \
+     vp8/common/extend.c \
+     vp8/common/filter.c \
+     vp8/common/findnearmv.c \
+     vp8/common/generic/systemdependent.c \
+     vp8/common/idctllm.c \
+     vp8/common/invtrans.c \
+     vp8/common/loopfilter.c \
+     vp8/common/loopfilter_filters.c \
+     vp8/common/mbpitch.c \
+     vp8/common/modecont.c \
+     vp8/common/modecontext.c \
+     vp8/common/quant_common.c \
+     vp8/common/recon.c \
+     vp8/common/reconinter.c \
+     vp8/common/reconintra.c \
+     vp8/common/reconintra4x4.c \
+     vp8/common/setupintrarecon.c \
+     vp8/common/swapyv12buffer.c \
+     vp8/common/textblit.c \
+     vp8/common/treecoder.c \
+     vp8/vp8_cx_iface.c \
+     vp8/vp8_dx_iface.c \
+     vp8/decoder/generic/dsystemdependent.c \
+     vp8/decoder/dboolhuff.c \
+     vp8/decoder/decodemv.c \
+     vp8/decoder/decodframe.c \
+     vp8/decoder/dequantize.c \
+     vp8/decoder/detokenize.c \
+     vp8/decoder/onyxd_if.c \
+     vp8/decoder/reconintra_mt.c \
+     vp8/decoder/threading.c \
+     vpx_config.c \
+     vp8/decoder/idct_blk.c 
+
+MY_LIBVPX_ENC_PATH = ../libvpx
+
+LOCAL_SRC_FILES = \
+     $(MY_LIBVPX_ENC_PATH)/vpx/src/vpx_encoder.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/bitstream.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/boolhuff.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/dct.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/encodeframe.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/encodeintra.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/encodemb.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/encodemv.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/ethreading.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/firstpass.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/arm/arm_csystemdependent.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/mcomp.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/modecosts.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/pickinter.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/picklpf.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/psnr.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/quantize.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/ratectrl.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/rdopt.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/sad_c.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/segmentation.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/tokenize.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/treewriter.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/onyx_if.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/temporal_filter.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/arm/variance_arm.c \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/arm/variance_arm.h \
+     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/variance_c.c 
+
+#     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/generic/csystemdependent.c 
+#     $(MY_LIBVPX_ENC_PATH)/vp8/encoder/variance_c.c 
+#     $(MY_LIBVPX_ENC_PATH)/vp8/decoder/idct_blk.c \
+#     md5_utils.c 
+#     args.c \
+#     tools_common.c \
+#     nestegg/halloc/src/halloc.c \
+#     nestegg/src/nestegg.c \
+#     vpxdec.c \
+#     y4minput.c \
+#     libmkv/EbmlWriter.c \
+#     vpxenc.c \
+#     simple_decoder.c \
+#     postproc.c \
+#     decode_to_md5.c \
+#     simple_encoder.c \
+#     twopass_encoder.c \
+#     force_keyframe.c \
+#     decode_with_drops.c \
+#     error_resilient.c \
+#     vp8_scalable_patterns.c \
+#     vp8_set_maps.c \
+#     vp8cx_set_ref.c 
+
+LOCAL_CFLAGS := \
+	-DHAVE_CONFIG_H=vpx_config.h \
+	-include $(LOCAL_PATH)/third_party_mods/libvpx/source/config/android/vpx_config.h
+
+LOCAL_MODULE := libwebrtc_vpx_enc
+
+LOCAL_C_INCLUDES := \
+    external/libvpx \
+    external/libvpx/vpx_ports \
+    external/libvpx/vp8/common \
+    external/libvpx/vp8/encoder \
+    external/libvpx/vp8 \
+    external/libvpx/vpx_codec 
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/license_template.txt b/license_template.txt
new file mode 100644
index 0000000..5a3e653
--- /dev/null
+++ b/license_template.txt
@@ -0,0 +1,10 @@
+/*
+ *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
diff --git a/typedefs.h b/typedefs.h
new file mode 100644
index 0000000..ae71690
--- /dev/null
+++ b/typedefs.h
@@ -0,0 +1,107 @@
+/*
+ *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+/*
+ *
+ * This file contains type definitions used in all WebRtc APIs.
+ * 
+ */
+
+/* Reserved words definitions */
+#define WEBRTC_EXTERN extern
+#define G_CONST const
+#define WEBRTC_INLINE extern __inline
+
+#ifndef WEBRTC_TYPEDEFS_H
+#define WEBRTC_TYPEDEFS_H
+
+/* Define WebRtc preprocessor identifiers based on the current build platform */
+#if defined(WIN32)
+    // Windows & Windows Mobile
+    #if !defined(WEBRTC_TARGET_PC)
+        #define WEBRTC_TARGET_PC
+    #endif
+#elif defined(__APPLE__)
+    // Mac OS X
+    #if defined(__LITTLE_ENDIAN__ ) //TODO: is this used?
+        #if !defined(WEBRTC_TARGET_MAC_INTEL)
+            #define WEBRTC_TARGET_MAC_INTEL
+        #endif  
+    #else
+        #if !defined(WEBRTC_TARGET_MAC)
+            #define WEBRTC_TARGET_MAC
+        #endif  
+    #endif
+#else
+    // Linux etc.
+    #if !defined(WEBRTC_TARGET_PC)
+        #define WEBRTC_TARGET_PC
+    #endif
+#endif
+
+#if defined(WEBRTC_TARGET_PC)
+
+#if !defined(_MSC_VER)
+  #include <stdint.h>
+#else
+    // Define C99 equivalent types.
+    // Since MSVC doesn't include these headers, we have to write our own
+    // version to provide a compatibility layer between MSVC and the WebRTC
+    // headers.
+    typedef signed char         int8_t;
+    typedef signed short        int16_t;
+    typedef signed int          int32_t;
+    typedef signed long long    int64_t;
+    typedef unsigned char       uint8_t;
+    typedef unsigned short      uint16_t;
+    typedef unsigned int        uint32_t;
+    typedef unsigned long long  uint64_t;
+#endif
+
+#if defined(WIN32)
+    typedef __int64             WebRtc_Word64;
+    typedef unsigned __int64    WebRtc_UWord64;
+#else
+    typedef int64_t             WebRtc_Word64;
+    typedef uint64_t            WebRtc_UWord64;
+#endif
+    typedef int32_t             WebRtc_Word32;
+    typedef uint32_t            WebRtc_UWord32;
+    typedef int16_t             WebRtc_Word16;
+    typedef uint16_t            WebRtc_UWord16;
+    typedef char                WebRtc_Word8;
+    typedef uint8_t             WebRtc_UWord8;
+
+    /* Define endian for the platform */
+    #define WEBRTC_LITTLE_ENDIAN
+
+#elif defined(WEBRTC_TARGET_MAC_INTEL)
+    #include <stdint.h>
+
+    typedef int64_t             WebRtc_Word64;
+    typedef uint64_t            WebRtc_UWord64;
+    typedef int32_t             WebRtc_Word32;
+    typedef uint32_t            WebRtc_UWord32;
+    typedef int16_t             WebRtc_Word16;
+    typedef char                WebRtc_Word8;
+    typedef uint16_t            WebRtc_UWord16;
+    typedef uint8_t             WebRtc_UWord8;
+
+    /* Define endian for the platform */
+    #define WEBRTC_LITTLE_ENDIAN
+
+#else
+
+    #error "No platform defined for WebRtc type definitions (webrtc_typedefs.h)"
+
+#endif
+
+
+#endif // WEBRTC_TYPEDEFS_H
diff --git a/video_engine.gyp b/video_engine.gyp
new file mode 100644
index 0000000..28131f0
--- /dev/null
+++ b/video_engine.gyp
@@ -0,0 +1,17 @@
+# Copyright (c) 2009 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+  'includes': [
+    'common_settings.gypi', # Common settings
+    # Defines target vie_auto_test
+    'video_engine/main/test/AutoTest/vie_auto_test.gypi',
+  ],
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/voice_engine.gyp b/voice_engine.gyp
new file mode 100644
index 0000000..de51350
--- /dev/null
+++ b/voice_engine.gyp
@@ -0,0 +1,185 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+{
+  'includes': [
+    'common_settings.gypi',
+  ],
+  'targets': [
+    # Auto test - command line test for all platforms
+    {
+      'target_name': 'voe_auto_test',
+      'type': 'executable',
+      'dependencies': [
+        'voice_engine/main/source/voice_engine_core.gyp:voice_engine_core',
+        'system_wrappers/source/system_wrappers.gyp:system_wrappers',
+      ],
+      'include_dirs': [
+        'voice_engine/main/test/auto_test',
+      ],
+      'sources': [
+        'voice_engine/main/test/auto_test/voe_cpu_test.cc',
+        'voice_engine/main/test/auto_test/voe_cpu_test.h',
+        'voice_engine/main/test/auto_test/voe_extended_test.cc',
+        'voice_engine/main/test/auto_test/voe_extended_test.h',
+        'voice_engine/main/test/auto_test/voe_standard_test.cc',
+        'voice_engine/main/test/auto_test/voe_standard_test.h',
+        'voice_engine/main/test/auto_test/voe_stress_test.cc',
+        'voice_engine/main/test/auto_test/voe_stress_test.h',
+        'voice_engine/main/test/auto_test/voe_test_defines.h',
+        'voice_engine/main/test/auto_test/voe_test_interface.h',
+        'voice_engine/main/test/auto_test/voe_unit_test.cc',
+        'voice_engine/main/test/auto_test/voe_unit_test.h',
+      ],
+      'conditions': [
+        ['OS=="linux" or OS=="mac"', {
+          'actions': [
+            {
+              'action_name': 'copy audio file',
+              'inputs': [
+                'voice_engine/main/test/auto_test/audio_long16.pcm',
+              ],
+              'outputs': [
+                '/tmp/audio_long16.pcm',
+              ],
+              'action': [
+                '/bin/sh', '-c',
+                'cp -f voice_engine/main/test/auto_test/audio_* /tmp/;'\
+                'cp -f voice_engine/main/test/auto_test/audio_short16.pcm /tmp/;',
+              ],
+            },
+          ],
+        }],
+        ['OS=="win"', {
+          'dependencies': [
+            'voice_engine.gyp:voe_ui_win_test',
+          ],
+        }],
+        ['OS=="win"', { 
+          'actions': [
+            {
+              'action_name': 'copy audio file',
+              'inputs': [
+                'voice_engine/main/test/auto_test/audio_long16.pcm',
+              ],
+              'outputs': [
+                '/tmp/audio_long16.pcm',
+              ],
+              'action': [
+                'cmd', '/c',
+                'xcopy /Y /R .\\voice_engine\\main\\test\\auto_test\\audio_* \\tmp',
+              ],
+            },
+            {
+              'action_name': 'copy audio audio_short16.pcm',
+              'inputs': [
+                'voice_engine/main/test/auto_test/audio_short16.pcm',
+              ],
+              'outputs': [
+                '/tmp/audio_short16.pcm',
+              ],
+              'action': [
+                'cmd', '/c',    
+                'xcopy /Y /R .\\voice_engine\\main\\test\\auto_test\\audio_short16.pcm \\tmp',
+              ],
+            },
+          ],
+        }],
+      ],
+    },
+  ],
+  'conditions': [
+    ['OS=="win"', {
+      'targets': [
+        # WinTest - GUI test for Windows
+        {
+          'target_name': 'voe_ui_win_test',
+          'type': 'executable',
+          'dependencies': [
+            'voice_engine/main/source/voice_engine_core.gyp:voice_engine_core',
+            'system_wrappers/source/system_wrappers.gyp:system_wrappers',
+          ],
+          'include_dirs': [
+            'voice_engine/main/test/win_test',
+          ],
+          'sources': [
+            'voice_engine/main/test/win_test/Resource.h',
+            'voice_engine/main/test/win_test/WinTest.cpp',
+            'voice_engine/main/test/win_test/WinTest.h',
+            'voice_engine/main/test/win_test/WinTest.rc',
+            'voice_engine/main/test/win_test/WinTestDlg.cpp',
+            'voice_engine/main/test/win_test/WinTestDlg.h',
+            'voice_engine/main/test/win_test/res/WinTest.ico',
+            'voice_engine/main/test/win_test/res/WinTest.rc2',
+            'voice_engine/main/test/win_test/stdafx.cpp',
+            'voice_engine/main/test/win_test/stdafx.h',
+          ],
+          'actions': [
+            {
+              'action_name': 'copy audio file',
+              'inputs': [
+                'voice_engine/main/test/win_test/audio_tiny11.wav',
+              ],
+              'outputs': [
+                '/tmp/audio_tiny11.wav',
+              ],
+              'action': [
+                'cmd', '/c',
+                'xcopy /Y /R .\\voice_engine\\main\\test\\win_test\\audio_* \\tmp',
+              ],
+            },
+            {
+              'action_name': 'copy audio audio_short16.pcm',
+              'inputs': [
+                'voice_engine/main/test/win_test/audio_short16.pcm',
+              ],
+              'outputs': [
+                '/tmp/audio_short16.pcm',
+              ],
+              'action': [
+                'cmd', '/c',    
+                'xcopy /Y /R .\\voice_engine\\main\\test\\win_test\\audio_short16.pcm \\tmp',
+              ],
+            },
+            {
+              'action_name': 'copy audio_long16noise.pcm',
+              'inputs': [
+                'voice_engine/main/test/win_test/saudio_long16noise.pcm',
+              ],
+              'outputs': [
+                '/tmp/audio_long16noise.pcm',
+              ],
+              'action': [
+                'cmd', '/c',    
+                'xcopy /Y /R .\\voice_engine\\main\\test\\win_test\\audio_long16noise.pcm \\tmp',
+              ],
+            },
+          ],
+          'configurations': {
+            'Common_Base': {
+              'msvs_configuration_attributes': {
+                'UseOfMFC': '1',  # Static
+              },
+            },
+          },
+          'msvs_settings': {
+            'VCLinkerTool': {
+              'SubSystem': '2',   # Windows
+            },
+          },
+        },
+      ],
+    }],
+  ],
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/webrtc.gyp b/webrtc.gyp
new file mode 100644
index 0000000..2605465
--- /dev/null
+++ b/webrtc.gyp
@@ -0,0 +1,72 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+{
+  'includes': [
+    'common_settings.gypi', # Common settings
+  ],
+ 'targets': [
+    {
+      'target_name': 'auto_tests',
+      'type': 'none',
+      'dependencies': [
+        'voice_engine.gyp:voe_auto_test',
+        'video_engine.gyp:vie_auto_test',
+      ],
+    },
+
+    {
+      'target_name': 'peerconnection_client',
+      'conditions': [
+        ['OS=="win"', {
+          'type': 'executable',
+          'sources': [
+            'peerconnection/samples/client/conductor.cc',
+            'peerconnection/samples/client/conductor.h',
+            'peerconnection/samples/client/defaults.cc',
+            'peerconnection/samples/client/defaults.h',
+            'peerconnection/samples/client/main.cc',
+            'peerconnection/samples/client/main_wnd.cc',
+            'peerconnection/samples/client/main_wnd.h',
+            'peerconnection/samples/client/peer_connection_client.cc',
+            'peerconnection/samples/client/peer_connection_client.h',
+            '../third_party/libjingle/source/talk/base/win32socketinit.cc',
+            '../third_party/libjingle/source/talk/base/win32socketserver.cc',
+          ],
+          'msvs_settings': {
+            'VCLinkerTool': {
+             'SubSystem': '2',   # Windows
+            },
+          },
+        }, {
+          'type': 'none',
+        }],
+      ],  # conditions
+      'dependencies': [
+        '../third_party/libjingle/libjingle.gyp:libjingle_app',
+      ],
+      'include_dirs': [
+        '../third_party/libjingle/source',
+      ],
+    },
+    
+    {
+      'target_name': 'peerconnection_server',
+      'type': 'executable',
+      'sources': [
+        'peerconnection/samples/server/data_socket.cc',
+        'peerconnection/samples/server/data_socket.h',
+        'peerconnection/samples/server/main.cc',
+        'peerconnection/samples/server/peer_channel.cc',
+        'peerconnection/samples/server/peer_channel.h',
+        'peerconnection/samples/server/utils.cc',
+        'peerconnection/samples/server/utils.h',
+      ],
+    },
+  ],
+}