git-svn-id: http://webrtc.googlecode.com/svn/trunk@11 4adac7df-926f-26a2-2b94-8c16560cd09d

This commit is contained in:
niklase@google.com 2011-05-30 11:51:34 +00:00
parent 9faef7dbd4
commit da159d6be6
19 changed files with 1730 additions and 0 deletions

4
AUTHORS Normal file
View File

@ -0,0 +1,4 @@
# Names should be added to this file like so:
# Name or Organization <email address>
Google Inc.

60
Android.mk Normal file
View File

@ -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

29
LICENSE Normal file
View File

@ -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.

10
LICENSE_THIRD_PARTY Normal file
View File

@ -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

1
OWNERS Normal file
View File

@ -0,0 +1 @@
*

28
PATENTS Normal file
View File

@ -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.

35
PRESUBMIT.py Normal file
View File

@ -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

100
android-webrtc.mk Normal file
View File

@ -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)

9
codereview.settings Normal file
View File

@ -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:

76
common_settings.gypi Normal file
View File

@ -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:

595
common_types.h Normal file
View File

@ -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

131
engine_configurations.h Normal file
View File

@ -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_

129
gyp_gips Normal file
View File

@ -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))

132
libvpx.mk Normal file
View File

@ -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)

10
license_template.txt Normal file
View File

@ -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.
*/

107
typedefs.h Normal file
View File

@ -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

17
video_engine.gyp Normal file
View File

@ -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:

185
voice_engine.gyp Normal file
View File

@ -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:

72
webrtc.gyp Normal file
View File

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