# Copyright (c) 2012 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. { 'variables': { 'chromium_code': 1, # Override to dynamically link the PulseAudio library. 'use_pulseaudio%': 0, # Override to dynamically link the cras (ChromeOS audio) library. 'use_cras%': 0, 'conditions': [ ['OS == "android" or OS == "ios"', { # Android and iOS don't use ffmpeg. 'use_ffmpeg%': 0, # Android and iOS don't use libvpx. 'use_libvpx%': 0, }, { # 'OS != "android" and OS != "ios"' 'use_ffmpeg%': 1, 'use_libvpx%': 1, }], # Screen capturer works only on Windows, OSX and Linux. ['OS=="win" or OS=="mac" or OS=="linux"', { 'screen_capture_supported%': 1, }, { 'screen_capture_supported%': 0, }], ], }, 'targets': [ { 'target_name': 'media', 'type': '<(component)', 'dependencies': [ '../base/base.gyp:base', '../build/temp_gyp/googleurl.gyp:googleurl', '../crypto/crypto.gyp:crypto', '../skia/skia.gyp:skia', '../third_party/opus/opus.gyp:opus', '../ui/ui.gyp:ui', ], 'defines': [ 'MEDIA_IMPLEMENTATION', ], 'include_dirs': [ '..', ], 'sources': [ 'audio/android/audio_manager_android.cc', 'audio/android/audio_manager_android.h', 'audio/android/opensles_input.cc', 'audio/android/opensles_input.h', 'audio/android/opensles_output.cc', 'audio/android/opensles_output.h', 'audio/async_socket_io_handler.h', 'audio/async_socket_io_handler_posix.cc', 'audio/async_socket_io_handler_win.cc', 'audio/audio_buffers_state.cc', 'audio/audio_buffers_state.h', 'audio/audio_device_name.cc', 'audio/audio_device_name.h', 'audio/audio_device_thread.cc', 'audio/audio_device_thread.h', 'audio/audio_input_controller.cc', 'audio/audio_input_controller.h', 'audio/audio_input_device.cc', 'audio/audio_input_device.h', 'audio/audio_input_ipc.cc', 'audio/audio_input_ipc.h', 'audio/audio_input_stream_impl.cc', 'audio/audio_input_stream_impl.h', 'audio/audio_io.h', 'audio/audio_manager.cc', 'audio/audio_manager.h', 'audio/audio_manager_base.cc', 'audio/audio_manager_base.h', 'audio/audio_output_controller.cc', 'audio/audio_output_controller.h', 'audio/audio_output_device.cc', 'audio/audio_output_device.h', 'audio/audio_output_dispatcher.cc', 'audio/audio_output_dispatcher.h', 'audio/audio_output_dispatcher_impl.cc', 'audio/audio_output_dispatcher_impl.h', 'audio/audio_output_ipc.cc', 'audio/audio_output_ipc.h', 'audio/audio_output_proxy.cc', 'audio/audio_output_proxy.h', 'audio/audio_output_resampler.cc', 'audio/audio_output_resampler.h', 'audio/audio_source_diverter.h', 'audio/audio_util.cc', 'audio/audio_util.h', 'audio/cross_process_notification.cc', 'audio/cross_process_notification.h', 'audio/cross_process_notification_posix.cc', 'audio/cross_process_notification_win.cc', 'audio/fake_audio_input_stream.cc', 'audio/fake_audio_input_stream.h', 'audio/fake_audio_output_stream.cc', 'audio/fake_audio_output_stream.h', 'audio/ios/audio_manager_ios.h', 'audio/ios/audio_manager_ios.mm', 'audio/ios/audio_session_util_ios.h', 'audio/ios/audio_session_util_ios.mm', 'audio/linux/alsa_input.cc', 'audio/linux/alsa_input.h', 'audio/linux/alsa_output.cc', 'audio/linux/alsa_output.h', 'audio/linux/alsa_util.cc', 'audio/linux/alsa_util.h', 'audio/linux/alsa_wrapper.cc', 'audio/linux/alsa_wrapper.h', 'audio/linux/audio_manager_linux.cc', 'audio/linux/audio_manager_linux.h', 'audio/linux/cras_input.cc', 'audio/linux/cras_input.h', 'audio/linux/cras_output.cc', 'audio/linux/cras_output.h', 'audio/mac/audio_device_listener_mac.cc', 'audio/mac/audio_device_listener_mac.h', 'audio/mac/audio_input_mac.cc', 'audio/mac/audio_input_mac.h', 'audio/mac/audio_low_latency_input_mac.cc', 'audio/mac/audio_low_latency_input_mac.h', 'audio/mac/audio_low_latency_output_mac.cc', 'audio/mac/audio_low_latency_output_mac.h', 'audio/mac/audio_manager_mac.cc', 'audio/mac/audio_manager_mac.h', 'audio/mac/audio_output_mac.cc', 'audio/mac/audio_output_mac.h', 'audio/mac/audio_synchronized_mac.cc', 'audio/mac/audio_synchronized_mac.h', 'audio/mac/audio_unified_mac.cc', 'audio/mac/audio_unified_mac.h', 'audio/null_audio_sink.cc', 'audio/null_audio_sink.h', 'audio/openbsd/audio_manager_openbsd.cc', 'audio/openbsd/audio_manager_openbsd.h', 'audio/pulse/pulse_output.cc', 'audio/pulse/pulse_output.h', 'audio/sample_rates.cc', 'audio/sample_rates.h', 'audio/scoped_loop_observer.cc', 'audio/scoped_loop_observer.h', 'audio/simple_sources.cc', 'audio/simple_sources.h', 'audio/virtual_audio_input_stream.cc', 'audio/virtual_audio_input_stream.h', 'audio/virtual_audio_output_stream.cc', 'audio/virtual_audio_output_stream.h', 'audio/win/audio_device_listener_win.cc', 'audio/win/audio_device_listener_win.h', 'audio/win/audio_low_latency_input_win.cc', 'audio/win/audio_low_latency_input_win.h', 'audio/win/audio_low_latency_output_win.cc', 'audio/win/audio_low_latency_output_win.h', 'audio/win/audio_manager_win.cc', 'audio/win/audio_manager_win.h', 'audio/win/audio_unified_win.cc', 'audio/win/audio_unified_win.h', 'audio/win/avrt_wrapper_win.cc', 'audio/win/avrt_wrapper_win.h', 'audio/win/device_enumeration_win.cc', 'audio/win/device_enumeration_win.h', 'audio/win/core_audio_util_win.cc', 'audio/win/core_audio_util_win.h', 'audio/win/wavein_input_win.cc', 'audio/win/wavein_input_win.h', 'audio/win/waveout_output_win.cc', 'audio/win/waveout_output_win.h', 'base/android/cookie_getter.cc', 'base/android/cookie_getter.h', 'base/android/media_player_bridge_manager.cc', 'base/android/media_player_bridge_manager.h', 'base/audio_capturer_source.h', 'base/audio_converter.cc', 'base/audio_converter.h', 'base/audio_decoder.cc', 'base/audio_decoder.h', 'base/audio_decoder_config.cc', 'base/audio_decoder_config.h', 'base/audio_fifo.cc', 'base/audio_fifo.h', 'base/audio_hardware_config.cc', 'base/audio_hardware_config.h', 'base/audio_pull_fifo.cc', 'base/audio_pull_fifo.h', 'base/audio_renderer.cc', 'base/audio_renderer.h', 'base/audio_renderer_sink.h', 'base/audio_renderer_mixer.cc', 'base/audio_renderer_mixer.h', 'base/audio_renderer_mixer_input.cc', 'base/audio_renderer_mixer_input.h', 'base/audio_splicer.cc', 'base/audio_splicer.h', 'base/audio_timestamp_helper.cc', 'base/audio_timestamp_helper.h', 'base/bind_to_loop.h', 'base/bitstream_buffer.h', 'base/bit_reader.cc', 'base/bit_reader.h', 'base/buffers.h', 'base/byte_queue.cc', 'base/byte_queue.h', 'base/channel_mixer.cc', 'base/channel_mixer.h', 'base/clock.cc', 'base/clock.h', 'base/data_buffer.cc', 'base/data_buffer.h', 'base/data_source.cc', 'base/data_source.h', 'base/decoder_buffer.cc', 'base/decoder_buffer.h', 'base/decoder_buffer_queue.cc', 'base/decoder_buffer_queue.h', 'base/decryptor.cc', 'base/decryptor.h', 'base/decrypt_config.cc', 'base/decrypt_config.h', 'base/demuxer.cc', 'base/demuxer.h', 'base/demuxer_stream.cc', 'base/demuxer_stream.h', 'base/djb2.cc', 'base/djb2.h', 'base/filter_collection.cc', 'base/filter_collection.h', 'base/media.h', 'base/media_log.cc', 'base/media_log.h', 'base/media_log_event.h', 'base/media_posix.cc', 'base/media_switches.cc', 'base/media_switches.h', 'base/media_win.cc', 'base/multi_channel_resampler.cc', 'base/multi_channel_resampler.h', 'base/pipeline.cc', 'base/pipeline.h', 'base/pipeline_status.cc', 'base/pipeline_status.h', 'base/ranges.cc', 'base/ranges.h', 'base/seekable_buffer.cc', 'base/seekable_buffer.h', 'base/serial_runner.cc', 'base/serial_runner.h', 'base/sinc_resampler.cc', 'base/sinc_resampler.h', 'base/stream_parser.cc', 'base/stream_parser.h', 'base/stream_parser_buffer.cc', 'base/stream_parser_buffer.h', 'base/vector_math.cc', 'base/vector_math.h', 'base/video_decoder.cc', 'base/video_decoder.h', 'base/video_decoder_config.cc', 'base/video_decoder_config.h', 'base/video_frame.cc', 'base/video_frame.h', 'base/video_renderer.cc', 'base/video_renderer.h', 'base/video_util.cc', 'base/video_util.h', 'crypto/aes_decryptor.cc', 'crypto/aes_decryptor.h', 'ffmpeg/ffmpeg_common.cc', 'ffmpeg/ffmpeg_common.h', 'filters/audio_decoder_selector.cc', 'filters/audio_decoder_selector.h', 'filters/audio_file_reader.cc', 'filters/audio_file_reader.h', 'filters/audio_renderer_algorithm.cc', 'filters/audio_renderer_algorithm.h', 'filters/audio_renderer_impl.cc', 'filters/audio_renderer_impl.h', 'filters/blocking_url_protocol.cc', 'filters/blocking_url_protocol.h', 'filters/chunk_demuxer.cc', 'filters/chunk_demuxer.h', 'filters/decrypting_audio_decoder.cc', 'filters/decrypting_audio_decoder.h', 'filters/decrypting_demuxer_stream.cc', 'filters/decrypting_demuxer_stream.h', 'filters/decrypting_video_decoder.cc', 'filters/decrypting_video_decoder.h', 'filters/dummy_demuxer.cc', 'filters/dummy_demuxer.h', 'filters/ffmpeg_audio_decoder.cc', 'filters/ffmpeg_audio_decoder.h', 'filters/ffmpeg_demuxer.cc', 'filters/ffmpeg_demuxer.h', 'filters/ffmpeg_glue.cc', 'filters/ffmpeg_glue.h', 'filters/ffmpeg_h264_to_annex_b_bitstream_converter.cc', 'filters/ffmpeg_h264_to_annex_b_bitstream_converter.h', 'filters/ffmpeg_video_decoder.cc', 'filters/ffmpeg_video_decoder.h', 'filters/file_data_source.cc', 'filters/file_data_source.h', 'filters/gpu_video_decoder.cc', 'filters/gpu_video_decoder.h', 'filters/h264_to_annex_b_bitstream_converter.cc', 'filters/h264_to_annex_b_bitstream_converter.h', 'filters/in_memory_url_protocol.cc', 'filters/in_memory_url_protocol.h', 'filters/opus_audio_decoder.cc', 'filters/opus_audio_decoder.h', 'filters/skcanvas_video_renderer.cc', 'filters/skcanvas_video_renderer.h', 'filters/source_buffer_stream.cc', 'filters/source_buffer_stream.h', 'filters/video_decoder_selector.cc', 'filters/video_decoder_selector.h', 'filters/video_frame_generator.cc', 'filters/video_frame_generator.h', 'filters/video_renderer_base.cc', 'filters/video_renderer_base.h', 'filters/vpx_video_decoder.cc', 'filters/vpx_video_decoder.h', 'video/capture/android/video_capture_device_android.cc', 'video/capture/android/video_capture_device_android.h', 'video/capture/fake_video_capture_device.cc', 'video/capture/fake_video_capture_device.h', 'video/capture/linux/video_capture_device_linux.cc', 'video/capture/linux/video_capture_device_linux.h', 'video/capture/mac/video_capture_device_mac.h', 'video/capture/mac/video_capture_device_mac.mm', 'video/capture/mac/video_capture_device_qtkit_mac.h', 'video/capture/mac/video_capture_device_qtkit_mac.mm', 'video/capture/screen/differ.cc', 'video/capture/screen/differ.h', 'video/capture/screen/differ_block.cc', 'video/capture/screen/differ_block.h', 'video/capture/screen/linux/x_server_pixel_buffer.cc', 'video/capture/screen/linux/x_server_pixel_buffer.h', 'video/capture/screen/mac/desktop_configuration.mm', 'video/capture/screen/mac/desktop_configuration.h', 'video/capture/screen/mac/scoped_pixel_buffer_object.cc', 'video/capture/screen/mac/scoped_pixel_buffer_object.h', 'video/capture/screen/mouse_cursor_shape.cc', 'video/capture/screen/mouse_cursor_shape.h', 'video/capture/screen/screen_capture_data.cc', 'video/capture/screen/screen_capture_data.h', 'video/capture/screen/screen_capture_device.cc', 'video/capture/screen/screen_capture_device.h', 'video/capture/screen/screen_capture_frame.cc', 'video/capture/screen/screen_capture_frame.h', 'video/capture/screen/screen_capture_frame_queue.cc', 'video/capture/screen/screen_capture_frame_queue.h', 'video/capture/screen/screen_capturer.h', 'video/capture/screen/screen_capturer_fake.cc', 'video/capture/screen/screen_capturer_fake.h', 'video/capture/screen/screen_capturer_helper.cc', 'video/capture/screen/screen_capturer_helper.h', 'video/capture/screen/screen_capturer_linux.cc', 'video/capture/screen/screen_capturer_mac.mm', 'video/capture/screen/screen_capturer_win.cc', 'video/capture/screen/shared_buffer.cc', 'video/capture/screen/shared_buffer.h', 'video/capture/screen/win/desktop.cc', 'video/capture/screen/win/desktop.h', 'video/capture/screen/win/scoped_thread_desktop.cc', 'video/capture/screen/win/scoped_thread_desktop.h', 'video/capture/video_capture.h', 'video/capture/video_capture_device.h', 'video/capture/video_capture_device_dummy.cc', 'video/capture/video_capture_device_dummy.h', 'video/capture/video_capture_proxy.cc', 'video/capture/video_capture_proxy.h', 'video/capture/video_capture_types.h', 'video/capture/win/capability_list_win.cc', 'video/capture/win/capability_list_win.h', 'video/capture/win/filter_base_win.cc', 'video/capture/win/filter_base_win.h', 'video/capture/win/pin_base_win.cc', 'video/capture/win/pin_base_win.h', 'video/capture/win/sink_filter_observer_win.h', 'video/capture/win/sink_filter_win.cc', 'video/capture/win/sink_filter_win.h', 'video/capture/win/sink_input_pin_win.cc', 'video/capture/win/sink_input_pin_win.h', 'video/capture/win/video_capture_device_mf_win.cc', 'video/capture/win/video_capture_device_mf_win.h', 'video/capture/win/video_capture_device_win.cc', 'video/capture/win/video_capture_device_win.h', 'video/picture.cc', 'video/picture.h', 'video/video_decode_accelerator.cc', 'video/video_decode_accelerator.h', 'webm/webm_cluster_parser.cc', 'webm/webm_cluster_parser.h', 'webm/webm_constants.h', 'webm/webm_content_encodings.cc', 'webm/webm_content_encodings.h', 'webm/webm_content_encodings_client.cc', 'webm/webm_content_encodings_client.h', 'webm/webm_info_parser.cc', 'webm/webm_info_parser.h', 'webm/webm_parser.cc', 'webm/webm_parser.h', 'webm/webm_stream_parser.cc', 'webm/webm_stream_parser.h', 'webm/webm_tracks_parser.cc', 'webm/webm_tracks_parser.h', ], 'direct_dependent_settings': { 'include_dirs': [ '..', ], }, 'conditions': [ ['arm_neon == 1', { 'defines': [ 'USE_NEON' ], }], ['OS != "ios"', { 'dependencies': [ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', 'shared_memory_support', 'yuv_convert', ], }], ['use_ffmpeg == 1', { 'dependencies': [ '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', ], }, { # use_ffmpeg == 0 # Exclude the sources that depend on ffmpeg. 'sources!': [ 'base/media_posix.cc', 'ffmpeg/ffmpeg_common.cc', 'ffmpeg/ffmpeg_common.h', 'filters/audio_file_reader.cc', 'filters/audio_file_reader.h', 'filters/chunk_demuxer.cc', 'filters/chunk_demuxer.h', 'filters/blocking_url_protocol.cc', 'filters/blocking_url_protocol.h', 'filters/ffmpeg_audio_decoder.cc', 'filters/ffmpeg_audio_decoder.h', 'filters/ffmpeg_demuxer.cc', 'filters/ffmpeg_demuxer.h', 'filters/ffmpeg_glue.cc', 'filters/ffmpeg_glue.h', 'filters/ffmpeg_h264_to_annex_b_bitstream_converter.cc', 'filters/ffmpeg_h264_to_annex_b_bitstream_converter.h', 'filters/ffmpeg_video_decoder.cc', 'filters/ffmpeg_video_decoder.h', 'webm/webm_cluster_parser.cc', 'webm/webm_cluster_parser.h', 'webm/webm_stream_parser.cc', 'webm/webm_stream_parser.h', ], }], ['use_libvpx == 1', { 'dependencies': [ '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx', ], }, { # use_libvpx == 0 # Exclude the sources that depend on libvpx. 'sources!': [ 'filters/vpx_video_decoder.cc', 'filters/vpx_video_decoder.h', ], }], ['OS == "ios"', { 'includes': [ # For shared_memory_support_sources variable. 'shared_memory_support.gypi', ], 'sources': [ 'base/media_stub.cc', # These sources are normally built via a dependency on the # shared_memory_support target, but that target is not built on iOS. # Instead, directly build only the files that are needed for iOS. '<@(shared_memory_support_sources)', ], 'sources/': [ # Exclude everything but iOS-specific files. ['exclude', '\\.(cc|mm)$'], ['include', '_ios\\.(cc|mm)$'], ['include', '(^|/)ios/'], # Re-include specific pieces. # iOS support is limited to audio input only. ['include', '^audio/audio_buffers_state\\.'], ['include', '^audio/audio_input_controller\\.'], ['include', '^audio/audio_manager\\.'], ['include', '^audio/audio_manager_base\\.'], ['include', '^audio/audio_parameters\\.'], ['include', '^audio/fake_audio_input_stream\\.'], ['include', '^audio/fake_audio_output_stream\\.'], ['include', '^base/audio_bus\\.'], ['include', '^base/channel_layout\\.'], ['include', '^base/media_stub\\.cc$'], ], 'link_settings': { 'libraries': [ '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework', '$(SDKROOT)/System/Library/Frameworks/AVFoundation.framework', '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework', ], }, }], ['OS == "android"', { 'sources': [ 'base/media_stub.cc', ], 'link_settings': { 'libraries': [ '-lOpenSLES', ], }, 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/media', ], 'dependencies': [ 'video_capture_android_jni_headers', ], }], # A simple WebM encoder for animated avatars on ChromeOS. ['chromeos==1', { 'dependencies': [ '../third_party/libvpx/libvpx.gyp:libvpx', '../third_party/libyuv/libyuv.gyp:libyuv', ], 'sources': [ 'webm/chromeos/ebml_writer.cc', 'webm/chromeos/ebml_writer.h', 'webm/chromeos/webm_encoder.cc', 'webm/chromeos/webm_encoder.h', ], }], ['OS=="linux" or OS=="freebsd" or OS=="solaris"', { 'link_settings': { 'libraries': [ '-lasound', ], }, }], ['OS=="openbsd"', { 'sources/': [ ['exclude', '/alsa_' ], ['exclude', '/audio_manager_linux' ] ], 'link_settings': { 'libraries': [ ], }, }], ['OS!="openbsd"', { 'sources!': [ 'audio/openbsd/audio_manager_openbsd.cc', 'audio/openbsd/audio_manager_openbsd.h', ], }], ['OS=="linux"', { 'variables': { 'conditions': [ ['sysroot!=""', { 'pkg-config': '../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"', }, { 'pkg-config': 'pkg-config' }], ], }, 'link_settings': { 'libraries': [ '-lX11', '-lXdamage', '-lXext', '-lXfixes', ], }, 'conditions': [ ['use_cras == 1', { 'cflags': [ '="2012"', { 'sources': [ 'base/simd/filter_yuv_mmx.cc', ], }], [ 'target_arch == "x64"', { # Source files optimized for X64 systems. 'sources': [ 'base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm', 'base/simd/scale_yuv_to_rgb_sse2_x64.asm', ], 'variables': { 'yasm_flags': [ '-DARCH_X86_64', ], }, }], [ 'os_posix == 1 and OS != "mac" and OS != "android"', { 'cflags': [ '-msse2', ], }], [ 'OS == "mac"', { 'configurations': { 'Debug': { 'xcode_settings': { # gcc on the mac builds horribly unoptimized sse code in # debug mode. Since this is rarely going to be debugged, # run with full optimizations in Debug as well as Release. 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 }, }, }, 'variables': { 'yasm_flags': [ '-DPREFIX', '-DMACHO', ], }, }], [ 'os_posix==1 and OS!="mac"', { 'variables': { 'conditions': [ [ 'target_arch=="ia32"', { 'yasm_flags': [ '-DX86_32', '-DELF', ], }, { 'yasm_flags': [ '-DELF', '-DPIC', ], }], ], }, }], ], 'variables': { 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/media', '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..', ], }, 'msvs_2010_disable_uldi_when_referenced': 1, 'includes': [ '../third_party/yasm/yasm_compile.gypi', ], }, { 'target_name': 'yuv_convert_simd_c', 'type': 'static_library', 'include_dirs': [ '..', ], 'sources': [ 'base/simd/convert_rgb_to_yuv.h', 'base/simd/convert_rgb_to_yuv_c.cc', 'base/simd/convert_yuv_to_rgb.h', 'base/simd/convert_yuv_to_rgb_c.cc', 'base/simd/filter_yuv.h', 'base/simd/filter_yuv_c.cc', 'base/simd/yuv_to_rgb_table.cc', 'base/simd/yuv_to_rgb_table.h', ], }, { 'target_name': 'seek_tester', 'type': 'executable', 'dependencies': [ 'media', '../base/base.gyp:base', ], 'sources': [ 'tools/seek_tester/seek_tester.cc', ], }, { 'target_name': 'demuxer_bench', 'type': 'executable', 'dependencies': [ 'media', '../base/base.gyp:base', ], 'sources': [ 'tools/demuxer_bench/demuxer_bench.cc', ], }, ], }], ['(OS == "win" or toolkit_uses_gtk == 1) and use_aura != 1', { 'targets': [ { 'target_name': 'shader_bench', 'type': 'executable', 'dependencies': [ 'media', 'yuv_convert', '../base/base.gyp:base', '../ui/gl/gl.gyp:gl', '../ui/ui.gyp:ui', ], 'sources': [ 'tools/shader_bench/cpu_color_painter.cc', 'tools/shader_bench/cpu_color_painter.h', 'tools/shader_bench/gpu_color_painter.cc', 'tools/shader_bench/gpu_color_painter.h', 'tools/shader_bench/gpu_painter.cc', 'tools/shader_bench/gpu_painter.h', 'tools/shader_bench/painter.cc', 'tools/shader_bench/painter.h', 'tools/shader_bench/shader_bench.cc', 'tools/shader_bench/window.cc', 'tools/shader_bench/window.h', ], 'conditions': [ ['toolkit_uses_gtk == 1', { 'dependencies': [ '../build/linux/system.gyp:gtk', ], 'sources': [ 'tools/shader_bench/window_linux.cc', ], }], ['OS=="win"', { 'dependencies': [ '../third_party/angle/src/build_angle.gyp:libEGL', '../third_party/angle/src/build_angle.gyp:libGLESv2', ], 'sources': [ 'tools/shader_bench/window_win.cc', ], }], ], }, ], }], ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', { 'targets': [ { 'target_name': 'player_x11', 'type': 'executable', 'dependencies': [ 'media', 'yuv_convert', '../base/base.gyp:base', '../ui/gl/gl.gyp:gl', '../ui/ui.gyp:ui', ], 'link_settings': { 'libraries': [ '-ldl', '-lX11', '-lXrender', '-lXext', ], }, 'sources': [ 'tools/player_x11/data_source_logger.cc', 'tools/player_x11/data_source_logger.h', 'tools/player_x11/gl_video_renderer.cc', 'tools/player_x11/gl_video_renderer.h', 'tools/player_x11/player_x11.cc', 'tools/player_x11/x11_video_renderer.cc', 'tools/player_x11/x11_video_renderer.h', ], }, ], }], # Special target to wrap a gtest_target_type==shared_library # media_unittests into an android apk for execution. ['OS == "android" and gtest_target_type == "shared_library"', { 'targets': [ { 'target_name': 'media_unittests_apk', 'type': 'none', 'dependencies': [ 'media_java', 'media_unittests', ], 'variables': { 'test_suite_name': 'media_unittests', 'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)media_unittests<(SHARED_LIB_SUFFIX)', }, 'includes': [ '../build/apk_test.gypi' ], }, ], }], ['OS == "android"', { 'targets': [ { 'target_name': 'media_player_jni_headers', 'type': 'none', 'variables': { 'jni_gen_dir': 'media', 'input_java_class': 'android/media/MediaPlayer.class', 'input_jar_file': '<(android_sdk)/android.jar', }, 'includes': [ '../build/jar_file_jni_generator.gypi' ], }, { 'target_name': 'player_android_jni_headers', 'type': 'none', 'dependencies': [ 'media_player_jni_headers', ], 'sources': [ 'base/android/java/src/org/chromium/media/MediaPlayerBridge.java', 'base/android/java/src/org/chromium/media/MediaPlayerListener.java', ], 'variables': { 'jni_gen_dir': 'media', }, 'includes': [ '../build/jni_generator.gypi' ], }, { 'target_name': 'camera_jni_headers', 'type': 'none', 'variables': { 'jni_gen_dir': 'media', 'input_java_class': 'android/hardware/Camera.class', 'input_jar_file': '<(android_sdk)/android.jar', }, 'includes': [ '../build/jar_file_jni_generator.gypi' ], }, { 'target_name': 'video_capture_android_jni_headers', 'type': 'none', 'dependencies': [ 'camera_jni_headers', ], 'sources': [ 'base/android/java/src/org/chromium/media/VideoCapture.java', ], 'variables': { 'jni_gen_dir': 'media', }, 'includes': [ '../build/jni_generator.gypi' ], }, { 'target_name': 'player_android', 'type': 'static_library', 'sources': [ 'base/android/media_jni_registrar.cc', 'base/android/media_jni_registrar.h', 'base/android/media_player_bridge.cc', 'base/android/media_player_bridge.h', 'base/android/media_player_listener.cc', 'base/android/media_player_listener.h', ], 'dependencies': [ '../base/base.gyp:base', 'player_android_jni_headers', ], 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/media', ], }, { 'target_name': 'media_java', 'type': 'none', 'dependencies': [ '../base/base.gyp:base', ], 'export_dependent_settings': [ '../base/base.gyp:base', ], 'variables': { 'package_name': 'media', 'java_in_dir': 'base/android/java', }, 'includes': [ '../build/java.gypi' ], }, ], }], ['OS != "android" and OS != "ios"', { # Android and iOS do not use ffmpeg, so disable the targets which require # it. 'targets': [ { 'target_name': 'ffmpeg_unittests', 'type': 'executable', 'dependencies': [ '../base/base.gyp:base', '../base/base.gyp:base_i18n', '../base/base.gyp:test_support_base', '../base/base.gyp:test_support_perf', '../testing/gtest.gyp:gtest', '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', 'media', 'media_test_support', ], 'sources': [ 'ffmpeg/ffmpeg_unittest.cc', ], 'conditions': [ ['toolkit_uses_gtk == 1', { 'dependencies': [ # Needed for the following #include chain: # base/run_all_unittests.cc # ../base/test_suite.h # gtk/gtk.h '../build/linux/system.gyp:gtk', ], 'conditions': [ ['linux_use_tcmalloc==1', { 'dependencies': [ '../base/allocator/allocator.gyp:allocator', ], }], ], }], ], }, { 'target_name': 'ffmpeg_regression_tests', 'type': 'executable', 'dependencies': [ '../base/base.gyp:test_support_base', '../testing/gmock.gyp:gmock', '../testing/gtest.gyp:gtest', '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', 'media', 'media_test_support', ], 'sources': [ 'base/run_all_unittests.cc', 'base/test_data_util.cc', 'ffmpeg/ffmpeg_regression_tests.cc', 'filters/pipeline_integration_test_base.cc', ], 'conditions': [ ['os_posix==1 and OS!="mac"', { 'conditions': [ ['linux_use_tcmalloc==1', { 'dependencies': [ '../base/allocator/allocator.gyp:allocator', ], }], ], }], ], }, { 'target_name': 'ffmpeg_tests', 'type': 'executable', 'dependencies': [ '../base/base.gyp:base', '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', 'media', ], 'sources': [ 'test/ffmpeg_tests/ffmpeg_tests.cc', ], }, { 'target_name': 'media_bench', 'type': 'executable', 'dependencies': [ '../base/base.gyp:base', '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', 'media', ], 'sources': [ 'tools/media_bench/media_bench.cc', ], }, ], }], [ 'screen_capture_supported==1 and (target_arch=="ia32" or target_arch=="x64")', { 'targets': [ { 'target_name': 'differ_block_sse2', 'type': 'static_library', 'conditions': [ [ 'os_posix == 1 and OS != "mac"', { 'cflags': [ '-msse2', ], }], ], 'include_dirs': [ '..', ], 'sources': [ 'video/capture/screen/differ_block_sse2.cc', 'video/capture/screen/differ_block_sse2.h', ], }, # end of target differ_block_sse2 ], }], ], }