| # 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/config/android/config.gni") |
| import("//build/config/arm.gni") |
| import("//build/config/features.gni") |
| import("//build/config/ui.gni") |
| import("//build/config/linux/pkg_config.gni") |
| import("//media/media_options.gni") |
| import("//testing/libfuzzer/fuzzer_test.gni") |
| |
| config("base_config") { |
| configs = [ |
| # This target uses the ALLOCATOR_SHIM define. |
| "//base/allocator:allocator_shim_define", |
| "//build/config:precompiled_headers", |
| "//build/config/compiler:no_size_t_to_int_warning", |
| "//media:media_config", |
| "//media:media_dependent_config", |
| "//media:media_implementation", |
| ] |
| } |
| |
| if (is_component_build) { |
| link_target_type = "source_set" |
| } else { |
| link_target_type = "static_library" |
| } |
| target(link_target_type, "base") { |
| # This is part of the media component. |
| visibility = [ "//media/*" ] |
| sources = [ |
| "audio_block_fifo.cc", |
| "audio_block_fifo.h", |
| "audio_buffer.cc", |
| "audio_buffer.h", |
| "audio_buffer_converter.cc", |
| "audio_buffer_converter.h", |
| "audio_buffer_queue.cc", |
| "audio_buffer_queue.h", |
| "audio_capturer_source.h", |
| "audio_codecs.cc", |
| "audio_codecs.h", |
| "audio_converter.cc", |
| "audio_converter.h", |
| "audio_decoder.cc", |
| "audio_decoder.h", |
| "audio_decoder_config.cc", |
| "audio_decoder_config.h", |
| "audio_discard_helper.cc", |
| "audio_discard_helper.h", |
| "audio_fifo.cc", |
| "audio_fifo.h", |
| "audio_hash.cc", |
| "audio_hash.h", |
| "audio_pull_fifo.cc", |
| "audio_pull_fifo.h", |
| "audio_push_fifo.cc", |
| "audio_push_fifo.h", |
| "audio_renderer.cc", |
| "audio_renderer.h", |
| "audio_renderer_mixer.cc", |
| "audio_renderer_mixer.h", |
| "audio_renderer_mixer_input.cc", |
| "audio_renderer_mixer_input.h", |
| "audio_renderer_mixer_pool.h", |
| "audio_renderer_sink.h", |
| "audio_shifter.cc", |
| "audio_shifter.h", |
| "audio_splicer.cc", |
| "audio_splicer.h", |
| "audio_timestamp_helper.cc", |
| "audio_timestamp_helper.h", |
| "bind_to_current_loop.h", |
| "bit_reader.cc", |
| "bit_reader.h", |
| "bit_reader_core.cc", |
| "bit_reader_core.h", |
| "bitstream_buffer.cc", |
| "bitstream_buffer.h", |
| "buffering_state.h", |
| "byte_queue.cc", |
| "byte_queue.h", |
| "cdm_callback_promise.cc", |
| "cdm_callback_promise.h", |
| "cdm_config.h", |
| "cdm_context.cc", |
| "cdm_context.h", |
| "cdm_factory.cc", |
| "cdm_factory.h", |
| "cdm_initialized_promise.cc", |
| "cdm_initialized_promise.h", |
| "cdm_key_information.cc", |
| "cdm_key_information.h", |
| "cdm_promise.cc", |
| "cdm_promise.h", |
| "cdm_promise_adapter.cc", |
| "cdm_promise_adapter.h", |
| "channel_mixer.cc", |
| "channel_mixer.h", |
| "channel_mixing_matrix.cc", |
| "channel_mixing_matrix.h", |
| "container_names.cc", |
| "container_names.h", |
| "data_buffer.cc", |
| "data_buffer.h", |
| "data_source.cc", |
| "data_source.h", |
| "decode_status.cc", |
| "decode_status.h", |
| "decoder_buffer.cc", |
| "decoder_buffer.h", |
| "decoder_buffer_queue.cc", |
| "decoder_buffer_queue.h", |
| "decoder_factory.cc", |
| "decoder_factory.h", |
| "decrypt_config.cc", |
| "decrypt_config.h", |
| "decryptor.cc", |
| "decryptor.h", |
| "demuxer.cc", |
| "demuxer.h", |
| "demuxer_stream.cc", |
| "demuxer_stream.h", |
| "demuxer_stream_provider.cc", |
| "demuxer_stream_provider.h", |
| "djb2.cc", |
| "djb2.h", |
| "eme_constants.h", |
| "encryption_scheme.cc", |
| "encryption_scheme.h", |
| "feedback_signal_accumulator.h", |
| "hdr_metadata.cc", |
| "hdr_metadata.h", |
| "key_system_names.cc", |
| "key_system_names.h", |
| "key_system_properties.cc", |
| "key_system_properties.h", |
| "key_systems.cc", |
| "key_systems.h", |
| "loopback_audio_converter.cc", |
| "loopback_audio_converter.h", |
| "media.cc", |
| "media.h", |
| "media_client.cc", |
| "media_client.h", |
| "media_content_type.cc", |
| "media_content_type.h", |
| "media_keys.cc", |
| "media_keys.h", |
| "media_log.cc", |
| "media_log.h", |
| "media_log_event.h", |
| "media_permission.cc", |
| "media_permission.h", |
| "media_resources.cc", |
| "media_resources.h", |
| "media_switches.cc", |
| "media_switches.h", |
| "media_track.cc", |
| "media_track.h", |
| "media_tracks.cc", |
| "media_tracks.h", |
| "media_url_demuxer.cc", |
| "media_url_demuxer.h", |
| "media_util.cc", |
| "media_util.h", |
| "mime_util.cc", |
| "mime_util.h", |
| "mime_util_internal.cc", |
| "mime_util_internal.h", |
| "moving_average.cc", |
| "moving_average.h", |
| "multi_channel_resampler.cc", |
| "multi_channel_resampler.h", |
| "null_video_sink.cc", |
| "null_video_sink.h", |
| "output_device_info.cc", |
| "output_device_info.h", |
| "pipeline.h", |
| "pipeline_impl.cc", |
| "pipeline_impl.h", |
| "pipeline_metadata.h", |
| "pipeline_status.h", |
| "player_tracker.cc", |
| "player_tracker.h", |
| "ranges.cc", |
| "ranges.h", |
| "renderer.cc", |
| "renderer.h", |
| "renderer_client.h", |
| "renderer_factory.cc", |
| "renderer_factory.h", |
| "sample_format.cc", |
| "sample_format.h", |
| "seekable_buffer.cc", |
| "seekable_buffer.h", |
| "serial_runner.cc", |
| "serial_runner.h", |
| "silent_sink_suspender.cc", |
| "silent_sink_suspender.h", |
| "simd/convert_rgb_to_yuv.h", |
| "simd/convert_rgb_to_yuv_c.cc", |
| "simd/convert_yuv_to_rgb.h", |
| "simd/convert_yuv_to_rgb_c.cc", |
| "simd/filter_yuv.h", |
| "simd/filter_yuv_c.cc", |
| "sinc_resampler.cc", |
| "sinc_resampler.h", |
| "stream_parser.cc", |
| "stream_parser.h", |
| "stream_parser_buffer.cc", |
| "stream_parser_buffer.h", |
| "subsample_entry.h", |
| "surface_manager.h", |
| "text_cue.cc", |
| "text_cue.h", |
| "text_ranges.cc", |
| "text_ranges.h", |
| "text_renderer.cc", |
| "text_renderer.h", |
| "text_track.h", |
| "text_track_config.cc", |
| "text_track_config.h", |
| "time_delta_interpolator.cc", |
| "time_delta_interpolator.h", |
| "time_source.h", |
| "timestamp_constants.h", |
| "user_input_monitor.cc", |
| "user_input_monitor.h", |
| "video_capture_types.cc", |
| "video_capture_types.h", |
| "video_capturer_source.cc", |
| "video_capturer_source.h", |
| "video_codecs.cc", |
| "video_codecs.h", |
| "video_decoder.cc", |
| "video_decoder.h", |
| "video_decoder_config.cc", |
| "video_decoder_config.h", |
| "video_frame.cc", |
| "video_frame.h", |
| "video_frame_metadata.cc", |
| "video_frame_metadata.h", |
| "video_frame_pool.cc", |
| "video_frame_pool.h", |
| "video_renderer.cc", |
| "video_renderer.h", |
| "video_rotation.h", |
| "video_types.cc", |
| "video_types.h", |
| "video_util.cc", |
| "video_util.h", |
| "wall_clock_time_source.cc", |
| "wall_clock_time_source.h", |
| "yuv_convert.cc", |
| "yuv_convert.h", |
| ] |
| |
| allow_circular_includes_from = [] |
| defines = [] |
| public_deps = [] |
| deps = [ |
| "//base/third_party/dynamic_annotations:dynamic_annotations", |
| "//gpu", |
| "//media:media_features", |
| "//media:shared_memory_support", |
| "//skia", |
| "//third_party/libyuv", |
| "//ui/events:events_base", |
| "//url:url", |
| ] |
| libs = [] |
| configs += [ ":base_config" ] |
| |
| if (media_use_ffmpeg) { |
| if (!is_android) { |
| sources += [ |
| "audio_video_metadata_extractor.cc", |
| "audio_video_metadata_extractor.h", |
| "media_file_checker.cc", |
| "media_file_checker.h", |
| ] |
| deps += [ "//media:filters_common" ] |
| } |
| |
| deps += [ "//third_party/ffmpeg" ] |
| } |
| |
| if (is_android) { |
| public_deps = [ |
| "//media/base/android", |
| "//media/base/android:media_jni_headers", |
| ] |
| allow_circular_includes_from += [ "//media/base/android" ] |
| } |
| |
| if (is_linux && use_x11) { |
| configs += [ |
| "//build/config/linux:x11", |
| "//build/config/linux:xext", |
| |
| # TODO(ajwong): Why does xent get a separate thing in //build/config/linux:BUILD.gn |
| # "//build/config/linux:xdamage", |
| # "//build/config/linux:xfixes", |
| # "//build/config/linux:xtst", |
| ] |
| sources += [ "user_input_monitor_linux.cc" ] |
| deps += [ |
| "//ui/events:events_base", |
| "//ui/gfx/x", |
| ] |
| } else if (is_mac) { |
| sources += [ "user_input_monitor_mac.cc" ] |
| |
| # Required by video_frame.cc. |
| libs = [ "CoreVideo.framework" ] |
| } else if (is_win) { |
| sources += [ "user_input_monitor_win.cc" ] |
| } else { |
| defines += [ "DISABLE_USER_INPUT_MONITOR" ] |
| } |
| |
| if (current_cpu == "x86" || current_cpu == "x64") { |
| sources += [ |
| "simd/convert_rgb_to_yuv_sse2.cc", |
| "simd/convert_rgb_to_yuv_ssse3.cc", |
| "simd/convert_yuv_to_rgb_x86.cc", |
| "simd/filter_yuv_sse2.cc", |
| ] |
| deps += [ ":media_yasm" ] |
| } |
| |
| if (is_linux || is_win) { |
| sources += [ |
| "keyboard_event_counter.cc", |
| "keyboard_event_counter.h", |
| ] |
| } |
| } |
| |
| static_library("test_support") { |
| testonly = true |
| sources = [ |
| "fake_audio_render_callback.cc", |
| "fake_audio_render_callback.h", |
| "fake_audio_renderer_sink.cc", |
| "fake_audio_renderer_sink.h", |
| "fake_demuxer_stream.cc", |
| "fake_demuxer_stream.h", |
| "fake_media_resources.cc", |
| "fake_media_resources.h", |
| "fake_single_thread_task_runner.cc", |
| "fake_single_thread_task_runner.h", |
| "fake_text_track_stream.cc", |
| "fake_text_track_stream.h", |
| "gmock_callback_support.h", |
| "mock_audio_renderer_sink.cc", |
| "mock_audio_renderer_sink.h", |
| "mock_demuxer_host.cc", |
| "mock_demuxer_host.h", |
| "mock_filters.cc", |
| "mock_filters.h", |
| "mock_media_log.cc", |
| "mock_media_log.h", |
| "test_data_util.cc", |
| "test_data_util.h", |
| "test_helpers.cc", |
| "test_helpers.h", |
| "test_random.h", |
| "vector_math_testing.h", |
| ] |
| configs += [ "//media:media_config" ] |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//media", |
| "//media:media_features", |
| "//media:shared_memory_support", |
| "//testing/gmock", |
| "//ui/gfx:test_support", |
| ] |
| } |
| |
| source_set("unittests") { |
| testonly = true |
| sources = [ |
| "audio_block_fifo_unittest.cc", |
| "audio_buffer_converter_unittest.cc", |
| "audio_buffer_queue_unittest.cc", |
| "audio_buffer_unittest.cc", |
| "audio_bus_unittest.cc", |
| "audio_converter_unittest.cc", |
| "audio_discard_helper_unittest.cc", |
| "audio_fifo_unittest.cc", |
| "audio_hash_unittest.cc", |
| "audio_latency_unittest.cc", |
| "audio_parameters_unittest.cc", |
| "audio_point_unittest.cc", |
| "audio_pull_fifo_unittest.cc", |
| "audio_push_fifo_unittest.cc", |
| "audio_renderer_mixer_input_unittest.cc", |
| "audio_renderer_mixer_unittest.cc", |
| "audio_sample_types_unittest.cc", |
| "audio_shifter_unittest.cc", |
| "audio_splicer_unittest.cc", |
| "audio_timestamp_helper_unittest.cc", |
| "bind_to_current_loop_unittest.cc", |
| "bit_reader_unittest.cc", |
| "callback_holder.h", |
| "callback_holder_unittest.cc", |
| "channel_mixer_unittest.cc", |
| "channel_mixing_matrix_unittest.cc", |
| "container_names_unittest.cc", |
| "data_buffer_unittest.cc", |
| "decoder_buffer_queue_unittest.cc", |
| "decoder_buffer_unittest.cc", |
| "djb2_unittest.cc", |
| "fake_demuxer_stream_unittest.cc", |
| "feedback_signal_accumulator_unittest.cc", |
| "gmock_callback_support_unittest.cc", |
| "key_systems_unittest.cc", |
| "media_url_demuxer_unittest.cc", |
| "mime_util_unittest.cc", |
| "moving_average_unittest.cc", |
| "multi_channel_resampler_unittest.cc", |
| "null_video_sink_unittest.cc", |
| "pipeline_impl_unittest.cc", |
| "ranges_unittest.cc", |
| "run_all_unittests.cc", |
| "seekable_buffer_unittest.cc", |
| "serial_runner_unittest.cc", |
| "silent_sink_suspender_unittest.cc", |
| "sinc_resampler_unittest.cc", |
| "stream_parser_unittest.cc", |
| "text_ranges_unittest.cc", |
| "text_renderer_unittest.cc", |
| "time_delta_interpolator_unittest.cc", |
| "user_input_monitor_unittest.cc", |
| "vector_math_unittest.cc", |
| "video_codecs_unittest.cc", |
| "video_decoder_config_unittest.cc", |
| "video_frame_pool_unittest.cc", |
| "video_frame_unittest.cc", |
| "video_util_unittest.cc", |
| "wall_clock_time_source_unittest.cc", |
| "yuv_convert_unittest.cc", |
| ] |
| configs += [ |
| "//build/config/compiler:no_size_t_to_int_warning", |
| "//media:media_config", |
| ] |
| deps = [ |
| ":test_support", |
| "//base/test:test_support", |
| "//gpu/command_buffer/common", |
| "//media", |
| "//media/base/android:anywhere_unittests", |
| "//skia", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| |
| # Even if FFmpeg is enabled on Android we don't want these. |
| # TODO(watk): Refactor tests that could be made to run on Android. |
| if (media_use_ffmpeg && !is_android) { |
| sources += [ |
| "audio_video_metadata_extractor_unittest.cc", |
| "media_file_checker_unittest.cc", |
| ] |
| } |
| |
| if (is_android) { |
| deps += [ "//ui/gl" ] |
| } |
| |
| if (current_cpu == "x86" || current_cpu == "x64") { |
| sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ] |
| } |
| } |
| |
| source_set("perftests") { |
| testonly = true |
| sources = [ |
| "audio_bus_perftest.cc", |
| "audio_converter_perftest.cc", |
| "run_all_perftests.cc", |
| "sinc_resampler_perftest.cc", |
| "vector_math_perftest.cc", |
| "yuv_convert_perftest.cc", |
| ] |
| configs += [ "//media:media_config" ] |
| deps = [ |
| ":test_support", |
| "//base", |
| "//base/test:test_support", |
| "//media", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//testing/perf", |
| "//third_party/libyuv", |
| ] |
| |
| if (media_use_ffmpeg) { |
| sources += [ "demuxer_perftest.cc" ] |
| } |
| } |
| |
| if (current_cpu == "x86" || current_cpu == "x64") { |
| import("//third_party/yasm/yasm_assemble.gni") |
| yasm_assemble("media_yasm") { |
| sources = [ |
| "simd/convert_rgb_to_yuv_ssse3.asm", |
| "simd/convert_yuv_to_rgb_sse.asm", |
| "simd/convert_yuva_to_argb_mmx.asm", |
| "simd/empty_register_state_mmx.asm", |
| "simd/linear_scale_yuv_to_rgb_mmx.asm", |
| "simd/linear_scale_yuv_to_rgb_sse.asm", |
| "simd/scale_yuv_to_rgb_mmx.asm", |
| "simd/scale_yuv_to_rgb_sse.asm", |
| ] |
| |
| yasm_flags = [ |
| "-DCHROMIUM", |
| |
| # In addition to the same path as source asm, let yasm %include |
| # search path be relative to src/ per Chromium policy. |
| "-I", |
| rebase_path("..", root_build_dir), |
| ] |
| |
| if (is_component_build) { |
| yasm_flags += [ "-DEXPORT_SYMBOLS" ] |
| } |
| |
| inputs = [ |
| "//third_party/x86inc/x86inc.asm", |
| "simd/convert_rgb_to_yuv_ssse3.inc", |
| "simd/convert_yuv_to_rgb_mmx.inc", |
| "simd/convert_yuva_to_argb_mmx.inc", |
| "simd/linear_scale_yuv_to_rgb_mmx.inc", |
| "simd/media_export.asm", |
| "simd/scale_yuv_to_rgb_mmx.inc", |
| ] |
| |
| if (current_cpu == "x86") { |
| yasm_flags += [ "-DARCH_X86_32" ] |
| } else if (current_cpu == "x64") { |
| yasm_flags += [ "-DARCH_X86_64" ] |
| sources += [ |
| "simd/linear_scale_yuv_to_rgb_mmx_x64.asm", |
| "simd/scale_yuv_to_rgb_sse2_x64.asm", |
| ] |
| } |
| |
| if (is_mac || is_ios) { |
| yasm_flags += [ |
| "-DPREFIX", |
| "-DMACHO", |
| ] |
| } else { |
| if (is_posix) { |
| yasm_flags += [ "-DELF" ] |
| if (current_cpu == "x64") { |
| # TODO(ajwong): Why isn't this true in mac? |
| yasm_flags += [ "-DPIC" ] |
| } |
| } |
| } |
| } |
| } |
| |
| fuzzer_test("media_bit_reader_fuzzer") { |
| sources = [ |
| "bit_reader_fuzzertest.cc", |
| ] |
| deps = [ |
| ":test_support", |
| "//base", |
| "//media", |
| ] |
| } |
| |
| fuzzer_test("media_container_names_fuzzer") { |
| sources = [ |
| "container_names_fuzzertest.cc", |
| ] |
| deps = [ |
| "//base", |
| "//media", |
| ] |
| } |