Added WebRTC library
This commit is contained in:
parent
97f172282d
commit
aec3dbae01
|
@ -1,7 +1,11 @@
|
||||||
# Excluding 80MB worth of voice information
|
# Excluding 80MB worth of voice information
|
||||||
/flite-1.4/lang/cmu_time_awb
|
/flite-*/lang/cmu_time_awb
|
||||||
/flite-1.4/lang/cmu_us_awb
|
/flite-*/lang/cmu_us_awb
|
||||||
/flite-1.4/lang/cmu_us_kal
|
/flite-*/lang/cmu_us_kal
|
||||||
/flite-1.4/lang/cmu_us_kal16
|
/flite-*/lang/cmu_us_kal16
|
||||||
/flite-1.4/lang/cmu_us_rms
|
/flite-*/lang/cmu_us_rms
|
||||||
/flite-1.4/lang/cmu_us_slt
|
/flite-*/lang/cmu_us_slt
|
||||||
|
|
||||||
|
# Excluding 45MB of superfluous data
|
||||||
|
/webrtc-*/webrtc/modules
|
||||||
|
/webrtc-*/data
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Defines the Chromium style for automatic reformatting.
|
||||||
|
# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
|
||||||
|
BasedOnStyle: Chromium
|
|
@ -0,0 +1,158 @@
|
||||||
|
*.DS_Store
|
||||||
|
*.Makefile
|
||||||
|
*.host.mk
|
||||||
|
*.ncb
|
||||||
|
*.ninja
|
||||||
|
*.props
|
||||||
|
*.pyc
|
||||||
|
*.rules
|
||||||
|
*.scons
|
||||||
|
*.sdf
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.target.mk
|
||||||
|
*.targets
|
||||||
|
*.user
|
||||||
|
*.vcproj
|
||||||
|
*.vcxproj
|
||||||
|
*.vcxproj.filters
|
||||||
|
*.vpj
|
||||||
|
*.vpw
|
||||||
|
*.vpwhistu
|
||||||
|
*.vtg
|
||||||
|
*.xcodeproj
|
||||||
|
*.xcworkspace
|
||||||
|
*_proto.xml
|
||||||
|
*_proto_cpp.xml
|
||||||
|
*~
|
||||||
|
.*.sw?
|
||||||
|
.classpath
|
||||||
|
.cproject
|
||||||
|
.gdb_history
|
||||||
|
.gdbinit
|
||||||
|
.landmines
|
||||||
|
.metadata
|
||||||
|
.project
|
||||||
|
.pydevproject
|
||||||
|
.settings
|
||||||
|
.sw?
|
||||||
|
/Makefile
|
||||||
|
/base
|
||||||
|
/build
|
||||||
|
/buildtools
|
||||||
|
/chromium/.gclient.tmp
|
||||||
|
/chromium/.gclient.tmp_entries
|
||||||
|
/chromium/.last_sync_chromium
|
||||||
|
/chromium/_bad_scm
|
||||||
|
/chromium/src
|
||||||
|
/gyp-mac-tool
|
||||||
|
/links
|
||||||
|
/links.db
|
||||||
|
/mojo
|
||||||
|
/out
|
||||||
|
/resources/**/*.aecdump
|
||||||
|
/resources/**/*.bin
|
||||||
|
/resources/**/*.byte
|
||||||
|
/resources/**/*.chn
|
||||||
|
/resources/**/*.dat
|
||||||
|
/resources/**/*.frames
|
||||||
|
/resources/**/*.gai
|
||||||
|
/resources/**/*.jpg
|
||||||
|
/resources/**/*.pcap
|
||||||
|
/resources/**/*.pcm
|
||||||
|
/resources/**/*.rtp
|
||||||
|
/resources/**/*.rtpdump
|
||||||
|
/resources/**/*.rx
|
||||||
|
/resources/**/*.wav
|
||||||
|
/resources/**/*.yuv
|
||||||
|
/resources/**/*.BIT*
|
||||||
|
/resources/**/*.INP
|
||||||
|
/resources/**/*.OUT*
|
||||||
|
/testing
|
||||||
|
/third_party/WebKit/Tools/Scripts
|
||||||
|
/third_party/android_platform
|
||||||
|
/third_party/android_tools
|
||||||
|
/third_party/appurify-python
|
||||||
|
/third_party/asan
|
||||||
|
/third_party/ashmem
|
||||||
|
/third_party/binutils
|
||||||
|
/third_party/boringssl
|
||||||
|
/third_party/BUILD.gn
|
||||||
|
/third_party/catapult
|
||||||
|
/third_party/clang_format
|
||||||
|
/third_party/class-dump
|
||||||
|
/third_party/colorama
|
||||||
|
/third_party/cygwin
|
||||||
|
/third_party/directxsdk
|
||||||
|
/third_party/drmemory
|
||||||
|
/third_party/expat
|
||||||
|
/third_party/ffmpeg
|
||||||
|
/third_party/gaeunit
|
||||||
|
/third_party/gflags/src
|
||||||
|
/third_party/google-visualization-python
|
||||||
|
/third_party/icu
|
||||||
|
/third_party/instrumented_libraries
|
||||||
|
/third_party/ijar
|
||||||
|
/third_party/jsoncpp
|
||||||
|
/third_party/jsr-305
|
||||||
|
/third_party/junit
|
||||||
|
/third_party/junit-jar
|
||||||
|
/third_party/libc++
|
||||||
|
/third_party/libc++-static
|
||||||
|
/third_party/libc++abi
|
||||||
|
/third_party/libFuzzer
|
||||||
|
/third_party/libjingle
|
||||||
|
/third_party/libjpeg
|
||||||
|
/third_party/libjpeg_turbo
|
||||||
|
/third_party/libsrtp
|
||||||
|
/third_party/libvpx
|
||||||
|
/third_party/libxml
|
||||||
|
/third_party/libyuv
|
||||||
|
/third_party/llvm
|
||||||
|
/third_party/llvm-build
|
||||||
|
/third_party/lss
|
||||||
|
/third_party/mockito
|
||||||
|
/third_party/modp_b64
|
||||||
|
/third_party/nss
|
||||||
|
/third_party/oauth2
|
||||||
|
/third_party/ocmock
|
||||||
|
/third_party/openh264
|
||||||
|
/third_party/openmax_dl
|
||||||
|
/third_party/opus
|
||||||
|
/third_party/proguard
|
||||||
|
/third_party/protobuf
|
||||||
|
/third_party/requests
|
||||||
|
/third_party/robolectric
|
||||||
|
/third_party/sqlite
|
||||||
|
/third_party/syzygy
|
||||||
|
/third_party/tcmalloc
|
||||||
|
/third_party/usrsctp
|
||||||
|
/third_party/valgrind
|
||||||
|
/third_party/WebKit
|
||||||
|
/third_party/winsdk_samples/src
|
||||||
|
/third_party/yasm
|
||||||
|
/third_party/zlib
|
||||||
|
/tools/android
|
||||||
|
/tools/clang
|
||||||
|
/tools/generate_library_loader
|
||||||
|
/tools/generate_stubs
|
||||||
|
/tools/gn
|
||||||
|
/tools/grit
|
||||||
|
/tools/gyp
|
||||||
|
/tools/isolate_driver.py
|
||||||
|
/tools/luci-go
|
||||||
|
/tools/mb
|
||||||
|
/tools/memory
|
||||||
|
/tools/protoc_wrapper
|
||||||
|
/tools/python
|
||||||
|
/tools/sanitizer_options
|
||||||
|
/tools/swarming_client
|
||||||
|
/tools/telemetry
|
||||||
|
/tools/tsan_suppressions
|
||||||
|
/tools/valgrind
|
||||||
|
/tools/vim
|
||||||
|
/tools/win
|
||||||
|
/tools/xdisplaycheck
|
||||||
|
/tools/whitespace.txt
|
||||||
|
/x86-generic_out/
|
||||||
|
/xcodebuild
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Copyright (c) 2015 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.
|
||||||
|
|
||||||
|
# The location of the build configuration file.
|
||||||
|
buildconfig = "//build/config/BUILDCONFIG.gn"
|
||||||
|
|
||||||
|
# The secondary source root is a parallel directory tree where
|
||||||
|
# GN build files are placed when they can not be placed directly
|
||||||
|
# in the source tree, e.g. for third party source trees.
|
||||||
|
secondary_source = "//build/secondary/"
|
||||||
|
|
||||||
|
# These are the targets to check headers for by default. The files in targets
|
||||||
|
# matching these patterns (see "gn help label_pattern" for format) will have
|
||||||
|
# their includes checked for proper dependencies when you run either
|
||||||
|
# "gn check" or "gn gen --check".
|
||||||
|
# TODO(kjellander): Keep adding paths to this list as work in webrtc:5589 is done.
|
||||||
|
check_targets = []
|
||||||
|
|
||||||
|
# These are the list of GN files that run exec_script. This whitelist exists
|
||||||
|
# to force additional review for new uses of exec_script, which is strongly
|
||||||
|
# discouraged except for gypi_to_gn calls.
|
||||||
|
exec_script_whitelist = [
|
||||||
|
"//build/config/BUILD.gn",
|
||||||
|
"//build/config/android/BUILD.gn",
|
||||||
|
"//build/config/android/config.gni",
|
||||||
|
"//build/config/android/internal_rules.gni",
|
||||||
|
"//build/config/android/rules.gni",
|
||||||
|
"//build/config/compiler/BUILD.gn",
|
||||||
|
"//build/config/gcc/gcc_version.gni",
|
||||||
|
"//build/config/ios/ios_sdk.gni",
|
||||||
|
"//build/config/linux/BUILD.gn",
|
||||||
|
"//build/config/linux/pkg_config.gni",
|
||||||
|
"//build/config/mac/mac_sdk.gni",
|
||||||
|
"//build/config/posix/BUILD.gn",
|
||||||
|
"//build/config/sysroot.gni",
|
||||||
|
"//build/config/win/visual_studio_version.gni",
|
||||||
|
"//build/gn_helpers.py",
|
||||||
|
"//build/gypi_to_gn.py",
|
||||||
|
"//build/toolchain/concurrent_links.gni",
|
||||||
|
"//build/toolchain/gcc_toolchain.gni",
|
||||||
|
"//build/toolchain/mac/BUILD.gn",
|
||||||
|
"//build/toolchain/win/BUILD.gn",
|
||||||
|
"//third_party/boringssl/BUILD.gn",
|
||||||
|
"//third_party/openh264/BUILD.gn",
|
||||||
|
"//third_party/opus/BUILD.gn",
|
||||||
|
"//webrtc/modules/video_render/BUILD.gn",
|
||||||
|
]
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Names should be added to this file like so:
|
||||||
|
# Name or Organization <email address>
|
||||||
|
|
||||||
|
Alexander Brauckmann <a.brauckmann@gmail.com>
|
||||||
|
Andrew MacDonald <andrew@webrtc.org>
|
||||||
|
Anil Kumar <an1kumar@gmail.com>
|
||||||
|
Ben Strong <bstrong@gmail.com>
|
||||||
|
Bob Withers <bwit@pobox.com>
|
||||||
|
Bridger Maxwell <bridgeyman@gmail.com>
|
||||||
|
Christophe Dumez <ch.dumez@samsung.com>
|
||||||
|
Cody Barnes <conceptgenesis@gmail.com>
|
||||||
|
Colin Plumb
|
||||||
|
Eric Rescorla, RTFM Inc. <ekr@rtfm.com>
|
||||||
|
Giji Gangadharan <giji.g@samsung.com>
|
||||||
|
Graham Yoakum <gyoakum@skobalt.com>
|
||||||
|
Jake Hilton <jakehilton@gmail.com>
|
||||||
|
James H. Brown <jbrown@burgoyne.com>
|
||||||
|
Jiawei Ou <jiawei.ou@gmail.com>
|
||||||
|
Jie Mao <maojie0924@gmail.com>
|
||||||
|
Luke Weber <luke.weber@gmail.com>
|
||||||
|
Manish Jethani <manish.jethani@gmail.com>
|
||||||
|
Martin Storsjo <martin@martin.st>
|
||||||
|
Matthias Liebig <matthias.gcode@gmail.com>
|
||||||
|
Pali Rohar
|
||||||
|
Paul Kapustin <pkapustin@gmail.com>
|
||||||
|
Rafael Lopez Diez <rafalopezdiez@gmail.com>
|
||||||
|
Ralph Giles <giles@ghostscript.com>
|
||||||
|
Riku Voipio <riku.voipio@linaro.org>
|
||||||
|
Robert Nagy <robert.nagy@gmail.com>
|
||||||
|
Ryan Yoakum <ryoakum@skobalt.com>
|
||||||
|
Sarah Thompson <sarah@telergy.com>
|
||||||
|
Saul Kravitz <Saul.Kravitz@celera.com>
|
||||||
|
Silviu Caragea <silviu.cpp@gmail.com>
|
||||||
|
Steve Reid <sreid@sea-to-sky.net>
|
||||||
|
Vicken Simonian <vsimon@gmail.com>
|
||||||
|
Victor Costan <costan@gmail.com>
|
||||||
|
|
||||||
|
&yet LLC
|
||||||
|
Agora IO
|
||||||
|
ARM Holdings
|
||||||
|
BroadSoft Inc.
|
||||||
|
Google Inc.
|
||||||
|
Intel Corporation
|
||||||
|
MIPS Technologies
|
||||||
|
Mozilla Foundation
|
||||||
|
Opera Software ASA
|
||||||
|
Sinch AB
|
||||||
|
struktur AG
|
||||||
|
Telenor Digital AS
|
||||||
|
Temasys Communications
|
||||||
|
Vonage Holdings Corp.
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Copyright (c) 2014 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 is copied and modified from Chromium (src/BUILD.gn).
|
||||||
|
group("root") {
|
||||||
|
deps = [
|
||||||
|
"//webrtc",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
Refer to talk/COPYING.
|
|
@ -0,0 +1,94 @@
|
||||||
|
# This file contains dependencies for WebRTC that are not shared with Chromium.
|
||||||
|
# If you wish to add a dependency that is present in Chromium's src/DEPS or a
|
||||||
|
# directory from the Chromium checkout, you should add it to setup_links.py
|
||||||
|
# instead.
|
||||||
|
|
||||||
|
vars = {
|
||||||
|
'extra_gyp_flag': '-Dextra_gyp_flag=0',
|
||||||
|
'chromium_git': 'https://chromium.googlesource.com',
|
||||||
|
'chromium_revision': '719d4716ed7e3188768d3b0ac6b988ae0a6320cb',
|
||||||
|
}
|
||||||
|
|
||||||
|
# NOTE: Use http rather than https; the latter can cause problems for users
|
||||||
|
# behind proxies.
|
||||||
|
deps = {
|
||||||
|
'src/third_party/gflags/src':
|
||||||
|
Var('chromium_git') + '/external/github.com/gflags/gflags@03bebcb065c83beff83d50ae025a55a4bf94dfca',
|
||||||
|
}
|
||||||
|
|
||||||
|
deps_os = {
|
||||||
|
'win': {
|
||||||
|
'src/third_party/winsdk_samples/src':
|
||||||
|
Var('chromium_git') + '/external/webrtc/deps/third_party/winsdk_samples_v71@e71b549167a665d7424d6f1dadfbff4b4aad1589',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
hooks = [
|
||||||
|
{
|
||||||
|
# Check for legacy named top-level dir (named 'trunk').
|
||||||
|
'name': 'check_root_dir_name',
|
||||||
|
'pattern': '.',
|
||||||
|
'action': ['python','-c',
|
||||||
|
('import os,sys;'
|
||||||
|
'script = os.path.join("trunk","check_root_dir.py");'
|
||||||
|
'_ = os.system("%s %s" % (sys.executable,script)) '
|
||||||
|
'if os.path.exists(script) else 0')],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# Clone chromium and its deps.
|
||||||
|
'name': 'sync chromium',
|
||||||
|
'pattern': '.',
|
||||||
|
'action': ['python', '-u', 'src/sync_chromium.py',
|
||||||
|
'--target-revision', Var('chromium_revision')],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# Create links to shared dependencies in Chromium.
|
||||||
|
'name': 'setup_links',
|
||||||
|
'pattern': '.',
|
||||||
|
'action': ['python', 'src/setup_links.py'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# This clobbers when necessary (based on get_landmines.py). It should be
|
||||||
|
# an early hook but it will need to be run after syncing Chromium and
|
||||||
|
# setting up the links, so the script actually exists.
|
||||||
|
'name': 'landmines',
|
||||||
|
'pattern': '.',
|
||||||
|
'action': [
|
||||||
|
'python',
|
||||||
|
'src/build/landmines.py',
|
||||||
|
'--landmine-scripts',
|
||||||
|
'src/webrtc/build/get_landmines.py',
|
||||||
|
'--src-dir',
|
||||||
|
'src',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# Pull sanitizer-instrumented third-party libraries if requested via
|
||||||
|
# GYP_DEFINES. This could be done as part of sync_chromium.py above
|
||||||
|
# but then we would need to run all the Chromium hooks each time,
|
||||||
|
# which will slow things down a lot.
|
||||||
|
'name': 'instrumented_libraries',
|
||||||
|
'pattern': '\\.sha1',
|
||||||
|
'action': ['python', 'src/third_party/instrumented_libraries/scripts/download_binaries.py'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# Download test resources, i.e. video and audio files from Google Storage.
|
||||||
|
'pattern': '.',
|
||||||
|
'action': ['download_from_google_storage',
|
||||||
|
'--directory',
|
||||||
|
'--recursive',
|
||||||
|
'--num_threads=10',
|
||||||
|
'--no_auth',
|
||||||
|
'--quiet',
|
||||||
|
'--bucket', 'chromium-webrtc-resources',
|
||||||
|
'src/resources'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
# A change to a .gyp, .gypi, or to GYP itself should run the generator.
|
||||||
|
'name': 'gyp',
|
||||||
|
'pattern': '.',
|
||||||
|
'action': ['python', 'src/webrtc/build/gyp_webrtc.py',
|
||||||
|
Var('extra_gyp_flag')],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Refer to webrtc/LICENSE.
|
|
@ -0,0 +1 @@
|
||||||
|
Refer to webrtc/LICENSE_THIRD_PARTY and talk/LICENSE_THIRD_PARTY.
|
|
@ -0,0 +1,16 @@
|
||||||
|
henrika@webrtc.org
|
||||||
|
kwiberg@webrtc.org
|
||||||
|
mflodman@webrtc.org
|
||||||
|
niklas.enbom@webrtc.org
|
||||||
|
tina.legrand@webrtc.org
|
||||||
|
tommi@webrtc.org
|
||||||
|
per-file .gitignore=*
|
||||||
|
per-file .gn=kjellander@webrtc.org
|
||||||
|
per-file *.gyp=*
|
||||||
|
per-file AUTHORS=*
|
||||||
|
per-file BUILD.gn=kjellander@webrtc.org
|
||||||
|
per-file DEPS=*
|
||||||
|
per-file PRESUBMIT.py=kjellander@webrtc.org
|
||||||
|
per-file setup_links.py=*
|
||||||
|
per-file sync_chromium.py=kjellander@webrtc.org
|
||||||
|
per-file WATCHLISTS=*
|
|
@ -0,0 +1 @@
|
||||||
|
Refer to src/PATENTS.
|
|
@ -0,0 +1,545 @@
|
||||||
|
# Copyright (c) 2012 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.
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
# Directories that will be scanned by cpplint by the presubmit script.
|
||||||
|
CPPLINT_DIRS = [
|
||||||
|
'webrtc/audio',
|
||||||
|
'webrtc/call',
|
||||||
|
'webrtc/common_video',
|
||||||
|
'webrtc/examples',
|
||||||
|
'webrtc/modules/bitrate_controller',
|
||||||
|
'webrtc/modules/congestion_controller',
|
||||||
|
'webrtc/modules/pacing',
|
||||||
|
'webrtc/modules/remote_bitrate_estimator',
|
||||||
|
'webrtc/modules/rtp_rtcp',
|
||||||
|
'webrtc/modules/video_coding',
|
||||||
|
'webrtc/modules/video_processing',
|
||||||
|
'webrtc/tools',
|
||||||
|
'webrtc/video',
|
||||||
|
]
|
||||||
|
|
||||||
|
# These filters will always be removed, even if the caller specifies a filter
|
||||||
|
# set, as they are problematic or broken in some way.
|
||||||
|
#
|
||||||
|
# Justifications for each filter:
|
||||||
|
# - build/c++11 : Rvalue ref checks are unreliable (false positives),
|
||||||
|
# include file and feature blacklists are
|
||||||
|
# google3-specific.
|
||||||
|
# - whitespace/operators: Same as above (doesn't seem sufficient to eliminate
|
||||||
|
# all move-related errors).
|
||||||
|
BLACKLIST_LINT_FILTERS = [
|
||||||
|
'-build/c++11',
|
||||||
|
'-whitespace/operators',
|
||||||
|
]
|
||||||
|
|
||||||
|
# List of directories of "supported" native APIs. That means changes to headers
|
||||||
|
# will be done in a compatible way following this scheme:
|
||||||
|
# 1. Non-breaking changes are made.
|
||||||
|
# 2. The old APIs as marked as deprecated (with comments).
|
||||||
|
# 3. Deprecation is announced to discuss-webrtc@googlegroups.com and
|
||||||
|
# webrtc-users@google.com (internal list).
|
||||||
|
# 4. (later) The deprecated APIs are removed.
|
||||||
|
NATIVE_API_DIRS = (
|
||||||
|
'webrtc',
|
||||||
|
'webrtc/api',
|
||||||
|
'webrtc/media',
|
||||||
|
'webrtc/modules/audio_device/include',
|
||||||
|
'webrtc/pc',
|
||||||
|
)
|
||||||
|
# These directories should not be used but are maintained only to avoid breaking
|
||||||
|
# some legacy downstream code.
|
||||||
|
LEGACY_API_DIRS = (
|
||||||
|
'talk/app/webrtc',
|
||||||
|
'webrtc/base',
|
||||||
|
'webrtc/common_audio/include',
|
||||||
|
'webrtc/modules/audio_coding/include',
|
||||||
|
'webrtc/modules/audio_conference_mixer/include',
|
||||||
|
'webrtc/modules/audio_processing/include',
|
||||||
|
'webrtc/modules/bitrate_controller/include',
|
||||||
|
'webrtc/modules/congestion_controller/include',
|
||||||
|
'webrtc/modules/include',
|
||||||
|
'webrtc/modules/remote_bitrate_estimator/include',
|
||||||
|
'webrtc/modules/rtp_rtcp/include',
|
||||||
|
'webrtc/modules/rtp_rtcp/source',
|
||||||
|
'webrtc/modules/utility/include',
|
||||||
|
'webrtc/modules/video_coding/codecs/h264/include',
|
||||||
|
'webrtc/modules/video_coding/codecs/i420/include',
|
||||||
|
'webrtc/modules/video_coding/codecs/vp8/include',
|
||||||
|
'webrtc/modules/video_coding/codecs/vp9/include',
|
||||||
|
'webrtc/modules/video_coding/include',
|
||||||
|
'webrtc/system_wrappers/include',
|
||||||
|
'webrtc/voice_engine/include',
|
||||||
|
)
|
||||||
|
API_DIRS = NATIVE_API_DIRS[:] + LEGACY_API_DIRS[:]
|
||||||
|
|
||||||
|
|
||||||
|
def _VerifyNativeApiHeadersListIsValid(input_api, output_api):
|
||||||
|
"""Ensures the list of native API header directories is up to date."""
|
||||||
|
non_existing_paths = []
|
||||||
|
native_api_full_paths = [
|
||||||
|
input_api.os_path.join(input_api.PresubmitLocalPath(),
|
||||||
|
*path.split('/')) for path in API_DIRS]
|
||||||
|
for path in native_api_full_paths:
|
||||||
|
if not os.path.isdir(path):
|
||||||
|
non_existing_paths.append(path)
|
||||||
|
if non_existing_paths:
|
||||||
|
return [output_api.PresubmitError(
|
||||||
|
'Directories to native API headers have changed which has made the '
|
||||||
|
'list in PRESUBMIT.py outdated.\nPlease update it to the current '
|
||||||
|
'location of our native APIs.',
|
||||||
|
non_existing_paths)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
api_change_msg = """
|
||||||
|
You seem to be changing native API header files. Please make sure that you:
|
||||||
|
1. Make compatible changes that don't break existing clients.
|
||||||
|
2. Mark the old stuff as deprecated.
|
||||||
|
3. Create a timeline and plan for when the deprecated stuff will be
|
||||||
|
removed. (The amount of time we give users to change their code
|
||||||
|
should be informed by how much work it is for them. If they just
|
||||||
|
need to replace one name with another or something equally
|
||||||
|
simple, 1-2 weeks might be good; if they need to do serious work,
|
||||||
|
up to 3 months may be called for.)
|
||||||
|
4. Update/inform existing downstream code owners to stop using the
|
||||||
|
deprecated stuff. (Send announcements to
|
||||||
|
discuss-webrtc@googlegroups.com and webrtc-users@google.com.)
|
||||||
|
5. Remove the deprecated stuff, once the agreed-upon amount of time
|
||||||
|
has passed.
|
||||||
|
Related files:
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _CheckNativeApiHeaderChanges(input_api, output_api):
|
||||||
|
"""Checks to remind proper changing of native APIs."""
|
||||||
|
files = []
|
||||||
|
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
||||||
|
if f.LocalPath().endswith('.h'):
|
||||||
|
for path in API_DIRS:
|
||||||
|
if os.path.dirname(f.LocalPath()) == path:
|
||||||
|
files.append(f)
|
||||||
|
|
||||||
|
if files:
|
||||||
|
return [output_api.PresubmitNotifyResult(api_change_msg, files)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def _CheckNoIOStreamInHeaders(input_api, output_api):
|
||||||
|
"""Checks to make sure no .h files include <iostream>."""
|
||||||
|
files = []
|
||||||
|
pattern = input_api.re.compile(r'^#include\s*<iostream>',
|
||||||
|
input_api.re.MULTILINE)
|
||||||
|
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
||||||
|
if not f.LocalPath().endswith('.h'):
|
||||||
|
continue
|
||||||
|
contents = input_api.ReadFile(f)
|
||||||
|
if pattern.search(contents):
|
||||||
|
files.append(f)
|
||||||
|
|
||||||
|
if len(files):
|
||||||
|
return [output_api.PresubmitError(
|
||||||
|
'Do not #include <iostream> in header files, since it inserts static ' +
|
||||||
|
'initialization into every file including the header. Instead, ' +
|
||||||
|
'#include <ostream>. See http://crbug.com/94794',
|
||||||
|
files)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def _CheckNoFRIEND_TEST(input_api, output_api):
|
||||||
|
"""Make sure that gtest's FRIEND_TEST() macro is not used, the
|
||||||
|
FRIEND_TEST_ALL_PREFIXES() macro from testsupport/gtest_prod_util.h should be
|
||||||
|
used instead since that allows for FLAKY_, FAILS_ and DISABLED_ prefixes."""
|
||||||
|
problems = []
|
||||||
|
|
||||||
|
file_filter = lambda f: f.LocalPath().endswith(('.cc', '.h'))
|
||||||
|
for f in input_api.AffectedFiles(file_filter=file_filter):
|
||||||
|
for line_num, line in f.ChangedContents():
|
||||||
|
if 'FRIEND_TEST(' in line:
|
||||||
|
problems.append(' %s:%d' % (f.LocalPath(), line_num))
|
||||||
|
|
||||||
|
if not problems:
|
||||||
|
return []
|
||||||
|
return [output_api.PresubmitPromptWarning('WebRTC\'s code should not use '
|
||||||
|
'gtest\'s FRIEND_TEST() macro. Include testsupport/gtest_prod_util.h and '
|
||||||
|
'use FRIEND_TEST_ALL_PREFIXES() instead.\n' + '\n'.join(problems))]
|
||||||
|
|
||||||
|
|
||||||
|
def _IsLintWhitelisted(whitelist_dirs, file_path):
|
||||||
|
""" Checks if a file is whitelisted for lint check."""
|
||||||
|
for path in whitelist_dirs:
|
||||||
|
if os.path.dirname(file_path).startswith(path):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _CheckApprovedFilesLintClean(input_api, output_api,
|
||||||
|
source_file_filter=None):
|
||||||
|
"""Checks that all new or whitelisted .cc and .h files pass cpplint.py.
|
||||||
|
This check is based on _CheckChangeLintsClean in
|
||||||
|
depot_tools/presubmit_canned_checks.py but has less filters and only checks
|
||||||
|
added files."""
|
||||||
|
result = []
|
||||||
|
|
||||||
|
# Initialize cpplint.
|
||||||
|
import cpplint
|
||||||
|
# Access to a protected member _XX of a client class
|
||||||
|
# pylint: disable=W0212
|
||||||
|
cpplint._cpplint_state.ResetErrorCounts()
|
||||||
|
|
||||||
|
lint_filters = cpplint._Filters()
|
||||||
|
lint_filters.extend(BLACKLIST_LINT_FILTERS)
|
||||||
|
cpplint._SetFilters(','.join(lint_filters))
|
||||||
|
|
||||||
|
# Create a platform independent whitelist for the CPPLINT_DIRS.
|
||||||
|
whitelist_dirs = [input_api.os_path.join(*path.split('/'))
|
||||||
|
for path in CPPLINT_DIRS]
|
||||||
|
|
||||||
|
# Use the strictest verbosity level for cpplint.py (level 1) which is the
|
||||||
|
# default when running cpplint.py from command line.
|
||||||
|
# To make it possible to work with not-yet-converted code, we're only applying
|
||||||
|
# it to new (or moved/renamed) files and files listed in LINT_FOLDERS.
|
||||||
|
verbosity_level = 1
|
||||||
|
files = []
|
||||||
|
for f in input_api.AffectedSourceFiles(source_file_filter):
|
||||||
|
# Note that moved/renamed files also count as added.
|
||||||
|
if f.Action() == 'A' or _IsLintWhitelisted(whitelist_dirs, f.LocalPath()):
|
||||||
|
files.append(f.AbsoluteLocalPath())
|
||||||
|
|
||||||
|
for file_name in files:
|
||||||
|
cpplint.ProcessFile(file_name, verbosity_level)
|
||||||
|
|
||||||
|
if cpplint._cpplint_state.error_count > 0:
|
||||||
|
if input_api.is_committing:
|
||||||
|
# TODO(kjellander): Change back to PresubmitError below when we're
|
||||||
|
# confident with the lint settings.
|
||||||
|
res_type = output_api.PresubmitPromptWarning
|
||||||
|
else:
|
||||||
|
res_type = output_api.PresubmitPromptWarning
|
||||||
|
result = [res_type('Changelist failed cpplint.py check.')]
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _CheckNoRtcBaseDeps(input_api, gyp_files, output_api):
|
||||||
|
pattern = input_api.re.compile(r"base.gyp:rtc_base\s*'")
|
||||||
|
violating_files = []
|
||||||
|
for f in gyp_files:
|
||||||
|
gyp_exceptions = (
|
||||||
|
'base_tests.gyp',
|
||||||
|
'desktop_capture.gypi',
|
||||||
|
'p2p.gyp',
|
||||||
|
'sdk.gyp',
|
||||||
|
'webrtc_test_common.gyp',
|
||||||
|
'webrtc_tests.gypi',
|
||||||
|
)
|
||||||
|
if f.LocalPath().endswith(gyp_exceptions):
|
||||||
|
continue
|
||||||
|
contents = input_api.ReadFile(f)
|
||||||
|
if pattern.search(contents):
|
||||||
|
violating_files.append(f)
|
||||||
|
if violating_files:
|
||||||
|
return [output_api.PresubmitError(
|
||||||
|
'Depending on rtc_base is not allowed. Change your dependency to '
|
||||||
|
'rtc_base_approved and possibly sanitize and move the desired source '
|
||||||
|
'file(s) to rtc_base_approved.\nChanged GYP files:',
|
||||||
|
items=violating_files)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
def _CheckNoSourcesAboveGyp(input_api, gyp_files, output_api):
|
||||||
|
# Disallow referencing source files with paths above the GYP file location.
|
||||||
|
source_pattern = input_api.re.compile(r'\'sources\'.*?\[(.*?)\]',
|
||||||
|
re.MULTILINE | re.DOTALL)
|
||||||
|
file_pattern = input_api.re.compile(r"'((\.\./.*?)|(<\(webrtc_root\).*?))'")
|
||||||
|
violating_gyp_files = set()
|
||||||
|
violating_source_entries = []
|
||||||
|
for gyp_file in gyp_files:
|
||||||
|
if 'supplement.gypi' in gyp_file.LocalPath():
|
||||||
|
# Exclude supplement.gypi from this check, as the LSan and TSan
|
||||||
|
# suppression files are located in a different location.
|
||||||
|
continue
|
||||||
|
contents = input_api.ReadFile(gyp_file)
|
||||||
|
for source_block_match in source_pattern.finditer(contents):
|
||||||
|
# Find all source list entries starting with ../ in the source block
|
||||||
|
# (exclude overrides entries).
|
||||||
|
for file_list_match in file_pattern.finditer(source_block_match.group(1)):
|
||||||
|
source_file = file_list_match.group(1)
|
||||||
|
if 'overrides/' not in source_file:
|
||||||
|
violating_source_entries.append(source_file)
|
||||||
|
violating_gyp_files.add(gyp_file)
|
||||||
|
if violating_gyp_files:
|
||||||
|
return [output_api.PresubmitError(
|
||||||
|
'Referencing source files above the directory of the GYP file is not '
|
||||||
|
'allowed. Please introduce new GYP targets and/or GYP files in the '
|
||||||
|
'proper location instead.\n'
|
||||||
|
'Invalid source entries:\n'
|
||||||
|
'%s\n'
|
||||||
|
'Violating GYP files:' % '\n'.join(violating_source_entries),
|
||||||
|
items=violating_gyp_files)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
def _CheckGypChanges(input_api, output_api):
|
||||||
|
source_file_filter = lambda x: input_api.FilterSourceFile(
|
||||||
|
x, white_list=(r'.+\.(gyp|gypi)$',))
|
||||||
|
|
||||||
|
gyp_files = []
|
||||||
|
for f in input_api.AffectedSourceFiles(source_file_filter):
|
||||||
|
if f.LocalPath().startswith('webrtc'):
|
||||||
|
gyp_files.append(f)
|
||||||
|
|
||||||
|
result = []
|
||||||
|
if gyp_files:
|
||||||
|
result.append(output_api.PresubmitNotifyResult(
|
||||||
|
'As you\'re changing GYP files: please make sure corresponding '
|
||||||
|
'BUILD.gn files are also updated.\nChanged GYP files:',
|
||||||
|
items=gyp_files))
|
||||||
|
result.extend(_CheckNoRtcBaseDeps(input_api, gyp_files, output_api))
|
||||||
|
result.extend(_CheckNoSourcesAboveGyp(input_api, gyp_files, output_api))
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _CheckUnwantedDependencies(input_api, output_api):
|
||||||
|
"""Runs checkdeps on #include statements added in this
|
||||||
|
change. Breaking - rules is an error, breaking ! rules is a
|
||||||
|
warning.
|
||||||
|
"""
|
||||||
|
# Copied from Chromium's src/PRESUBMIT.py.
|
||||||
|
|
||||||
|
# We need to wait until we have an input_api object and use this
|
||||||
|
# roundabout construct to import checkdeps because this file is
|
||||||
|
# eval-ed and thus doesn't have __file__.
|
||||||
|
original_sys_path = sys.path
|
||||||
|
try:
|
||||||
|
checkdeps_path = input_api.os_path.join(input_api.PresubmitLocalPath(),
|
||||||
|
'buildtools', 'checkdeps')
|
||||||
|
if not os.path.exists(checkdeps_path):
|
||||||
|
return [output_api.PresubmitError(
|
||||||
|
'Cannot find checkdeps at %s\nHave you run "gclient sync" to '
|
||||||
|
'download Chromium and setup the symlinks?' % checkdeps_path)]
|
||||||
|
sys.path.append(checkdeps_path)
|
||||||
|
import checkdeps
|
||||||
|
from cpp_checker import CppChecker
|
||||||
|
from rules import Rule
|
||||||
|
finally:
|
||||||
|
# Restore sys.path to what it was before.
|
||||||
|
sys.path = original_sys_path
|
||||||
|
|
||||||
|
added_includes = []
|
||||||
|
for f in input_api.AffectedFiles():
|
||||||
|
if not CppChecker.IsCppFile(f.LocalPath()):
|
||||||
|
continue
|
||||||
|
|
||||||
|
changed_lines = [line for _, line in f.ChangedContents()]
|
||||||
|
added_includes.append([f.LocalPath(), changed_lines])
|
||||||
|
|
||||||
|
deps_checker = checkdeps.DepsChecker(input_api.PresubmitLocalPath())
|
||||||
|
|
||||||
|
error_descriptions = []
|
||||||
|
warning_descriptions = []
|
||||||
|
for path, rule_type, rule_description in deps_checker.CheckAddedCppIncludes(
|
||||||
|
added_includes):
|
||||||
|
description_with_path = '%s\n %s' % (path, rule_description)
|
||||||
|
if rule_type == Rule.DISALLOW:
|
||||||
|
error_descriptions.append(description_with_path)
|
||||||
|
else:
|
||||||
|
warning_descriptions.append(description_with_path)
|
||||||
|
|
||||||
|
results = []
|
||||||
|
if error_descriptions:
|
||||||
|
results.append(output_api.PresubmitError(
|
||||||
|
'You added one or more #includes that violate checkdeps rules.',
|
||||||
|
error_descriptions))
|
||||||
|
if warning_descriptions:
|
||||||
|
results.append(output_api.PresubmitPromptOrNotify(
|
||||||
|
'You added one or more #includes of files that are temporarily\n'
|
||||||
|
'allowed but being removed. Can you avoid introducing the\n'
|
||||||
|
'#include? See relevant DEPS file(s) for details and contacts.',
|
||||||
|
warning_descriptions))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def _CheckJSONParseErrors(input_api, output_api):
|
||||||
|
"""Check that JSON files do not contain syntax errors."""
|
||||||
|
|
||||||
|
def FilterFile(affected_file):
|
||||||
|
return input_api.os_path.splitext(affected_file.LocalPath())[1] == '.json'
|
||||||
|
|
||||||
|
def GetJSONParseError(input_api, filename):
|
||||||
|
try:
|
||||||
|
contents = input_api.ReadFile(filename)
|
||||||
|
input_api.json.loads(contents)
|
||||||
|
except ValueError as e:
|
||||||
|
return e
|
||||||
|
return None
|
||||||
|
|
||||||
|
results = []
|
||||||
|
for affected_file in input_api.AffectedFiles(
|
||||||
|
file_filter=FilterFile, include_deletes=False):
|
||||||
|
parse_error = GetJSONParseError(input_api,
|
||||||
|
affected_file.AbsoluteLocalPath())
|
||||||
|
if parse_error:
|
||||||
|
results.append(output_api.PresubmitError('%s could not be parsed: %s' %
|
||||||
|
(affected_file.LocalPath(), parse_error)))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def _RunPythonTests(input_api, output_api):
|
||||||
|
def join(*args):
|
||||||
|
return input_api.os_path.join(input_api.PresubmitLocalPath(), *args)
|
||||||
|
|
||||||
|
test_directories = [
|
||||||
|
join('tools', 'autoroller', 'unittests'),
|
||||||
|
join('webrtc', 'tools', 'py_event_log_analyzer'),
|
||||||
|
]
|
||||||
|
|
||||||
|
tests = []
|
||||||
|
for directory in test_directories:
|
||||||
|
tests.extend(
|
||||||
|
input_api.canned_checks.GetUnitTestsInDirectory(
|
||||||
|
input_api,
|
||||||
|
output_api,
|
||||||
|
directory,
|
||||||
|
whitelist=[r'.+_test\.py$']))
|
||||||
|
return input_api.RunTests(tests, parallel=True)
|
||||||
|
|
||||||
|
|
||||||
|
def _CommonChecks(input_api, output_api):
|
||||||
|
"""Checks common to both upload and commit."""
|
||||||
|
results = []
|
||||||
|
# Filter out files that are in objc or ios dirs from being cpplint-ed since
|
||||||
|
# they do not follow C++ lint rules.
|
||||||
|
black_list = input_api.DEFAULT_BLACK_LIST + (
|
||||||
|
r".*\bobjc[\\\/].*",
|
||||||
|
)
|
||||||
|
source_file_filter = lambda x: input_api.FilterSourceFile(x, None, black_list)
|
||||||
|
results.extend(_CheckApprovedFilesLintClean(
|
||||||
|
input_api, output_api, source_file_filter))
|
||||||
|
results.extend(input_api.canned_checks.RunPylint(input_api, output_api,
|
||||||
|
black_list=(r'^.*gviz_api\.py$',
|
||||||
|
r'^.*gaeunit\.py$',
|
||||||
|
# Embedded shell-script fakes out pylint.
|
||||||
|
r'^build[\\\/].*\.py$',
|
||||||
|
r'^buildtools[\\\/].*\.py$',
|
||||||
|
r'^chromium[\\\/].*\.py$',
|
||||||
|
r'^mojo.*[\\\/].*\.py$',
|
||||||
|
r'^out.*[\\\/].*\.py$',
|
||||||
|
r'^testing[\\\/].*\.py$',
|
||||||
|
r'^third_party[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]clang[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]generate_library_loader[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]generate_stubs[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]gn[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]gyp[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]isolate_driver.py$',
|
||||||
|
r'^tools[\\\/]mb[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]protoc_wrapper[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]python[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]python_charts[\\\/]data[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]refactoring[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]swarming_client[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]vim[\\\/].*\.py$',
|
||||||
|
# TODO(phoglund): should arguably be checked.
|
||||||
|
r'^tools[\\\/]valgrind-webrtc[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]valgrind[\\\/].*\.py$',
|
||||||
|
r'^tools[\\\/]win[\\\/].*\.py$',
|
||||||
|
r'^xcodebuild.*[\\\/].*\.py$',),
|
||||||
|
disabled_warnings=['F0401', # Failed to import x
|
||||||
|
'E0611', # No package y in x
|
||||||
|
'W0232', # Class has no __init__ method
|
||||||
|
],
|
||||||
|
pylintrc='pylintrc'))
|
||||||
|
|
||||||
|
# WebRTC can't use the presubmit_canned_checks.PanProjectChecks function since
|
||||||
|
# we need to have different license checks in talk/ and webrtc/ directories.
|
||||||
|
# Instead, hand-picked checks are included below.
|
||||||
|
|
||||||
|
# .m and .mm files are ObjC files. For simplicity we will consider .h files in
|
||||||
|
# ObjC subdirectories ObjC headers.
|
||||||
|
objc_filter_list = (r'.+\.m$', r'.+\.mm$', r'.+objc\/.+\.h$')
|
||||||
|
# Skip long-lines check for DEPS, GN and GYP files.
|
||||||
|
build_file_filter_list = (r'.+\.gyp$', r'.+\.gypi$', r'.+\.gn$', r'.+\.gni$',
|
||||||
|
'DEPS')
|
||||||
|
eighty_char_sources = lambda x: input_api.FilterSourceFile(x,
|
||||||
|
black_list=build_file_filter_list + objc_filter_list)
|
||||||
|
hundred_char_sources = lambda x: input_api.FilterSourceFile(x,
|
||||||
|
white_list=objc_filter_list)
|
||||||
|
results.extend(input_api.canned_checks.CheckLongLines(
|
||||||
|
input_api, output_api, maxlen=80, source_file_filter=eighty_char_sources))
|
||||||
|
results.extend(input_api.canned_checks.CheckLongLines(
|
||||||
|
input_api, output_api, maxlen=100,
|
||||||
|
source_file_filter=hundred_char_sources))
|
||||||
|
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeHasNoTabs(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeHasNoStrayWhitespace(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeTodoHasOwner(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(_CheckNativeApiHeaderChanges(input_api, output_api))
|
||||||
|
results.extend(_CheckNoIOStreamInHeaders(input_api, output_api))
|
||||||
|
results.extend(_CheckNoFRIEND_TEST(input_api, output_api))
|
||||||
|
results.extend(_CheckGypChanges(input_api, output_api))
|
||||||
|
results.extend(_CheckUnwantedDependencies(input_api, output_api))
|
||||||
|
results.extend(_CheckJSONParseErrors(input_api, output_api))
|
||||||
|
results.extend(_RunPythonTests(input_api, output_api))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def CheckChangeOnUpload(input_api, output_api):
|
||||||
|
results = []
|
||||||
|
results.extend(_CommonChecks(input_api, output_api))
|
||||||
|
results.extend(
|
||||||
|
input_api.canned_checks.CheckGNFormatted(input_api, output_api))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def CheckChangeOnCommit(input_api, output_api):
|
||||||
|
results = []
|
||||||
|
results.extend(_CommonChecks(input_api, output_api))
|
||||||
|
results.extend(_VerifyNativeApiHeadersListIsValid(input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckOwners(input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeWasUploaded(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeHasDescription(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeHasBugField(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckChangeHasTestField(
|
||||||
|
input_api, output_api))
|
||||||
|
results.extend(input_api.canned_checks.CheckTreeIsOpen(
|
||||||
|
input_api, output_api,
|
||||||
|
json_url='http://webrtc-status.appspot.com/current?format=json'))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=W0613
|
||||||
|
def GetPreferredTryMasters(project, change):
|
||||||
|
cq_config_path = os.path.join(
|
||||||
|
change.RepositoryRoot(), 'infra', 'config', 'cq.cfg')
|
||||||
|
# commit_queue.py below is a script in depot_tools directory, which has a
|
||||||
|
# 'builders' command to retrieve a list of CQ builders from the CQ config.
|
||||||
|
is_win = platform.system() == 'Windows'
|
||||||
|
masters = json.loads(subprocess.check_output(
|
||||||
|
['commit_queue', 'builders', cq_config_path], shell=is_win))
|
||||||
|
|
||||||
|
try_config = {}
|
||||||
|
for master in masters:
|
||||||
|
try_config.setdefault(master, {})
|
||||||
|
for builder in masters[master]:
|
||||||
|
if 'presubmit' in builder:
|
||||||
|
# Do not trigger presubmit builders, since they're likely to fail
|
||||||
|
# (e.g. OWNERS checks before finished code review), and we're running
|
||||||
|
# local presubmit anyway.
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
try_config[master][builder] = ['defaulttests']
|
||||||
|
|
||||||
|
return try_config
|
|
@ -0,0 +1,23 @@
|
||||||
|
**WebRTC is a free, open software project** that provides browsers and mobile
|
||||||
|
applications with Real-Time Communications (RTC) capabilities via simple APIs.
|
||||||
|
The WebRTC components have been optimized to best serve this purpose.
|
||||||
|
|
||||||
|
**Our mission:** To enable rich, high-quality RTC applications to be
|
||||||
|
developed for the browser, mobile platforms, and IoT devices, and allow them
|
||||||
|
all to communicate via a common set of protocols.
|
||||||
|
|
||||||
|
The WebRTC initiative is a project supported by Google, Mozilla and Opera,
|
||||||
|
amongst others. This page is maintained by the Google Chrome team.
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
See http://www.webrtc.org/native-code/development for instructions on how to get
|
||||||
|
started developing with the native code.
|
||||||
|
|
||||||
|
### More info
|
||||||
|
|
||||||
|
* Official web site: http://www.webrtc.org
|
||||||
|
* Master source code repo: https://chromium.googlesource.com/external/webrtc
|
||||||
|
* Samples and reference apps: https://github.com/webrtc
|
||||||
|
* Mailing list: http://groups.google.com/group/discuss-webrtc
|
||||||
|
* Continuous build: http://build.chromium.org/p/client.webrtc
|
|
@ -0,0 +1,188 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# Inspired by chromium.org:
|
||||||
|
# http://dev.chromium.org/developers/contributing-code/watchlists
|
||||||
|
|
||||||
|
{
|
||||||
|
'WATCHLIST_DEFINITIONS': {
|
||||||
|
'this_file': {
|
||||||
|
'filepath': '^WATCHLISTS$',
|
||||||
|
},
|
||||||
|
'all_webrtc': {
|
||||||
|
# NOTE: if you like this you might like webrtc-reviews@webrtc.org!
|
||||||
|
'filepath': '^webrtc/.*',
|
||||||
|
},
|
||||||
|
'root_files': {
|
||||||
|
# webrtc/build/ and non-recursive contents of ./ and webrtc/
|
||||||
|
'filepath': '^[^/]*$|^webrtc/[^/]*$|^webrtc/build/.*',
|
||||||
|
},
|
||||||
|
'documented_interfaces': {
|
||||||
|
'filepath': '^webrtc/[^/]*\.h$|'\
|
||||||
|
'webrtc/voice_engine/include/.*',
|
||||||
|
},
|
||||||
|
'build_files': {
|
||||||
|
'filepath': '\.gyp$|\.gypi$|Android\.mk$',
|
||||||
|
},
|
||||||
|
'java_files': {
|
||||||
|
'filepath': '\.java$|\.xml$',
|
||||||
|
},
|
||||||
|
'audio': {
|
||||||
|
'filepath': 'webrtc/audio/.*',
|
||||||
|
},
|
||||||
|
'call': {
|
||||||
|
'filepath': 'webrtc/call/.*',
|
||||||
|
},
|
||||||
|
'media': {
|
||||||
|
'filepath': 'webrtc/media/.*',
|
||||||
|
},
|
||||||
|
'video': {
|
||||||
|
'filepath': 'webrtc/video/.*',
|
||||||
|
},
|
||||||
|
'voice_engine': {
|
||||||
|
'filepath': 'webrtc/voice_engine/.*',
|
||||||
|
},
|
||||||
|
'common_audio': {
|
||||||
|
'filepath': 'webrtc/common_audio/.*',
|
||||||
|
},
|
||||||
|
'common_video': {
|
||||||
|
'filepath': 'webrtc/common_video/.*',
|
||||||
|
},
|
||||||
|
'video_capture': {
|
||||||
|
'filepath': 'webrtc/modules/video_capture/.*',
|
||||||
|
},
|
||||||
|
'video_render': {
|
||||||
|
'filepath': 'webrtc/modules/video_render/.*',
|
||||||
|
},
|
||||||
|
'audio_device': {
|
||||||
|
'filepath': 'webrtc/modules/audio_device/.*',
|
||||||
|
},
|
||||||
|
'audio_coding': {
|
||||||
|
'filepath': 'webrtc/modules/audio_coding/.*',
|
||||||
|
},
|
||||||
|
'neteq': {
|
||||||
|
'filepath': 'webrtc/modules/audio_coding/neteq/.*',
|
||||||
|
},
|
||||||
|
'audio_processing': {
|
||||||
|
'filepath': 'webrtc/modules/audio_processing/.*',
|
||||||
|
},
|
||||||
|
'video_coding': {
|
||||||
|
'filepath': 'webrtc/modules/video_coding/.*',
|
||||||
|
},
|
||||||
|
'video_processing': {
|
||||||
|
'filepath': 'webrtc/modules/video_processing/.*',
|
||||||
|
},
|
||||||
|
'bitrate_controller': {
|
||||||
|
'filepath': 'webrtc/modules/bitrate_controller/.*'
|
||||||
|
},
|
||||||
|
'remote_bitrate_estimator': {
|
||||||
|
'filepath': 'webrtc/modules/remote_bitrate_estimator/.*'
|
||||||
|
},
|
||||||
|
'pacing': {
|
||||||
|
'filepath': 'webrtc/modules/pacing/.*'
|
||||||
|
},
|
||||||
|
'rtp_rtcp': {
|
||||||
|
'filepath': 'webrtc/modules/rtp_rtcp/.*'
|
||||||
|
},
|
||||||
|
'system_wrappers': {
|
||||||
|
'filepath': 'webrtc/system_wrappers/.*',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
'WATCHLISTS': {
|
||||||
|
'this_file': [''],
|
||||||
|
'all_webrtc': ['tterriberry@mozilla.com'],
|
||||||
|
'root_files': ['niklas.enbom@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'qiang.lu@intel.com',
|
||||||
|
'yujie.mao@webrtc.org'],
|
||||||
|
'documented_interfaces': ['interface-changes@webrtc.org'],
|
||||||
|
'common_audio': ['aluebs@webrtc.org',
|
||||||
|
'andrew@webrtc.org',
|
||||||
|
'audio-team@agora.io',
|
||||||
|
'bjornv@webrtc.org',
|
||||||
|
'minyue@webrtc.org',
|
||||||
|
'peah@webrtc.org'],
|
||||||
|
'audio': ['solenberg@webrtc.org',
|
||||||
|
'tina.legrand@webrtc.org'],
|
||||||
|
'call': ['mflodman@webrtc.org',
|
||||||
|
'pbos@webrtc.org',
|
||||||
|
'solenberg@webrtc.org',
|
||||||
|
'stefan@webrtc.org'],
|
||||||
|
'media': ['solenberg@webrtc.org'],
|
||||||
|
'video': ['mflodman@webrtc.org',
|
||||||
|
'pbos@webrtc.org',
|
||||||
|
'perkj@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'video-team@agora.io',
|
||||||
|
'yujie.mao@webrtc.org',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
'voice_engine': ['andrew@webrtc.org',
|
||||||
|
'audio-team@agora.io',
|
||||||
|
'henrika@webrtc.org',
|
||||||
|
'henrik.lundin@webrtc.org',
|
||||||
|
'minyue@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'solenberg@webrtc.org'],
|
||||||
|
'video_capture': ['mflodman@webrtc.org',
|
||||||
|
'perkj@webrtc.org',
|
||||||
|
'sdk-team@agora.io',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
'video_render': ['mflodman@webrtc.org',
|
||||||
|
'perkj@webrtc.org',
|
||||||
|
'sdk-team@agora.io',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
'audio_device': ['audio-team@agora.io',
|
||||||
|
'henrika@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'sdk-team@agora.io'],
|
||||||
|
'audio_coding': ['audio-team@agora.io',
|
||||||
|
'henrik.lundin@webrtc.org',
|
||||||
|
'kwiberg@webrtc.org',
|
||||||
|
'minyue@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'tina.legrand@webrtc.org'],
|
||||||
|
'neteq': ['audio-team@agora.io',
|
||||||
|
'henrik.lundin@webrtc.org',
|
||||||
|
'minyue@webrtc.org'],
|
||||||
|
'audio_processing': ['aluebs@webrtc.org',
|
||||||
|
'andrew@webrtc.org',
|
||||||
|
'audio-team@agora.io',
|
||||||
|
'bjornv@webrtc.org',
|
||||||
|
'henrik.lundin@webrtc.org',
|
||||||
|
'kwiberg@webrtc.org',
|
||||||
|
'minyue@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'solenberg@webrtc.org'],
|
||||||
|
'video_coding': ['mflodman@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'video-team@agora.io',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
'video_processing': ['stefan@webrtc.org',
|
||||||
|
'video-team@agora.io',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
'bitrate_controller': ['mflodman@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'zhuangzesen@agora.io'],
|
||||||
|
'remote_bitrate_estimator': ['mflodman@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'zhuangzesen@agora.io'],
|
||||||
|
'pacing': ['mflodman@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'zhuangzesen@agora.io'],
|
||||||
|
'rtp_rtcp': ['mflodman@webrtc.org',
|
||||||
|
'stefan@webrtc.org',
|
||||||
|
'danilchap@webrtc.org',
|
||||||
|
'zhuangzesen@agora.io'],
|
||||||
|
'system_wrappers': ['fengyue@agora.io',
|
||||||
|
'henrika@webrtc.org',
|
||||||
|
'mflodman@webrtc.org',
|
||||||
|
'peah@webrtc.org',
|
||||||
|
'zhengzhonghou@agora.io'],
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Copyright (c) 2013 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.
|
||||||
|
|
||||||
|
{
|
||||||
|
'variables': {
|
||||||
|
'include_examples%': 1,
|
||||||
|
'include_tests%': 1,
|
||||||
|
},
|
||||||
|
'includes': [
|
||||||
|
'webrtc/build/common.gypi',
|
||||||
|
],
|
||||||
|
'targets': [
|
||||||
|
{
|
||||||
|
'target_name': 'All',
|
||||||
|
'type': 'none',
|
||||||
|
'dependencies': [
|
||||||
|
'webrtc/api/api.gyp:*',
|
||||||
|
'webrtc/base/base.gyp:*',
|
||||||
|
'webrtc/common.gyp:*',
|
||||||
|
'webrtc/common_audio/common_audio.gyp:*',
|
||||||
|
'webrtc/common_video/common_video.gyp:*',
|
||||||
|
'webrtc/media/media.gyp:*',
|
||||||
|
'webrtc/modules/modules.gyp:*',
|
||||||
|
'webrtc/p2p/p2p.gyp:*',
|
||||||
|
'webrtc/pc/pc.gyp:*',
|
||||||
|
'webrtc/system_wrappers/system_wrappers.gyp:*',
|
||||||
|
'webrtc/tools/tools.gyp:*',
|
||||||
|
'webrtc/voice_engine/voice_engine.gyp:*',
|
||||||
|
'webrtc/webrtc.gyp:*',
|
||||||
|
'<(webrtc_vp8_dir)/vp8.gyp:*',
|
||||||
|
'<(webrtc_vp9_dir)/vp9.gyp:*',
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['OS=="android" and build_with_chromium==0', {
|
||||||
|
'dependencies': [
|
||||||
|
'webrtc/api/api_java.gyp:*',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
['include_tests==1', {
|
||||||
|
'includes': [
|
||||||
|
'webrtc/webrtc_tests.gypi',
|
||||||
|
],
|
||||||
|
'dependencies': [
|
||||||
|
'webrtc/api/api_tests.gyp:*',
|
||||||
|
'webrtc/common_video/common_video_unittests.gyp:*',
|
||||||
|
'webrtc/system_wrappers/system_wrappers_tests.gyp:*',
|
||||||
|
'webrtc/test/metrics.gyp:*',
|
||||||
|
'webrtc/test/test.gyp:*',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
['include_examples==1', {
|
||||||
|
'dependencies': [
|
||||||
|
'webrtc/webrtc_examples.gyp:*',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
['(OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7"))', {
|
||||||
|
'dependencies': [
|
||||||
|
'webrtc/sdk/sdk.gyp:*',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
|
||||||
|
'dependencies': [
|
||||||
|
'talk/app/webrtc/legacy_objc_api.gyp:*',
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['include_tests==1', {
|
||||||
|
'dependencies': [
|
||||||
|
'talk/app/webrtc/legacy_objc_api_tests.gyp:*',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
kjellander@webrtc.org
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Build overrides in GN
|
||||||
|
|
||||||
|
This directory is used to allow us to customize variables that differ between
|
||||||
|
WebRTC being built as standalone and as a part of Chromium.
|
||||||
|
|
||||||
|
There's another build_overrides in Chromium that needs to contain the same
|
||||||
|
set of files with the same set of variables (but with different values).
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Copyright (c) 2016 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.
|
||||||
|
|
||||||
|
# See https://bugs.chromium.org/p/webrtc/issues/detail?id=5453.
|
||||||
|
# Some WebRTC targets require the 10.7 deployment version of the Mac SDK and a
|
||||||
|
# 10.11 min SDK but those targets are only used in non-Chromium builds. We can
|
||||||
|
# remove this when Chromium drops 10.6 support and also requires 10.7.
|
||||||
|
mac_sdk_min_build_override = "10.11"
|
||||||
|
mac_deployment_target_build_override = "10.7"
|
||||||
|
|
||||||
|
# Some non-Chromium builds don't support building java targets.
|
||||||
|
enable_java_templates = true
|
||||||
|
|
||||||
|
# Variable that can be used to support multiple build scenarios, like having
|
||||||
|
# Chromium specific targets in a client project's GN file etc.
|
||||||
|
build_with_chromium = false
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Copyright (c) 2016 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.
|
||||||
|
|
||||||
|
# Include support for registering main function in multi-process tests.
|
||||||
|
gtest_include_multiprocess = true
|
||||||
|
|
||||||
|
# Include support for platform-specific operations across unit tests.
|
||||||
|
gtest_include_platform_test = true
|
||||||
|
|
||||||
|
# Exclude support for testing Objective C code on OS X and iOS.
|
||||||
|
gtest_include_objc_support = true
|
||||||
|
|
||||||
|
# Exclude support for flushing coverage files on iOS.
|
||||||
|
gtest_include_ios_coverage = true
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Copyright (c) 2015 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 overrides to GN variables that applies for the WebRTC
|
||||||
|
# standalone build (i.e. not in Chromium).
|
||||||
|
#
|
||||||
|
# Every variable here needs to be present in the corresponding file in
|
||||||
|
# build_overrides/ of Chromium.
|
||||||
|
|
||||||
|
# The build_with_chromium variable is now located in build.gni (now also used
|
||||||
|
# by BoringSSL).
|
||||||
|
import("//build_overrides/build.gni")
|
||||||
|
|
||||||
|
# Excluded in Chromium since its prerequisites don't require Pulse Audio.
|
||||||
|
rtc_include_pulse_audio = true
|
||||||
|
|
||||||
|
# Chromium uses its own IO handling, so the internal ADM is only built for
|
||||||
|
# standalone WebRTC.
|
||||||
|
rtc_include_internal_audio_device = true
|
||||||
|
|
||||||
|
# There's no point processing WebRTC standalone tests in a Chromium build.
|
||||||
|
rtc_include_tests = true
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright (c) 2014 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.
|
||||||
|
|
||||||
|
"""Checks for legacy root directory and instructs the user how to upgrade."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
SOLUTION_ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
os.pardir)
|
||||||
|
MESSAGE = """\
|
||||||
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
A C T I O N R E Q I R E D
|
||||||
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
|
It looks like you have a legacy checkout where the solution's top-level
|
||||||
|
directory is named 'trunk'. From now on, it must be named 'src'.
|
||||||
|
|
||||||
|
What you need to do is to:
|
||||||
|
|
||||||
|
1. Edit your .gclient file and change the solution name from 'trunk' to 'src'
|
||||||
|
2. Rename your 'trunk' directory to 'src'
|
||||||
|
3. Re-run gclient sync (or gclient runhooks)"""
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
gclient_filename = os.path.join(SOLUTION_ROOT_DIR, '.gclient')
|
||||||
|
config_dict = {}
|
||||||
|
try:
|
||||||
|
with open(gclient_filename, 'rb') as gclient_file:
|
||||||
|
exec(gclient_file, config_dict)
|
||||||
|
for solution in config_dict.get('solutions', []):
|
||||||
|
if solution['name'] == 'trunk':
|
||||||
|
print MESSAGE
|
||||||
|
if solution.get('custom_vars', {}).get('root_dir'):
|
||||||
|
print ('4. Optional: Remove your "root_dir" entry from the '
|
||||||
|
'custom_vars dictionary of the solution.')
|
||||||
|
|
||||||
|
# Remove the gclient cache file to avoid an error on the next sync.
|
||||||
|
entries_file = os.path.join(SOLUTION_ROOT_DIR, '.gclient_entries')
|
||||||
|
if os.path.exists(entries_file):
|
||||||
|
os.unlink(entries_file)
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
except Exception as e:
|
||||||
|
print >> sys.stderr, "Error while parsing .gclient: ", e
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main())
|
|
@ -0,0 +1,23 @@
|
||||||
|
solutions = [{
|
||||||
|
'name': 'src',
|
||||||
|
'url': 'https://chromium.googlesource.com/chromium/src.git',
|
||||||
|
'deps_file': '.DEPS.git',
|
||||||
|
'managed': False,
|
||||||
|
'custom_deps': {
|
||||||
|
# Skip syncing some large dependencies WebRTC will never need.
|
||||||
|
'src/chrome/tools/test/reference_build/chrome_linux': None,
|
||||||
|
'src/chrome/tools/test/reference_build/chrome_mac': None,
|
||||||
|
'src/chrome/tools/test/reference_build/chrome_win': None,
|
||||||
|
'src/native_client': None,
|
||||||
|
'src/third_party/cld_2/src': None,
|
||||||
|
'src/third_party/hunspell_dictionaries': None,
|
||||||
|
'src/third_party/liblouis/src': None,
|
||||||
|
'src/third_party/pdfium': None,
|
||||||
|
'src/third_party/skia': None,
|
||||||
|
'src/third_party/trace-viewer': None,
|
||||||
|
'src/third_party/webrtc': None,
|
||||||
|
},
|
||||||
|
'safesync_url': ''
|
||||||
|
}]
|
||||||
|
|
||||||
|
cache_dir = None
|
|
@ -0,0 +1 @@
|
||||||
|
kjellander@webrtc.org
|
|
@ -0,0 +1,5 @@
|
||||||
|
This .gclient file is used to do download a copy of Chromium.
|
||||||
|
WebRTC uses the Chromium build toolchain and a number of shared
|
||||||
|
dependencies by creating symlinks to folders in this checkout,
|
||||||
|
using the ../setup_links.py script.
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# This file is used by gcl to get repository specific information.
|
||||||
|
CODE_REVIEW_SERVER: codereview.webrtc.org
|
||||||
|
CC_LIST: webrtc-reviews@webrtc.org
|
||||||
|
VIEW_VC: https://chromium.googlesource.com/external/webrtc/+/
|
||||||
|
TRY_ON_UPLOAD: False
|
||||||
|
TRYSERVER_SVN_URL: svn://svn.chromium.org/chrome-try/try-webrtc
|
||||||
|
TRYSERVER_PROJECT: webrtc
|
||||||
|
TRYSERVER_ROOT: src
|
||||||
|
PROJECT: webrtc
|
||||||
|
PENDING_REF_PREFIX: refs/pending/
|
|
@ -0,0 +1 @@
|
||||||
|
kjellander@webrtc.org
|
|
@ -0,0 +1,3 @@
|
||||||
|
set noparent
|
||||||
|
sergiyb@chromium.org
|
||||||
|
kjellander@webrtc.org
|
|
@ -0,0 +1 @@
|
||||||
|
This directory contains configuration files for infra services.
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Commit Queue configuration file. The documentation of the format can be found
|
||||||
|
# at http://luci-config.appspot.com/schemas/projects/refs:cq.cfg.
|
||||||
|
|
||||||
|
version: 1
|
||||||
|
cq_name: "webrtc"
|
||||||
|
cq_status_url: "https://chromium-cq-status.appspot.com"
|
||||||
|
commit_burst_delay: 60
|
||||||
|
max_commit_burst: 1
|
||||||
|
hide_ref_in_committed_msg: true
|
||||||
|
target_ref: "refs/pending/heads/master"
|
||||||
|
|
||||||
|
rietveld {
|
||||||
|
url: "https://codereview.webrtc.org"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
verifiers {
|
||||||
|
reviewer_lgtm {
|
||||||
|
committer_list: "project-webrtc-committers"
|
||||||
|
}
|
||||||
|
|
||||||
|
tree_status {
|
||||||
|
tree_status_url: "https://webrtc-status.appspot.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
try_job {
|
||||||
|
buckets {
|
||||||
|
name: "tryserver.webrtc"
|
||||||
|
builders { name: "android_dbg" }
|
||||||
|
builders { name: "android_rel" }
|
||||||
|
builders { name: "android_arm64_rel" }
|
||||||
|
builders { name: "android_clang_dbg" }
|
||||||
|
builders { name: "android_compile_mips_dbg" }
|
||||||
|
builders { name: "android_compile_x86_dbg" }
|
||||||
|
builders { name: "android_compile_x64_dbg" }
|
||||||
|
builders { name: "android_gn_dbg" }
|
||||||
|
builders { name: "android_gn_rel" }
|
||||||
|
builders { name: "ios_arm64_dbg" }
|
||||||
|
builders { name: "ios_arm64_rel" }
|
||||||
|
builders { name: "ios_dbg" }
|
||||||
|
builders { name: "ios_rel" }
|
||||||
|
builders { name: "ios32_sim_dbg" }
|
||||||
|
builders { name: "ios64_sim_dbg" }
|
||||||
|
builders { name: "ios64_gn_dbg" }
|
||||||
|
builders { name: "ios64_gn_rel" }
|
||||||
|
builders { name: "ios_api_framework" }
|
||||||
|
builders { name: "linux_asan" }
|
||||||
|
builders { name: "linux_baremetal" }
|
||||||
|
builders { name: "linux_compile_dbg" }
|
||||||
|
builders { name: "linux_gn_dbg" }
|
||||||
|
builders { name: "linux_gn_rel" }
|
||||||
|
builders { name: "linux_libfuzzer_rel" }
|
||||||
|
builders { name: "linux_msan" }
|
||||||
|
builders { name: "linux_rel" }
|
||||||
|
builders { name: "linux_tsan2" }
|
||||||
|
builders { name: "linux_ubsan" }
|
||||||
|
builders { name: "linux_ubsan_vptr" }
|
||||||
|
builders { name: "mac_asan" }
|
||||||
|
builders { name: "mac_baremetal" }
|
||||||
|
builders { name: "mac_compile_dbg" }
|
||||||
|
builders { name: "mac_rel" }
|
||||||
|
builders { name: "mac_gn_dbg" }
|
||||||
|
builders { name: "mac_gn_rel" }
|
||||||
|
builders { name: "presubmit" }
|
||||||
|
builders { name: "win_baremetal" }
|
||||||
|
builders { name: "win_clang_dbg" }
|
||||||
|
builders { name: "win_clang_rel" }
|
||||||
|
builders { name: "win_compile_dbg" }
|
||||||
|
builders { name: "win_drmemory_light" }
|
||||||
|
builders { name: "win_rel" }
|
||||||
|
builders { name: "win_x64_clang_dbg" }
|
||||||
|
builders { name: "win_x64_clang_rel" }
|
||||||
|
builders { name: "win_x64_gn_dbg" }
|
||||||
|
builders { name: "win_x64_gn_rel" }
|
||||||
|
builders { name: "win_x64_rel" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
/*
|
||||||
|
* Copyright 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.
|
||||||
|
*/
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
[MESSAGES CONTROL]
|
||||||
|
|
||||||
|
# Disable the message, report, category or checker with the given id(s).
|
||||||
|
# TODO(kjellander): Reduce this list to as small as possible.
|
||||||
|
disable=I0010,I0011,bad-continuation,broad-except,duplicate-code,eval-used,exec-used,fixme,invalid-name,missing-docstring,no-init,no-member,too-few-public-methods,too-many-ancestors,too-many-arguments,too-many-branches,too-many-function-args,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-return-statements,too-many-statements
|
||||||
|
|
||||||
|
|
||||||
|
[REPORTS]
|
||||||
|
|
||||||
|
# Don't write out full reports, just messages.
|
||||||
|
reports=no
|
||||||
|
|
||||||
|
|
||||||
|
[FORMAT]
|
||||||
|
|
||||||
|
# We use two spaces for indents, instead of the usual four spaces or tab.
|
||||||
|
indent-string=' '
|
|
@ -0,0 +1,2 @@
|
||||||
|
*
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
2a4617e3497d8faa2fdccfa8964da26499eb13d6
|
|
@ -0,0 +1 @@
|
||||||
|
8ea680a570df53fba206b984f38d4762481322eb
|
|
@ -0,0 +1 @@
|
||||||
|
44bb846907928e958531e805758767bf9353e03c
|
|
@ -0,0 +1 @@
|
||||||
|
23780ea4c8893813787f7ab1dc7ab68075ad89c0
|
|
@ -0,0 +1 @@
|
||||||
|
57bf2aaa27527d51085e040ccead4b99f160bb2f
|
|
@ -0,0 +1 @@
|
||||||
|
fb7ad10e20f2de4334f8c122c8582f18b91f0552
|
|
@ -0,0 +1 @@
|
||||||
|
730581035d5af832d1b05c8f3a623ec93863b3e3
|
|
@ -0,0 +1 @@
|
||||||
|
c3dde10c32f12da58181ecaccb7aeaa515239233
|
|
@ -0,0 +1 @@
|
||||||
|
80359cff72cbdc04a337a51c2fcc0c74890710b4
|
|
@ -0,0 +1,18 @@
|
||||||
|
Test files for Audio Coding Module
|
||||||
|
|
||||||
|
testfile32kHz.pcm - mono speech file samples at 32 kHz
|
||||||
|
teststereo32kHz.pcm - stereo speech file samples at 32 kHz
|
||||||
|
|
||||||
|
Test and reference vectors to verify correct execution of PacketCable
|
||||||
|
iLBC Fixed Point Reference Code
|
||||||
|
|
||||||
|
Version 1.0.6
|
||||||
|
Format: all .INP and .OUT files contain 16 bit sampled data using the
|
||||||
|
Intel (PC) format. The .BIT files are stored in the appropriate byte
|
||||||
|
sequence (big-endian format).
|
||||||
|
|
||||||
|
*.INP - input files
|
||||||
|
*.BIT20 - bit stream files 20 ms mode
|
||||||
|
*.OUT20 - output files 20 ms mode (on a channel without packet loss)
|
||||||
|
*.BIT30 - bit stream files 30 ms mode
|
||||||
|
*.OUT30 - output files 30 ms mode (on a channel without packet loss)
|
|
@ -0,0 +1 @@
|
||||||
|
7fe50497b4fef1bbaca4bbb4f00c9f069ef63dc0
|
|
@ -0,0 +1 @@
|
||||||
|
77b123a152911b538951cadbee45007f9d1a370c
|
|
@ -0,0 +1 @@
|
||||||
|
21c8f8aaf9518a629d6c6def87fe6ea1305d5c91
|
|
@ -0,0 +1 @@
|
||||||
|
8dd7585937f1f3b17666035a7aec5c0431d4b30b
|
|
@ -0,0 +1 @@
|
||||||
|
89f191b706f8028e52ffd64525de1921eacd772a
|
|
@ -0,0 +1 @@
|
||||||
|
009a3ee778767c2402b1d2c920bc2449265f5a2c
|
|
@ -0,0 +1 @@
|
||||||
|
7e391aede4d688dea3d4f07651672e961ceec466
|
|
@ -0,0 +1 @@
|
||||||
|
ee18ff27c88bf0c6ea392519cf4d68d9bdba1ec1
|
|
@ -0,0 +1 @@
|
||||||
|
21c78516c2470667a75c7ed85fe37c53a3514456
|
|
@ -0,0 +1 @@
|
||||||
|
18e211e4069e5a71ae15758b130c4d0357c4bcca
|
|
@ -0,0 +1 @@
|
||||||
|
7743e75662876c604ba908643938e49cde3d880a
|
|
@ -0,0 +1 @@
|
||||||
|
23d9b291e4ec773ee1d1a6d63e61ca634e95c793
|
|
@ -0,0 +1 @@
|
||||||
|
300f82a1be0cade3651077dda6e84f23996e6110
|
|
@ -0,0 +1 @@
|
||||||
|
10a52dc6d6f15242a1aa549205657f2834353673
|
|
@ -0,0 +1 @@
|
||||||
|
61219028e15606a3adbbc61d393575ab36b4078b
|
|
@ -0,0 +1 @@
|
||||||
|
ba0c6e93a5e6d351d95385699fb9a719b6a6d0cc
|
|
@ -0,0 +1 @@
|
||||||
|
590c6fe033665d11fa70dbbbd3e7d8f0b8a616ce
|
|
@ -0,0 +1 @@
|
||||||
|
3a5a28763e3ad5cd0f2833a90b685f4da97c2002
|
|
@ -0,0 +1 @@
|
||||||
|
7cae05c6902812609fa23ac04037485503b0924d
|
|
@ -0,0 +1 @@
|
||||||
|
b1ea860f0bfad3e86fedc43cd8752821e0d75a46
|
|
@ -0,0 +1 @@
|
||||||
|
49402cfaa36be32320167a65c8e96f70548f5257
|
|
@ -0,0 +1 @@
|
||||||
|
04155a7e186deb7524e3013476de3eaabd59a1f8
|
|
@ -0,0 +1 @@
|
||||||
|
81cb7e547fad2894b5702fa571f9eb55ed6e1096
|
|
@ -0,0 +1 @@
|
||||||
|
81cfcff6b0d70938fe74060ba0303504c31c6d7e
|
|
@ -0,0 +1 @@
|
||||||
|
01278951e13675a3467782e1d2f18273c05eef50
|
|
@ -0,0 +1 @@
|
||||||
|
5fcb4621ea0f50c3fc9a63e4720ff52631258437
|
|
@ -0,0 +1 @@
|
||||||
|
35639dd1b73b678360897975a91a7c8af0be3644
|
|
@ -0,0 +1 @@
|
||||||
|
c9d3d0b81262ffaba7d358ad534e6fcb27c00076
|
|
@ -0,0 +1 @@
|
||||||
|
f46a3380c9285324e583965ef547fcaa1650f8b8
|
|
@ -0,0 +1 @@
|
||||||
|
f625c14d134d69ad38b67295459406fc9947a705
|
|
@ -0,0 +1 @@
|
||||||
|
c26083880cd227178917b4df230520dbfb9b9bb1
|
|
@ -0,0 +1 @@
|
||||||
|
0eaaf21344b4b030d6c0fb6dcc419e7d3959a148
|
|
@ -0,0 +1 @@
|
||||||
|
9781792dc39d7aada6418370246eef9f544ca47b
|
|
@ -0,0 +1 @@
|
||||||
|
8b2bd11b591521178232aae598e6df0d001051c4
|
|
@ -0,0 +1 @@
|
||||||
|
8a6c7ed696f9791f8cb5c5b061f07eb019affd49
|
|
@ -0,0 +1 @@
|
||||||
|
7c01839f888fe6e10276e1819bd5207668345dcf
|
|
@ -0,0 +1 @@
|
||||||
|
f7553df9abca91401715185d97d1d9c20a2ecb9b
|
|
@ -0,0 +1 @@
|
||||||
|
0455d7042c64075e793285753a98f02268e6238b
|
|
@ -0,0 +1 @@
|
||||||
|
941cc5d0bfccfd1d6bd68a1d882975202f22b6de
|
|
@ -0,0 +1 @@
|
||||||
|
a16139b3750a13b62327e2a78ea008493a2b508b
|
|
@ -0,0 +1 @@
|
||||||
|
6bf9272123656bc0561550a40734245709bbac10
|
|
@ -0,0 +1 @@
|
||||||
|
6a2667c6c4b3794776af1dabacc3575791023168
|
|
@ -0,0 +1 @@
|
||||||
|
620cf1f732c99003ff0e5d6ae3350c0a2ea2a9d7
|
|
@ -0,0 +1 @@
|
||||||
|
8b53334fec495185a82a759104240b2c01e449b6
|
|
@ -0,0 +1 @@
|
||||||
|
849f88896b1d00c2625c247e9e06a19d2ae0175c
|
|
@ -0,0 +1 @@
|
||||||
|
6006efc8095f2aa4b30879ec37d5baad261f8ab0
|
|
@ -0,0 +1 @@
|
||||||
|
892d292c1dcd3b5cee5c71d8fa5d21118fbfe3f7
|
|
@ -0,0 +1 @@
|
||||||
|
7e5972e147a7d5e9817b09c8b6c5e93d307032aa
|
|
@ -0,0 +1 @@
|
||||||
|
f143c04d4ab848e97f5bbb19f0799097a0d93c44
|
|
@ -0,0 +1 @@
|
||||||
|
f812b1cfff98da276973e947b1ba177cd462f58a
|
|
@ -0,0 +1 @@
|
||||||
|
69c679d06f275c1bb4a616dc626a9a893d9c11f9
|
|
@ -0,0 +1 @@
|
||||||
|
6f543f892cd3740a3a1366a486a892766d1f0a79
|
|
@ -0,0 +1 @@
|
||||||
|
ce229fea854fbce532fe430b5b5a8c9b5db65d94
|
|
@ -0,0 +1 @@
|
||||||
|
db8cc13114cfe550fefa264ea70427e1fa4f9bba
|
|
@ -0,0 +1 @@
|
||||||
|
7398e204d06b34fcd09533523ec418af9b5caf80
|
|
@ -0,0 +1 @@
|
||||||
|
7d88683e3113fe8174a72800232023756eefce33
|
|
@ -0,0 +1 @@
|
||||||
|
0a1ae77fb59833b6485903912ae57d9e5b08dba8
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue