Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ WEBRTC_BUILD_VERSION=114.5735.08.0
WEBRTC_VERSION=114.5735.08
WEBRTC_READABLE_VERSION=M114.5735@{#7}
WEBRTC_COMMIT=8c9aa75abf1aaa4bd79d5aaa70fc000565b9b564
WEBRTC_LAST_COMMIT_DATE="2024-06-05 23:59:59 +0000"
1 change: 1 addition & 0 deletions build/VERSION.head
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ WEBRTC_BUILD_VERSION=HEAD
WEBRTC_VERSION=HEAD
WEBRTC_READABLE_VERSION=HEAD
WEBRTC_COMMIT=HEAD
WEBRTC_LAST_COMMIT_DATE=""
22 changes: 22 additions & 0 deletions build/patches/windows_add_192k.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
diff --git a/modules/audio_device/win/audio_device_core_win.cc b/modules/audio_device/win/audio_device_core_win.cc
index f1cc0474fc..34eeaacc39 100644
--- a/modules/audio_device/win/audio_device_core_win.cc
+++ b/modules/audio_device/win/audio_device_core_win.cc
@@ -1881,7 +1881,7 @@ int32_t AudioDeviceWindowsCore::InitPlayout() {
Wfx.wBitsPerSample = 16;
Wfx.cbSize = 0;

- const int freqs[] = {48000, 44100, 16000, 96000, 32000, 8000};
+ const int freqs[] = {48000, 44100, 16000, 96000, 32000, 8000, 192000};
hr = S_FALSE;

// Iterate over frequencies and channels, in order of priority
@@ -2201,7 +2201,7 @@ int32_t AudioDeviceWindowsCore::InitRecording() {
Wfx.Samples.wValidBitsPerSample = Wfx.Format.wBitsPerSample;
Wfx.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;

- const int freqs[6] = {48000, 44100, 16000, 96000, 32000, 8000};
+ const int freqs[] = {48000, 44100, 16000, 96000, 32000, 8000, 192000};
hr = S_FALSE;

// Iterate over frequencies and channels, in order of priority
101 changes: 64 additions & 37 deletions build/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,25 @@ def enum_all_files(dir, dir2):
yield os.path.relpath(os.path.join(root, file), dir2)


def get_depot_tools(source_dir, fetch=False):
def get_depot_tools(source_dir, fetch=False, date=''):
dir = os.path.join(source_dir, 'depot_tools')
if os.path.exists(dir):
if fetch:
cmd(['git', 'fetch'])
cmd(['git', 'checkout', '-f', 'origin/HEAD'])
cmd(['git', 'fetch'], cwd=dir)
if date != '':
before = '--before="' + date + '"'
commit = cmdcap(['git', 'rev-list', '--all', '--max-count=1', before], cwd=dir)
cmd(['git', 'checkout', '-f', commit], cwd=dir)
cmd(['python3', os.path.join(dir, 'update_depot_tools_toggle.py'), '--disable'], cwd=dir)
else:
cmd(['git', 'checkout', '-f', 'origin/HEAD'], cwd=dir)
else:
cmd(['git', 'clone', 'https://chromium.googlesource.com/chromium/tools/depot_tools.git', dir])
if date != '':
before = '--before="' + date + '"'
commit = cmdcap(['git', 'rev-list', '--all', '--max-count=1', before], cwd=dir)
cmd(['git', 'checkout', '-f', commit], cwd=dir)
cmd(['python3', os.path.join(dir, 'update_depot_tools_toggle.py'), '--disable'], cwd=dir)
return dir


Expand All @@ -187,6 +198,7 @@ def get_depot_tools(source_dir, fetch=False):
'bug_8759_workaround.patch',
'msvc-checks-template.patch',
'disable_mute_of_audio_processing.patch',
'windows_add_192k.patch',
'crash_on_fatal_error.patch',
],
'windows_x86': [
Expand All @@ -199,6 +211,7 @@ def get_depot_tools(source_dir, fetch=False):
'bug_8759_workaround.patch',
'msvc-checks-template.patch',
'disable_mute_of_audio_processing.patch',
'windows_add_192k.patch',
'crash_on_fatal_error.patch',
],
'windows_arm64': [
Expand All @@ -211,6 +224,7 @@ def get_depot_tools(source_dir, fetch=False):
'bug_8759_workaround.patch',
'msvc-checks-template.patch'
'disable_mute_of_audio_processing.patch',
'windows_add_192k.patch',
'crash_on_fatal_error.patch',
],
'macos_x86_64': [
Expand Down Expand Up @@ -349,7 +363,6 @@ def get_webrtc(source_dir, patch_dir, version, target,

if not os.path.exists(os.path.join(webrtc_source_dir, 'src')):
with cd(webrtc_source_dir):
cmd(['gclient'])
shutil.copyfile(os.path.join(BASE_DIR, '.gclient'), '.gclient')
cmd(['git', 'clone', 'https://github.com/webrtc-sdk/webrtc.git', 'src'])
if target in ['android', 'android_prefixed']:
Expand Down Expand Up @@ -377,6 +390,10 @@ def get_webrtc(source_dir, patch_dir, version, target,
depth, dirs = PATCH_INFO.get(patch, (1, ['.']))
dir = os.path.join(src_dir, *dirs)
apply_patch(os.path.join(patch_dir, patch), dir, depth)
try:
cmd(['ensure_bootstrap'])
except:
print('Ignore any failure to complete ensure_bootstrap, please (it is just used to import a Python3 venv)')


def git_get_url_and_revision(dir):
Expand All @@ -390,6 +407,7 @@ def git_get_url_and_revision(dir):
'webrtc_version',
'webrtc_commit',
'webrtc_build_version',
'webrtc_last_commit_date',
])


Expand All @@ -400,6 +418,10 @@ def archive_objects(ar, dir, output):
print(files)
rm_rf(output)
cmd([ar, '-rcs', output, *files])
# Create a sorted index of the *native object modules* for the library,
# which is unlike 'llvm-ar -s' and is needed to link it against shared
# libraries with most linkers. HB
cmd(['ranlib', output])


MultistrapConfig = collections.namedtuple('MultistrapConfig', [
Expand All @@ -418,21 +440,6 @@ def archive_objects(ar, dir, output):
arch='armhf',
triplet='arm-linux-gnueabihf'
),
'raspberry-pi-os_armv8': MultistrapConfig(
config_file=['raspberry-pi-os_armv8', 'rpi-raspbian.conf'],
arch='arm64',
triplet='aarch64-linux-gnu'
),
'ubuntu-18.04_armv8': MultistrapConfig(
config_file=['ubuntu-18.04_armv8', 'arm64.conf'],
arch='arm64',
triplet='aarch64-linux-gnu'
),
'ubuntu-20.04_armv8': MultistrapConfig(
config_file=['ubuntu-20.04_armv8', 'arm64.conf'],
arch='arm64',
triplet='aarch64-linux-gnu'
),
}


Expand Down Expand Up @@ -464,13 +471,14 @@ def init_rootfs(sysroot: str, config: MultistrapConfig, force=False):


COMMON_GN_ARGS = [
"rtc_use_h264=false",
"is_component_build=false",
'rtc_use_h264=false',
'is_component_build=false',
'rtc_build_examples=false',
"use_rtti=true",
'use_rtti=true',
'use_thin_lto=false',
'rtc_build_tools=false',
"rtc_enable_protobuf=false",
"treat_warnings_as_errors=false",
'rtc_enable_protobuf=false',
'treat_warnings_as_errors=false',
]

WEBRTC_BUILD_TARGETS_MACOS_COMMON = [
Expand All @@ -492,8 +500,11 @@ def init_rootfs(sysroot: str, config: MultistrapConfig, force=False):

def get_build_targets(target):
ts = [':default']
if target not in ('windows_x86_64', 'windows_x86', 'windows_arm64', 'ios', 'macos_x86_64', 'macos_arm64', 'ubuntu-18.04_x86_64', 'ubuntu-20.04_x86_64', 'ubuntu-22.04_x86_64'):
ts += ['buildtools/third_party/libc++']
# Linux arm targets shall also be excluded, and since even macOS targets
# are excluded below (strange: the viewer is compiled against libc++ under
# macOS...), then no target needs libc++ ! HB
#if target not in ('windows_x86_64', 'windows_x86', 'windows_arm64', 'ios', 'macos_x86_64', 'macos_arm64', 'ubuntu-18.04_x86_64', 'ubuntu-20.04_x86_64', 'ubuntu-22.04_x86_64'):
# ts += ['buildtools/third_party/libc++']
ts += WEBRTC_BUILD_TARGETS.get(target, [])
return ts

Expand Down Expand Up @@ -768,15 +779,11 @@ def build_webrtc(
'use_lld=false',
]
elif target in ('raspberry-pi-os_armv6',
'raspberry-pi-os_armv7',
'raspberry-pi-os_armv8',
'ubuntu-18.04_armv8',
'ubuntu-20.04_armv8'):
'raspberry-pi-os_armv7'):
sysroot = os.path.join(source_dir, 'rootfs')
arm64_set = ("raspberry-pi-os_armv8", "ubuntu-18.04_armv8", "ubuntu-20.04_armv8")
gn_args += [
'target_os="linux"',
f'target_cpu="{"arm64" if target in arm64_set else "arm"}"',
'target_cpu="arm"',
f'target_sysroot="{sysroot}"',
'rtc_use_pipewire=false',
]
Expand All @@ -790,12 +797,28 @@ def build_webrtc(
'arm_use_neon=false',
'enable_libaom=false',
]
elif target in ('ubuntu-18.04_x86_64', 'ubuntu-20.04_x86_64', 'ubuntu-22.04_x86_64'):
elif target in ('raspberry-pi-os_armv8',
'ubuntu-18.04_armv8',
'ubuntu-20.04_armv8'):
gn_args += [
'host_os="linux"',
'target_os="linux"',
'host_cpu="arm64"',
'target_cpu="arm64"',
'use_custom_libcxx=false',
'use_custom_libcxx_for_host=false',
'rtc_use_pipewire=false',
'rtc_include_pulse_audio=false',
'rtc_include_internal_audio_device=true',
]
elif target in ('ubuntu-18.04_x86_64', 'ubuntu-20.04_x86_64', 'ubuntu-22.04_x86_64'):
gn_args += [
'host_os="linux"',
'target_os="linux"',
'target_cpu="x64"',
"use_custom_libcxx=false",
"use_custom_libcxx_for_host=false",
'rtc_use_pipewire=false',
'rtc_include_pulse_audio=false',
'rtc_include_internal_audio_device=true',
]
Expand Down Expand Up @@ -1147,8 +1170,11 @@ def main():
if not hasattr(args, 'op'):
parser.error('Required subcommand')

if not check_target(args.target):
raise Exception(f'Target {args.target} is not supported on your platform')
# Do not error out when the Linux distribution used to build the library is
# not known from the build system: we do not care since we use a virtual
# environment for the build... HB
#if not check_target(args.target):
# raise Exception(f'Target {args.target} is not supported on your platform')

configuration = 'debug' if args.debug else 'release'

Expand Down Expand Up @@ -1194,7 +1220,8 @@ def main():
version_info = VersionInfo(
webrtc_version=version_file['WEBRTC_VERSION'],
webrtc_commit=version_file['WEBRTC_COMMIT'],
webrtc_build_version=version_file['WEBRTC_BUILD_VERSION'])
webrtc_build_version=version_file['WEBRTC_BUILD_VERSION'],
webrtc_last_commit_date=version_file['WEBRTC_LAST_COMMIT_DATE'])

if args.op == 'build':
mkdir_p(source_dir)
Expand All @@ -1205,7 +1232,7 @@ def main():
sysroot = os.path.join(source_dir, 'rootfs')
init_rootfs(sysroot, MULTISTRAP_CONFIGS[args.target], args.rootfs_fetch_force)

dir = get_depot_tools(source_dir, fetch=args.depottools_fetch)
dir = get_depot_tools(source_dir, fetch=args.depottools_fetch, date=version_info.webrtc_last_commit_date)
add_path(dir)
if args.target in ['windows_x86_64', 'windows_x86', 'windows_arm64']:
cmd(['git', 'config', '--global', 'core.longpaths', 'true'])
Expand Down