diff --git a/.gitignore b/.gitignore index 2104635e82..bf937369ae 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,7 @@ /tools_webrtc/audio_quality/win/*.exe /tools_webrtc/audio_quality/win/*.dll /tools_webrtc/video_quality_toolchain/linux/ffmpeg +/tools_webrtc/video_quality_toolchain/linux/frame_analyzer /tools_webrtc/video_quality_toolchain/linux/zxing /tools_webrtc/video_quality_toolchain/mac/ffmpeg /tools_webrtc/video_quality_toolchain/mac/zxing diff --git a/examples/BUILD.gn b/examples/BUILD.gn index efd4e798c6..05ddef876a 100644 --- a/examples/BUILD.gn +++ b/examples/BUILD.gn @@ -154,31 +154,6 @@ if (is_android) { ] } - group("video_quality_loopback_test") { - testonly = true - - deps = [ - ":AppRTCMobile_stubbed_video_io_test_apk", - "../rtc_tools:frame_analyzer_host", - ] - - data = [ - "../build/android/adb_reverse_forwarder.py", - "../examples/androidtests/video_quality_loopback_test.py", - "../resources/reference_video_640x360_30fps.y4m", - "../rtc_tools/barcode_tools/barcode_decoder.py", - "../rtc_tools/barcode_tools/helper_functions.py", - "../rtc_tools/compare_videos.py", - "../rtc_tools/testing/prebuilt_apprtc.zip", - "../rtc_tools/testing/golang/linux/go.tar.gz", - "../rtc_tools/testing/build_apprtc.py", - "../rtc_tools/testing/utils.py", - "../tools_webrtc/video_quality_toolchain/linux/ffmpeg", - "../tools_webrtc/video_quality_toolchain/linux/zxing", - "${root_out_dir}/frame_analyzer_host", - ] - } - rtc_instrumentation_test_apk("AppRTCMobile_stubbed_video_io_test_apk") { apk_name = "AppRTCMobileTestStubbedVideoIO" android_manifest = "androidtests/AndroidManifest.xml" @@ -196,6 +171,22 @@ if (is_android) { "//third_party/hamcrest:hamcrest_java", "//third_party/junit", ] + + data = [ + "../build/android/adb_reverse_forwarder.py", + "../examples/androidtests/video_quality_loopback_test.py", + "../resources/reference_video_640x360_30fps.y4m", + "../rtc_tools/barcode_tools/barcode_decoder.py", + "../rtc_tools/barcode_tools/helper_functions.py", + "../rtc_tools/compare_videos.py", + "../rtc_tools/testing/prebuilt_apprtc.zip", + "../rtc_tools/testing/golang/linux/go.tar.gz", + "../rtc_tools/testing/build_apprtc.py", + "../rtc_tools/testing/utils.py", + "../tools_webrtc/video_quality_toolchain/linux/ffmpeg", + "../tools_webrtc/video_quality_toolchain/linux/frame_analyzer", + "../tools_webrtc/video_quality_toolchain/linux/zxing", + ] } } diff --git a/examples/androidtests/video_quality_loopback_test.py b/examples/androidtests/video_quality_loopback_test.py index a74acf177a..225f885273 100755 --- a/examples/androidtests/video_quality_loopback_test.py +++ b/examples/androidtests/video_quality_loopback_test.py @@ -81,6 +81,8 @@ def _ParseArgs(): parser = argparse.ArgumentParser(description='Start loopback video analysis.') parser.add_argument('build_dir_android', help='The path to the build directory for Android.') + parser.add_argument('--build_dir_x86', + help='The path to the build directory for building locally.') parser.add_argument('--temp_dir', help='A temporary directory to put the output.') parser.add_argument('--adb-path', help='Path to adb binary.', default='adb') @@ -190,7 +192,7 @@ def RunTest(android_device, adb_path, build_dir, temp_dir, num_retries, # Run comparison script. compare_script = os.path.join(SRC_DIR, 'rtc_tools', 'compare_videos.py') - frame_analyzer = os.path.join(build_dir, 'frame_analyzer_host') + frame_analyzer = os.path.join(TOOLCHAIN_DIR, 'frame_analyzer') zxing_path = os.path.join(TOOLCHAIN_DIR, 'zxing') stats_file_ref = os.path.join(temp_dir, 'stats_ref.txt') stats_file_test = os.path.join(temp_dir, 'stats_test.txt') @@ -239,3 +241,4 @@ def main(): if __name__ == '__main__': sys.exit(main()) + diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index dcee868856..e84d0030d5 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -107,17 +107,6 @@ rtc_executable("frame_analyzer") { ] } -action("frame_analyzer_host") { - script = "//tools_webrtc/executable_host_build.py" - outputs = [ - "${root_out_dir}/frame_analyzer_host", - ] - args = [ - "--executable_name", - "frame_analyzer", - ] -} - # Only expose the targets needed by Chromium (e.g. frame_analyzer) to avoid # building a lot of redundant code as part of Chromium builds. if (!build_with_chromium) { diff --git a/tools_webrtc/executable_host_build.py b/tools_webrtc/executable_host_build.py deleted file mode 100644 index cc1e7ee59e..0000000000 --- a/tools_webrtc/executable_host_build.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env/python - -# Copyright (c) 2018 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 script builds a GN executable targeting the host machine. - -It is useful, for example, for mobile devices performance testing where -it makes sense to build WebRTC for a mobile platform (e.g. Android) but -part of the test is performed on the host machine (e.g. running an -executable to analyze a video downloaded from a device). - -The script has only one (mandatory) option: --executable_name, which is -the output name of the GN executable. For example, if you have the -following executable in your out folder: - - out/Debug/random_exec - -You will be able to compile the same executable targeting your host machine -by running: - - $ python tools_webrtc/executable_host_build.py --executable_name random_exec - -The generated executable will have the same name as the input executable with -suffix '_host'. - -This script should not be used standalone but from GN, through an action: - - action("random_exec_host") { - script = "//tools_webrtc/executable_host_build.py" - outputs = [ - "${root_out_dir}/random_exec_host", - ] - args = [ - "--executable_name", - "random_exec", - ] - } - -The executable for the host machine will be generated in the GN out directory -(e.g. out/Debug in the previous example). -""" - -from contextlib import contextmanager - -import argparse -import os -import shutil -import subprocess -import sys -import tempfile - - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir)) -sys.path.append(os.path.join(SRC_DIR, 'build')) -import find_depot_tools - - -def _ParseArgs(): - desc = 'Generates a GN executable targeting the host machine.' - parser = argparse.ArgumentParser(description=desc) - parser.add_argument('--executable_name', - required=True, - help='Name of the executable to build') - args = parser.parse_args() - return args - - -@contextmanager -def HostBuildDir(): - temp_dir = tempfile.mkdtemp() - try: - yield temp_dir - finally: - shutil.rmtree(temp_dir) - - -def _RunCommand(argv, cwd=SRC_DIR, **kwargs): - with open(os.devnull, 'w') as devnull: - subprocess.check_call(argv, cwd=cwd, stdout=devnull, **kwargs) - - -def DepotToolPath(*args): - return os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, *args) - - -if __name__ == '__main__': - ARGS = _ParseArgs() - EXECUTABLE_TO_BUILD = ARGS.executable_name - EXECUTABLE_FINAL_NAME = ARGS.executable_name + '_host' - with HostBuildDir() as build_dir: - _RunCommand([sys.executable, DepotToolPath('gn.py'), 'gen', build_dir]) - _RunCommand([DepotToolPath('ninja'), '-C', build_dir, EXECUTABLE_TO_BUILD]) - shutil.copy(os.path.join(build_dir, EXECUTABLE_TO_BUILD), - EXECUTABLE_FINAL_NAME) diff --git a/tools_webrtc/mb/gn_isolate_map.pyl b/tools_webrtc/mb/gn_isolate_map.pyl index fecc56c38e..479c5eae79 100644 --- a/tools_webrtc/mb/gn_isolate_map.pyl +++ b/tools_webrtc/mb/gn_isolate_map.pyl @@ -129,7 +129,7 @@ "type": "console_test_launcher", }, "video_quality_loopback_test": { - "label": "//examples:video_quality_loopback_test", + "label": "//examples:AppRTCMobile_stubbed_video_io_test_apk", "type": "script", "script": "//examples/androidtests/video_quality_loopback_test.py", "args": ["."], diff --git a/tools_webrtc/video_quality_toolchain/linux/frame_analyzer.sha1 b/tools_webrtc/video_quality_toolchain/linux/frame_analyzer.sha1 new file mode 100644 index 0000000000..9f7d4e9f74 --- /dev/null +++ b/tools_webrtc/video_quality_toolchain/linux/frame_analyzer.sha1 @@ -0,0 +1 @@ +fe3e1e5253a1a49277e3ec9c0699ccf059cd8601 \ No newline at end of file