fixup! [M120 Migration] Languages pak optimization
[platform/framework/web/chromium-efl.git] / media / BUILD.gn
index 7c0d393..532dbbf 100644 (file)
@@ -1,10 +1,11 @@
-# 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")
@@ -12,36 +13,70 @@ import("//media/media_options.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")
@@ -77,11 +112,14 @@ config("media_config") {
 #
 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") {
@@ -92,7 +130,6 @@ 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",
@@ -112,9 +149,13 @@ component("media") {
   ]
 
   # 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.
@@ -127,14 +168,23 @@ source_set("test_support") {
     "//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",
@@ -144,19 +194,28 @@ test("media_unittests") {
     "//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" ]
@@ -166,6 +225,7 @@ test("media_unittests") {
     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",
@@ -173,12 +233,35 @@ test("media_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") {
@@ -203,9 +286,7 @@ 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.
@@ -230,6 +311,11 @@ test("audio_unittests") {
       "//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
@@ -239,6 +325,7 @@ component("shared_memory_support") {
   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",
@@ -249,12 +336,15 @@ component("shared_memory_support") {
     "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.
@@ -275,6 +365,8 @@ component("shared_memory_support") {
   }
   deps = [
     "//base",
+    "//build:chromeos_buildflags",
+    "//media:media_buildflags",
     "//ui/gfx/geometry",
   ]
 }
@@ -301,72 +393,52 @@ if (media_use_ffmpeg && !is_android) {
 
 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",
@@ -375,9 +447,7 @@ fuzzer_test("cbcs_decryptor_fuzzer") {
 }
 
 fuzzer_test("cenc_decryptor_fuzzer") {
-  sources = [
-    "cdm/cenc_decryptor_fuzzer.cc",
-  ]
+  sources = [ "cdm/cenc_decryptor_fuzzer.cc" ]
   deps = [
     ":media",
     "//base",
@@ -385,11 +455,17 @@ fuzzer_test("cenc_decryptor_fuzzer") {
   ]
 }
 
+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",
@@ -397,9 +473,7 @@ if (proprietary_codecs) {
   }
 
   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",
@@ -411,9 +485,7 @@ if (proprietary_codecs) {
 
 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",
@@ -421,9 +493,7 @@ if (enable_mse_mpeg2ts_stream_parser) {
   }
 
   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",
@@ -431,9 +501,7 @@ if (enable_mse_mpeg2ts_stream_parser) {
   }
 
   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",