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',
+ ],
+ },
+ ],
+}