mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
433 lines
11 KiB
Plaintext
433 lines
11 KiB
Plaintext
|
# Copyright 2014 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.
|
||
|
|
||
|
import("//build/buildflag_header.gni")
|
||
|
import("//build/config/android/config.gni")
|
||
|
import("//build/config/arm.gni")
|
||
|
import("//build/config/features.gni")
|
||
|
import("//build/config/linux/pkg_config.gni")
|
||
|
import("//build/config/ui.gni")
|
||
|
import("//media/media_options.gni")
|
||
|
import("//testing/libfuzzer/fuzzer_test.gni")
|
||
|
import("//testing/test.gni")
|
||
|
import("//third_party/ffmpeg/ffmpeg_options.gni")
|
||
|
|
||
|
buildflag_header("media_buildflags") {
|
||
|
header = "media_buildflags.h"
|
||
|
|
||
|
flags = [
|
||
|
"ALTERNATE_CDM_STORAGE_ID_KEY=$alternate_cdm_storage_id_key",
|
||
|
"ENABLE_AC3_EAC3_AUDIO_DEMUXING=$enable_ac3_eac3_audio_demuxing",
|
||
|
"ENABLE_CBCS_ENCRYPTION_SCHEME=$enable_cbcs_encryption_scheme",
|
||
|
"ENABLE_CDM_HOST_VERIFICATION=$enable_cdm_host_verification",
|
||
|
"ENABLE_HEVC_DEMUXING=$enable_hevc_demuxing",
|
||
|
"ENABLE_DOLBY_VISION_DEMUXING=$enable_dolby_vision_demuxing",
|
||
|
"ENABLE_FFMPEG=$media_use_ffmpeg",
|
||
|
"ENABLE_FFMPEG_VIDEO_DECODERS=$enable_ffmpeg_video_decoders",
|
||
|
"ENABLE_HLS_SAMPLE_AES=$enable_hls_sample_aes",
|
||
|
"ENABLE_LIBRARY_CDMS=$enable_library_cdms",
|
||
|
"ENABLE_LIBVPX=$media_use_libvpx",
|
||
|
"ENABLE_MSE_MPEG2TS_STREAM_PARSER=$enable_mse_mpeg2ts_stream_parser",
|
||
|
"ENABLE_MPEG_H_AUDIO_DEMUXING=$enable_mpeg_h_audio_demuxing",
|
||
|
"ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION=$enable_runtime_media_renderer_selection",
|
||
|
"ENABLE_CDM_STORAGE_ID=$enable_cdm_storage_id",
|
||
|
"ENABLE_MEDIA_REMOTING=$enable_media_remoting",
|
||
|
"ENABLE_MEDIA_REMOTING_RPC=$enable_media_remoting_rpc",
|
||
|
"USE_PROPRIETARY_CODECS=$proprietary_codecs",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
if (proprietary_codecs && media_use_ffmpeg) {
|
||
|
assert(
|
||
|
ffmpeg_branding != "Chromium",
|
||
|
"proprietary codecs and ffmpeg_branding set to Chromium are incompatible")
|
||
|
}
|
||
|
|
||
|
# Common configuration for targets in the media directory; these must not be
|
||
|
# exported since things like USE_NEON and USE_CRAS have different meanings
|
||
|
# elsewhere in the code base.
|
||
|
config("media_config") {
|
||
|
defines = []
|
||
|
if (current_cpu == "arm64" || (current_cpu == "arm" && arm_use_neon)) {
|
||
|
defines += [ "USE_NEON" ]
|
||
|
}
|
||
|
if (use_pulseaudio) {
|
||
|
defines += [ "USE_PULSEAUDIO" ]
|
||
|
if (!link_pulseaudio) {
|
||
|
defines += [ "DLOPEN_PULSEAUDIO" ]
|
||
|
}
|
||
|
}
|
||
|
if (use_cras) {
|
||
|
defines += [ "USE_CRAS" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Internal grouping of the configs necessary to support sub-folders having their
|
||
|
# own BUILD.gn files; only targets which roll up into the "media" target should
|
||
|
# include this config. I.e., not "test_support" or "unit_tests" targets.
|
||
|
#
|
||
|
# Without these configs having individual sub-folders take a //media/base DEP
|
||
|
# (or others) can yield incorrectly imported and exported symbols on Windows:
|
||
|
#
|
||
|
# fatal error LNK1169: one or more multiply defined symbols found.
|
||
|
#
|
||
|
config("subcomponent_config") {
|
||
|
visibility = media_subcomponent_deps
|
||
|
if (is_mac) {
|
||
|
visibility += [ "//media/base/mac" ]
|
||
|
}
|
||
|
defines = [ "MEDIA_IMPLEMENTATION" ]
|
||
|
configs = [ ":media_config" ]
|
||
|
}
|
||
|
|
||
|
component("media") {
|
||
|
libs = []
|
||
|
|
||
|
deps = [
|
||
|
"//base",
|
||
|
"//base:i18n",
|
||
|
"//base/third_party/dynamic_annotations",
|
||
|
"//cc/paint",
|
||
|
"//crypto:platform",
|
||
|
"//gpu/command_buffer/client:gles2_interface",
|
||
|
"//gpu/command_buffer/common",
|
||
|
"//third_party/libyuv",
|
||
|
"//ui/events:events_base",
|
||
|
"//ui/gfx",
|
||
|
"//ui/gfx/geometry",
|
||
|
"//ui/gl:gl",
|
||
|
"//url",
|
||
|
]
|
||
|
|
||
|
public_configs = [ "//third_party/libwebm:libwebm_config" ]
|
||
|
public_deps = media_subcomponent_deps
|
||
|
public_deps += [
|
||
|
":media_buildflags",
|
||
|
":shared_memory_support",
|
||
|
"//ui/gfx:color_space",
|
||
|
]
|
||
|
|
||
|
# This must be included here since it actually depends on //media/base.
|
||
|
if (is_mac || is_ios) {
|
||
|
public_deps += [ "//media/base/mac" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Note: This can't be a static_library since it does not have any sources.
|
||
|
source_set("test_support") {
|
||
|
testonly = true
|
||
|
public_deps = [
|
||
|
":media",
|
||
|
"//media/audio:test_support",
|
||
|
"//media/base:test_support",
|
||
|
"//media/base/android:test_support",
|
||
|
"//media/filters:test_support",
|
||
|
"//media/formats:test_support",
|
||
|
"//media/gpu:test_support",
|
||
|
"//media/video:test_support",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Contains tests for all targets in the "media" folder.
|
||
|
# TODO(xhwang): Move mojo/capture/remoting tests here where applicable.
|
||
|
test("media_unittests") {
|
||
|
deps = [
|
||
|
"//media/audio:unit_tests",
|
||
|
"//media/base:unit_tests",
|
||
|
"//media/capabilities:unit_tests",
|
||
|
"//media/cdm:unit_tests",
|
||
|
"//media/device_monitors:unit_tests",
|
||
|
"//media/filters:unit_tests",
|
||
|
"//media/formats:unit_tests",
|
||
|
"//media/gpu:unit_tests",
|
||
|
"//media/mojo:unit_tests",
|
||
|
"//media/muxers:unit_tests",
|
||
|
"//media/renderers:unit_tests",
|
||
|
"//media/test:pipeline_integration_tests",
|
||
|
"//media/test:run_all_unittests",
|
||
|
"//media/video:unit_tests",
|
||
|
]
|
||
|
|
||
|
data = [
|
||
|
"test/data/",
|
||
|
]
|
||
|
|
||
|
data_deps = []
|
||
|
|
||
|
if (media_use_ffmpeg) {
|
||
|
deps += [ "//media/ffmpeg:unit_tests" ]
|
||
|
}
|
||
|
|
||
|
if (is_android) {
|
||
|
deps += [
|
||
|
# The test needs the java dependencies to add the java classes for their
|
||
|
# native counterparts to the test apk.
|
||
|
"//media/base/android:media_java",
|
||
|
"//media/base/android:unit_tests",
|
||
|
"//media/gpu:android_video_decode_accelerator_unittests",
|
||
|
"//ui/android:ui_java",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
if (enable_media_remoting) {
|
||
|
deps += [ "//media/remoting:media_remoting_tests" ]
|
||
|
}
|
||
|
|
||
|
# The test needs OPUS_FIXED_POINT conditional define.
|
||
|
configs += [ "//third_party/opus:opus_config" ]
|
||
|
}
|
||
|
|
||
|
test("media_perftests") {
|
||
|
configs += [ ":media_config" ]
|
||
|
deps = [
|
||
|
":test_support",
|
||
|
"//base/test:test_support",
|
||
|
"//media/base:perftests",
|
||
|
"//media/filters:perftests",
|
||
|
"//media/test:pipeline_integration_perftests",
|
||
|
"//testing/gmock",
|
||
|
"//testing/gtest",
|
||
|
"//testing/perf",
|
||
|
"//third_party/widevine/cdm:headers",
|
||
|
"//ui/gfx:test_support",
|
||
|
]
|
||
|
if (media_use_ffmpeg) {
|
||
|
# Direct dependency required to inherit config.
|
||
|
deps += [ "//third_party/ffmpeg" ]
|
||
|
}
|
||
|
|
||
|
# This target should not require the Chrome executable to run.
|
||
|
assert_no_deps = [ "//chrome" ]
|
||
|
|
||
|
data = [
|
||
|
"test/data/",
|
||
|
]
|
||
|
|
||
|
data_deps = [
|
||
|
# Needed for isolate script to execute.
|
||
|
"//testing:run_perf_test",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# The audio subset of media_unittests. This target exists for running only the
|
||
|
# audio tests on the GPU bots (which have audio hardware).
|
||
|
test("audio_unittests") {
|
||
|
deps = [
|
||
|
":test_support",
|
||
|
"//base/test:test_support",
|
||
|
"//media/audio:unit_tests",
|
||
|
"//media/test:run_all_unittests",
|
||
|
]
|
||
|
if (is_android) {
|
||
|
deps += [
|
||
|
# The test needs the java dependencies to add the java classes for their
|
||
|
# native counterparts to the test apk.
|
||
|
"//media/base/android:media_java",
|
||
|
"//ui/android:ui_java",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Note: Most external components should just depend on //media unless they
|
||
|
# specifically need this pared own target (NaCl, PPAPI, etc). Internal targets
|
||
|
# should just depend on //media/base which will propagate this target to them.
|
||
|
component("shared_memory_support") {
|
||
|
sources = [
|
||
|
"base/audio_bus.cc",
|
||
|
"base/audio_bus.h",
|
||
|
"base/audio_latency.cc",
|
||
|
"base/audio_latency.h",
|
||
|
"base/audio_parameters.cc",
|
||
|
"base/audio_parameters.h",
|
||
|
"base/audio_point.cc",
|
||
|
"base/audio_point.h",
|
||
|
"base/audio_sample_types.h",
|
||
|
"base/channel_layout.cc",
|
||
|
"base/channel_layout.h",
|
||
|
"base/limits.h",
|
||
|
"base/media_shmem_export.h",
|
||
|
"base/sample_format.cc",
|
||
|
"base/sample_format.h",
|
||
|
"base/vector_math.cc",
|
||
|
"base/vector_math.h",
|
||
|
"base/vector_math_testing.h",
|
||
|
]
|
||
|
if (is_mac) {
|
||
|
# These need to be included here because audio_latency.cc depends on them.
|
||
|
sources += [
|
||
|
"base/mac/audio_latency_mac.cc",
|
||
|
"base/mac/audio_latency_mac.h",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Do not use "subcomponent_config" here since these files are in their own
|
||
|
# component target and thus can't share the standard export macros.
|
||
|
configs += [ ":media_config" ]
|
||
|
defines = [ "MEDIA_SHMEM_IMPLEMENTATION" ]
|
||
|
|
||
|
if (!is_debug) {
|
||
|
configs -= [ "//build/config/compiler:default_optimization" ]
|
||
|
configs += [ "//build/config/compiler:optimize_max" ]
|
||
|
}
|
||
|
deps = [
|
||
|
"//base",
|
||
|
"//ui/gfx/geometry",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# TODO(watk): Refactor tests that could be made to run on Android. See
|
||
|
# http://crbug.com/570762
|
||
|
if (media_use_ffmpeg && !is_android) {
|
||
|
test("ffmpeg_regression_tests") {
|
||
|
configs += [ "//media:media_config" ]
|
||
|
|
||
|
deps = [
|
||
|
":test_support",
|
||
|
"//base/test:test_support",
|
||
|
"//media/ffmpeg:ffmpeg_regression_tests",
|
||
|
"//media/test:pipeline_integration_tests",
|
||
|
"//media/test:run_all_unittests",
|
||
|
"//testing/gmock",
|
||
|
"//testing/gtest",
|
||
|
"//ui/gfx:test_support",
|
||
|
"//ui/gfx/geometry",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (proprietary_codecs) {
|
||
|
fuzzer_test("media_cenc_utils_fuzzer") {
|
||
|
sources = [
|
||
|
"cdm/cenc_utils_fuzzertest.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_vp8_parser_fuzzer") {
|
||
|
sources = [
|
||
|
"filters/vp8_parser_fuzzertest.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":test_support",
|
||
|
"//base",
|
||
|
]
|
||
|
libfuzzer_options = [ "max_len = 400000" ]
|
||
|
dict = "test/vp8.dict"
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_vp9_parser_fuzzer") {
|
||
|
sources = [
|
||
|
"filters/vp9_parser_fuzzertest.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":test_support",
|
||
|
"//base",
|
||
|
]
|
||
|
libfuzzer_options = [ "max_len = 400000" ]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_vpx_video_decoder_fuzzer") {
|
||
|
sources = [
|
||
|
"filters/vpx_video_decoder_fuzzertest.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
libfuzzer_options = [ "max_len = 400000" ]
|
||
|
seed_corpus = "//media/test/data"
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_webm_muxer_fuzzer") {
|
||
|
sources = [
|
||
|
"muxers/webm_muxer_fuzzertest.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
"//third_party/libwebm",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("cbcs_decryptor_fuzzer") {
|
||
|
sources = [
|
||
|
"cdm/cbcs_decryptor_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
"//crypto",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("cenc_decryptor_fuzzer") {
|
||
|
sources = [
|
||
|
"cdm/cenc_decryptor_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
"//crypto",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
if (proprietary_codecs) {
|
||
|
fuzzer_test("media_mp4_avcc_parser_fuzzer") {
|
||
|
sources = [
|
||
|
"formats/mp4/mp4_avcc_parser_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_mp4_box_reader_fuzzer") {
|
||
|
sources = [
|
||
|
"formats/mp4/mp4_box_reader_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
libfuzzer_options = [ "max_len=500" ]
|
||
|
dict = "test/mp4.dict"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (enable_mse_mpeg2ts_stream_parser) {
|
||
|
fuzzer_test("media_es_parser_adts_fuzzer") {
|
||
|
sources = [
|
||
|
"formats/mp2t/es_parser_adts_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_es_parser_h264_fuzzer") {
|
||
|
sources = [
|
||
|
"formats/mp2t/es_parser_h264_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fuzzer_test("media_es_parser_mpeg1audio_fuzzer") {
|
||
|
sources = [
|
||
|
"formats/mp2t/es_parser_mpeg1audio_fuzzer.cc",
|
||
|
]
|
||
|
deps = [
|
||
|
":media",
|
||
|
"//base",
|
||
|
]
|
||
|
}
|
||
|
}
|