-# Copyright 2014 The Chromium Authors. All rights reserved.
+# Copyright 2014 The Chromium Authors
# 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/chromecast_build.gni")
import("//build/config/features.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/config/ui.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")
import("//third_party/ffmpeg/ffmpeg_options.gni")
-if (use_efl) {
- import("//tizen_src/chromium_impl/media/media_efl.gni")
+import("//tizen_src/chromium_impl/media/media_efl.gni")
+
+if (enable_library_cdms) {
+ import("//media/cdm/library_cdm/cdm_paths.gni")
+}
+
+if (is_ios) {
+ import("//build/config/ios/bundle_data_from_filelist.gni")
}
buildflag_header("media_buildflags") {
header = "media_buildflags.h"
+ enable_passthrough_audio_codecs =
+ enable_platform_dts_audio && (is_win || is_linux)
+
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",
+ "ALLOW_OOP_VIDEO_DECODER=$allow_oop_video_decoder",
+ "ALLOW_HOSTING_OOP_VIDEO_DECODER=$allow_hosting_oop_video_decoder",
+ "ALTERNATE_CDM_STORAGE_ID_KEY=\"$alternate_cdm_storage_id_key\"",
+ "CHROME_WIDE_ECHO_CANCELLATION=$chrome_wide_echo_cancellation_supported",
+ "ENABLE_PLATFORM_AC3_EAC3_AUDIO=$enable_platform_ac3_eac3_audio",
+ "ENABLE_PLATFORM_AC4_AUDIO=$enable_platform_ac4_audio",
+ "ENABLE_CAST_AUDIO_RENDERER=$enable_cast_audio_renderer",
+ "ENABLE_DAV1D_DECODER=$enable_dav1d_decoder",
+ "ENABLE_AV1_DECODER=$enable_av1_decoder",
+ "ENABLE_PLATFORM_DOLBY_VISION=$enable_platform_dolby_vision",
+ "ENABLE_PLATFORM_ENCRYPTED_DOLBY_VISION=$enable_platform_encrypted_dolby_vision",
"ENABLE_FFMPEG=$media_use_ffmpeg",
"ENABLE_FFMPEG_VIDEO_DECODERS=$enable_ffmpeg_video_decoders",
- "ENABLE_HLS_SAMPLE_AES=$enable_hls_sample_aes",
+ "ENABLE_PLATFORM_HEVC=$enable_platform_hevc",
+ "ENABLE_HEVC_PARSER_AND_HW_DECODER=$enable_hevc_parser_and_hw_decoder",
+ "ENABLE_PLATFORM_VVC=$enable_platform_vvc",
+ "ENABLE_HLS_DEMUXER=$enable_hls_demuxer",
+ "ENABLE_LIBAOM=$enable_libaom",
"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_LOGGING_OVERRIDE=$enable_logging_override",
+ "ENABLE_MEDIA_DRM_STORAGE=$enable_media_drm_storage",
"ENABLE_MEDIA_REMOTING=$enable_media_remoting",
"ENABLE_MEDIA_REMOTING_RPC=$enable_media_remoting_rpc",
+ "ENABLE_OPENH264=$media_use_openh264",
+ "ENABLE_PASSTHROUGH_AUDIO_CODECS=$enable_passthrough_audio_codecs",
+ "ENABLE_PLATFORM_DTS_AUDIO=$enable_platform_dts_audio",
+ "ENABLE_PLATFORM_MPEG_H_AUDIO=$enable_platform_mpeg_h_audio",
+ "ENABLE_MSE_MPEG2TS_STREAM_PARSER=$enable_mse_mpeg2ts_stream_parser",
+ "PLATFORM_HAS_OPTIONAL_HEVC_SUPPORT=$platform_has_optional_hevc_support",
+ "USE_ARC_PROTECTED_MEDIA=$use_arc_protected_media",
+ "USE_CHROMEOS_MEDIA_ACCELERATION=$use_vaapi||$use_v4l2_codec",
+ "USE_CHROMEOS_PROTECTED_AV1=$use_chromeos_protected_av1",
+ "USE_CHROMEOS_PROTECTED_MEDIA=$use_chromeos_protected_media",
"USE_PROPRIETARY_CODECS=$proprietary_codecs",
]
+
+ if (enable_library_cdms) {
+ flags += [
+ "CDM_PLATFORM_SPECIFIC_PATH=\"$cdm_platform_specific_path\"",
+ "ENABLE_CDM_HOST_VERIFICATION=$enable_cdm_host_verification",
+ "ENABLE_CDM_STORAGE_ID=$enable_cdm_storage_id",
+ ]
+ }
}
-if (proprietary_codecs && media_use_ffmpeg) {
+if (proprietary_codecs && media_use_ffmpeg && !tizen_multimedia) {
assert(
ffmpeg_branding != "Chromium",
"proprietary codecs and ffmpeg_branding set to Chromium are incompatible")
#
config("subcomponent_config") {
visibility = media_subcomponent_deps
- if (is_mac) {
+ if (is_apple) {
visibility += [ "//media/base/mac" ]
}
- defines = [ "MEDIA_IMPLEMENTATION" ]
- configs = [ ":media_config" ]
+ defines = [ "IS_MEDIA_IMPL" ]
+ configs = [
+ ":media_config",
+ "//build/config/compiler:wexit_time_destructors",
+ ]
}
component("media") {
"//base:i18n",
"//base/third_party/dynamic_annotations",
"//cc/paint",
- "//crypto:platform",
"//gpu/command_buffer/client:gles2_interface",
"//gpu/command_buffer/common",
"//third_party/libyuv",
]
# This must be included here since it actually depends on //media/base.
- if (is_mac || is_ios) {
+ if (is_mac || (use_blink && is_ios)) {
public_deps += [ "//media/base/mac" ]
}
+
+ if (use_ozone) {
+ deps += [ "//ui/ozone" ]
+ }
}
# Note: This can't be a static_library since it does not have any sources.
"//media/base/android:test_support",
"//media/filters:test_support",
"//media/formats:test_support",
- "//media/gpu:test_support",
+ "//media/renderers:test_support",
"//media/video:test_support",
]
}
+if (is_ios) {
+ bundle_data_from_filelist("unit_tests_bundle_data") {
+ testonly = true
+ filelist_name = "unit_tests_bundle_data.filelist"
+ }
+}
+
# Contains tests for all targets in the "media" folder.
# TODO(xhwang): Move mojo/capture/remoting tests here where applicable.
test("media_unittests") {
+ use_xvfb = use_xvfb_in_this_config
+
deps = [
"//media/audio:unit_tests",
"//media/base:unit_tests",
"//media/filters:unit_tests",
"//media/formats:unit_tests",
"//media/gpu:unit_tests",
+ "//media/learning:unit_tests",
"//media/mojo:unit_tests",
"//media/muxers:unit_tests",
+ "//media/parsers:unit_tests",
"//media/renderers:unit_tests",
"//media/test:pipeline_integration_tests",
"//media/test:run_all_unittests",
"//media/video:unit_tests",
+ "//media/webrtc:unit_tests",
]
data = [
"test/data/",
+ "formats/mp4/h264_annex_b_fuzz_corpus/",
+ "formats/mp4/h265_annex_b_fuzz_corpus/",
]
- data_deps = []
+ data_deps = [ "//testing/buildbot/filters:media_unittests_filters" ]
+
+ if (is_android && enable_chrome_android_internal) {
+ data_deps += [ "//clank/build/bot/filters:media_unittests_filters" ]
+ }
if (media_use_ffmpeg) {
deps += [ "//media/ffmpeg:unit_tests" ]
deps += [
# The test needs the java dependencies to add the java classes for their
# native counterparts to the test apk.
+ "//gpu/command_buffer/service:android_texture_owner_unittests",
"//media/base/android:media_java",
"//media/base/android:unit_tests",
"//media/gpu:android_video_decode_accelerator_unittests",
]
}
+ if (is_fuchsia) {
+ deps += [ "//media/fuchsia/video:unittests" ]
+
+ # PaintCanvasVideoRendererWithGLTest.* uses SwiftShader, which generates
+ # machine code.
+ test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml"
+
+ additional_manifest_fragments = [
+ "//build/config/fuchsia/test/audio_output.shard.test-cml",
+ "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml",
+ "//build/config/fuchsia/test/platform_video_codecs.shard.test-cml",
+ "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
+ ]
+
+ if (enable_library_cdms) {
+ excluded_files = [ "lib.unstripped/libclearkeycdm.so" ]
+ }
+ }
+
if (enable_media_remoting) {
deps += [ "//media/remoting:media_remoting_tests" ]
}
# The test needs OPUS_FIXED_POINT conditional define.
configs += [ "//third_party/opus:opus_config" ]
+
+ if (is_ios) {
+ deps += [ ":unit_tests_bundle_data" ]
+ }
}
test("media_perftests") {
# This target should not require the Chrome executable to run.
assert_no_deps = [ "//chrome" ]
- data = [
- "test/data/",
- ]
+ data = [ "test/data/" ]
data_deps = [
# Needed for isolate script to execute.
"//ui/android:ui_java",
]
}
+
+ if (is_fuchsia) {
+ additional_manifest_fragments =
+ [ "//build/config/fuchsia/test/audio_output.shard.test-cml" ]
+ }
}
# Note: Most external components should just depend on //media unless they
sources = [
"base/audio_bus.cc",
"base/audio_bus.h",
+ "base/audio_codecs.h",
"base/audio_latency.cc",
"base/audio_latency.h",
"base/audio_parameters.cc",
"base/channel_layout.cc",
"base/channel_layout.h",
"base/limits.h",
+ "base/media_export.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",
+ "base/video_types.cc",
+ "base/video_types.h",
]
if (is_mac) {
# These need to be included here because audio_latency.cc depends on them.
}
deps = [
"//base",
+ "//build:chromeos_buildflags",
+ "//media:media_buildflags",
"//ui/gfx/geometry",
]
}
if (proprietary_codecs) {
fuzzer_test("media_cenc_utils_fuzzer") {
- sources = [
- "cdm/cenc_utils_fuzzertest.cc",
- ]
- deps = [
- ":media",
- ]
+ sources = [ "cdm/cenc_utils_fuzzertest.cc" ]
+ deps = [ ":media" ]
}
}
-fuzzer_test("media_vp8_parser_fuzzer") {
- sources = [
- "filters/vp8_parser_fuzzertest.cc",
- ]
+fuzzer_test("media_vp9_parser_fuzzer") {
+ sources = [ "filters/vp9_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",
- ]
+fuzzer_test("media_vp9_parser_encrypted_fuzzer") {
+ sources = [ "filters/vp9_parser_encrypted_fuzzertest.cc" ]
deps = [
":test_support",
"//base",
+ "//base/test:test_support",
]
- libfuzzer_options = [ "max_len = 400000" ]
+ seed_corpus = "//media/test/data"
}
fuzzer_test("media_vpx_video_decoder_fuzzer") {
- sources = [
- "filters/vpx_video_decoder_fuzzertest.cc",
- ]
+ sources = [ "filters/vpx_video_decoder_fuzzertest.cc" ]
deps = [
":media",
"//base",
+ "//base/test:test_support",
]
libfuzzer_options = [ "max_len = 400000" ]
seed_corpus = "//media/test/data"
}
fuzzer_test("media_webm_muxer_fuzzer") {
- sources = [
- "muxers/webm_muxer_fuzzertest.cc",
- ]
+ sources = [ "muxers/webm_muxer_fuzzertest.cc" ]
deps = [
":media",
"//base",
"//third_party/libwebm",
]
-
- if (use_efl && tizen_multimedia_support) {
- deps += external_media_efl_deps
- sources += external_media_efl_sources
- sources -= external_exclude_media_efl_sources
- configs += external_media_efl_config
- }
}
fuzzer_test("cbcs_decryptor_fuzzer") {
- sources = [
- "cdm/cbcs_decryptor_fuzzer.cc",
- ]
+ sources = [ "cdm/cbcs_decryptor_fuzzer.cc" ]
deps = [
":media",
"//base",
}
fuzzer_test("cenc_decryptor_fuzzer") {
- sources = [
- "cdm/cenc_decryptor_fuzzer.cc",
- ]
+ sources = [ "cdm/cenc_decryptor_fuzzer.cc" ]
deps = [
":media",
"//base",
]
}
+fuzzer_test("json_web_key_fuzzer") {
+ sources = [ "cdm/json_web_key_fuzzer.cc" ]
+ deps = [
+ ":media",
+ "//base",
+ ]
+}
+
if (proprietary_codecs) {
fuzzer_test("media_mp4_avcc_parser_fuzzer") {
- sources = [
- "formats/mp4/mp4_avcc_parser_fuzzer.cc",
- ]
+ 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",
- ]
+ sources = [ "formats/mp4/mp4_box_reader_fuzzer.cc" ]
deps = [
":media",
"//base",
if (enable_mse_mpeg2ts_stream_parser) {
fuzzer_test("media_es_parser_adts_fuzzer") {
- sources = [
- "formats/mp2t/es_parser_adts_fuzzer.cc",
- ]
+ 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",
- ]
+ 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",
- ]
+ sources = [ "formats/mp2t/es_parser_mpeg1audio_fuzzer.cc" ]
deps = [
":media",
"//base",