media.gyp revision 868fa2fe829687343ffae624259930155e16dbd8
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'chromium_code': 1,
8    # Override to dynamically link the cras (ChromeOS audio) library.
9    'use_cras%': 0,
10    # Option e.g. for Linux distributions to link pulseaudio directly
11    # (DT_NEEDED) instead of using dlopen. This helps with automated
12    # detection of ABI mismatches and prevents silent errors.
13    'linux_link_pulseaudio%': 0,
14    'conditions': [
15      ['OS=="android" or OS=="ios"', {
16        # Android and iOS don't use ffmpeg.
17        'media_use_ffmpeg%': 0,
18        # Android and iOS don't use libvpx.
19        'media_use_libvpx%': 0,
20      }, {  # 'OS!="android" and OS!="ios"'
21        'media_use_ffmpeg%': 1,
22        'media_use_libvpx%': 1,
23      }],
24      # Screen capturer works only on Windows, OSX and Linux (with X11).
25      # TODO(sergeyu): Remove this variable once screen_capture_device.cc is
26      # moved to content.
27      ['OS=="win" or OS=="mac" or (OS=="linux" and use_x11==1)', {
28        'screen_capture_supported%': 1,
29      }, {
30        'screen_capture_supported%': 0,
31      }],
32      # ALSA usage.
33      ['OS=="linux" or OS=="freebsd" or OS=="solaris"', {
34        'use_alsa%': 1,
35      }, {
36        'use_alsa%': 0,
37      }],
38      ['os_posix==1 and OS!="mac" and OS!="ios" and OS!="android" and chromeos!=1', {
39        'use_pulseaudio%': 1,
40      }, {
41        'use_pulseaudio%': 0,
42      }],
43    ],
44  },
45  'targets': [
46    {
47      'target_name': 'media',
48      'type': '<(component)',
49      'dependencies': [
50        '../base/base.gyp:base',
51        '../crypto/crypto.gyp:crypto',
52        '../skia/skia.gyp:skia',
53        '../third_party/opus/opus.gyp:opus',
54        '../ui/ui.gyp:ui',
55        '../url/url.gyp:url_lib',
56      ],
57      'defines': [
58        'MEDIA_IMPLEMENTATION',
59      ],
60      'include_dirs': [
61        '..',
62      ],
63      'sources': [
64        'audio/agc_audio_stream.h',
65        'audio/android/audio_manager_android.cc',
66        'audio/android/audio_manager_android.h',
67        'audio/android/opensles_input.cc',
68        'audio/android/opensles_input.h',
69        'audio/android/opensles_output.cc',
70        'audio/android/opensles_output.h',
71        'audio/async_socket_io_handler.h',
72        'audio/async_socket_io_handler_posix.cc',
73        'audio/async_socket_io_handler_win.cc',
74        'audio/audio_buffers_state.cc',
75        'audio/audio_buffers_state.h',
76        'audio/audio_device_name.cc',
77        'audio/audio_device_name.h',
78        'audio/audio_device_thread.cc',
79        'audio/audio_device_thread.h',
80        'audio/audio_input_controller.cc',
81        'audio/audio_input_controller.h',
82        'audio/audio_input_device.cc',
83        'audio/audio_input_device.h',
84        'audio/audio_input_ipc.cc',
85        'audio/audio_input_ipc.h',
86        'audio/audio_io.h',
87        'audio/audio_manager.cc',
88        'audio/audio_manager.h',
89        'audio/audio_manager_base.cc',
90        'audio/audio_manager_base.h',
91        'audio/audio_output_controller.cc',
92        'audio/audio_output_controller.h',
93        'audio/audio_output_device.cc',
94        'audio/audio_output_device.h',
95        'audio/audio_output_dispatcher.cc',
96        'audio/audio_output_dispatcher.h',
97        'audio/audio_output_dispatcher_impl.cc',
98        'audio/audio_output_dispatcher_impl.h',
99        'audio/audio_output_ipc.cc',
100        'audio/audio_output_ipc.h',
101        'audio/audio_output_proxy.cc',
102        'audio/audio_output_proxy.h',
103        'audio/audio_output_resampler.cc',
104        'audio/audio_output_resampler.h',
105        'audio/audio_silence_detector.cc',
106        'audio/audio_silence_detector.h',
107        'audio/audio_source_diverter.h',
108        'audio/audio_util.cc',
109        'audio/audio_util.h',
110        'audio/cras/audio_manager_cras.cc',
111        'audio/cras/audio_manager_cras.h',
112        'audio/cras/cras_input.cc',
113        'audio/cras/cras_input.h',
114        'audio/cras/cras_unified.cc',
115        'audio/cras/cras_unified.h',
116        'audio/cross_process_notification.cc',
117        'audio/cross_process_notification.h',
118        'audio/cross_process_notification_posix.cc',
119        'audio/cross_process_notification_win.cc',
120        'audio/fake_audio_consumer.cc',
121        'audio/fake_audio_consumer.h',
122        'audio/fake_audio_input_stream.cc',
123        'audio/fake_audio_input_stream.h',
124        'audio/fake_audio_output_stream.cc',
125        'audio/fake_audio_output_stream.h',
126        'audio/ios/audio_manager_ios.h',
127        'audio/ios/audio_manager_ios.mm',
128        'audio/ios/audio_session_util_ios.h',
129        'audio/ios/audio_session_util_ios.mm',
130        'audio/linux/alsa_input.cc',
131        'audio/linux/alsa_input.h',
132        'audio/linux/alsa_output.cc',
133        'audio/linux/alsa_output.h',
134        'audio/linux/alsa_util.cc',
135        'audio/linux/alsa_util.h',
136        'audio/linux/alsa_wrapper.cc',
137        'audio/linux/alsa_wrapper.h',
138        'audio/linux/audio_manager_linux.cc',
139        'audio/linux/audio_manager_linux.h',
140        'audio/mac/aggregate_device_manager.cc',
141        'audio/mac/aggregate_device_manager.h',
142        'audio/mac/audio_auhal_mac.cc',
143        'audio/mac/audio_auhal_mac.h',
144        'audio/mac/audio_device_listener_mac.cc',
145        'audio/mac/audio_device_listener_mac.h',
146        'audio/mac/audio_input_mac.cc',
147        'audio/mac/audio_input_mac.h',
148        'audio/mac/audio_low_latency_input_mac.cc',
149        'audio/mac/audio_low_latency_input_mac.h',
150        'audio/mac/audio_low_latency_output_mac.cc',
151        'audio/mac/audio_low_latency_output_mac.h',
152        'audio/mac/audio_manager_mac.cc',
153        'audio/mac/audio_manager_mac.h',
154        'audio/mac/audio_synchronized_mac.cc',
155        'audio/mac/audio_synchronized_mac.h',
156        'audio/mac/audio_unified_mac.cc',
157        'audio/mac/audio_unified_mac.h',
158        'audio/null_audio_sink.cc',
159        'audio/null_audio_sink.h',
160        'audio/openbsd/audio_manager_openbsd.cc',
161        'audio/openbsd/audio_manager_openbsd.h',
162        'audio/pulse/audio_manager_pulse.cc',
163        'audio/pulse/audio_manager_pulse.h',
164        'audio/pulse/pulse_output.cc',
165        'audio/pulse/pulse_output.h',
166        'audio/pulse/pulse_input.cc',
167        'audio/pulse/pulse_input.h',
168        'audio/pulse/pulse_unified.cc',
169        'audio/pulse/pulse_unified.h',
170        'audio/pulse/pulse_util.cc',
171        'audio/pulse/pulse_util.h',
172        'audio/sample_rates.cc',
173        'audio/sample_rates.h',
174        'audio/scoped_loop_observer.cc',
175        'audio/scoped_loop_observer.h',
176        'audio/simple_sources.cc',
177        'audio/simple_sources.h',
178        'audio/virtual_audio_input_stream.cc',
179        'audio/virtual_audio_input_stream.h',
180        'audio/virtual_audio_output_stream.cc',
181        'audio/virtual_audio_output_stream.h',
182        'audio/win/audio_device_listener_win.cc',
183        'audio/win/audio_device_listener_win.h',
184        'audio/win/audio_low_latency_input_win.cc',
185        'audio/win/audio_low_latency_input_win.h',
186        'audio/win/audio_low_latency_output_win.cc',
187        'audio/win/audio_low_latency_output_win.h',
188        'audio/win/audio_manager_win.cc',
189        'audio/win/audio_manager_win.h',
190        'audio/win/audio_unified_win.cc',
191        'audio/win/audio_unified_win.h',
192        'audio/win/avrt_wrapper_win.cc',
193        'audio/win/avrt_wrapper_win.h',
194        'audio/win/device_enumeration_win.cc',
195        'audio/win/device_enumeration_win.h',
196        'audio/win/core_audio_util_win.cc',
197        'audio/win/core_audio_util_win.h',
198        'audio/win/wavein_input_win.cc',
199        'audio/win/wavein_input_win.h',
200        'audio/win/waveout_output_win.cc',
201        'audio/win/waveout_output_win.h',
202        'base/android/demuxer_stream_player_params.cc',
203        'base/android/demuxer_stream_player_params.h',
204        'base/android/media_player_manager.h',
205        'base/android/media_resource_getter.cc',
206        'base/android/media_resource_getter.h',
207        'base/audio_capturer_source.h',
208        'base/audio_converter.cc',
209        'base/audio_converter.h',
210        'base/audio_decoder.cc',
211        'base/audio_decoder.h',
212        'base/audio_decoder_config.cc',
213        'base/audio_decoder_config.h',
214        'base/audio_fifo.cc',
215        'base/audio_fifo.h',
216        'base/audio_hardware_config.cc',
217        'base/audio_hardware_config.h',
218        'base/audio_hash.cc',
219        'base/audio_hash.h',
220        'base/audio_pull_fifo.cc',
221        'base/audio_pull_fifo.h',
222        'base/audio_renderer.cc',
223        'base/audio_renderer.h',
224        'base/audio_renderer_sink.h',
225        'base/audio_renderer_mixer.cc',
226        'base/audio_renderer_mixer.h',
227        'base/audio_renderer_mixer_input.cc',
228        'base/audio_renderer_mixer_input.h',
229        'base/audio_splicer.cc',
230        'base/audio_splicer.h',
231        'base/audio_timestamp_helper.cc',
232        'base/audio_timestamp_helper.h',
233        'base/bind_to_loop.h',
234        'base/bitstream_buffer.h',
235        'base/bit_reader.cc',
236        'base/bit_reader.h',
237        'base/buffers.h',
238        'base/byte_queue.cc',
239        'base/byte_queue.h',
240        'base/callback_holder.h',
241        'base/channel_mixer.cc',
242        'base/channel_mixer.h',
243        'base/clock.cc',
244        'base/clock.h',
245        'base/container_names.cc',
246        'base/container_names.h',
247        'base/data_buffer.cc',
248        'base/data_buffer.h',
249        'base/data_source.cc',
250        'base/data_source.h',
251        'base/decoder_buffer.cc',
252        'base/decoder_buffer.h',
253        'base/decoder_buffer_queue.cc',
254        'base/decoder_buffer_queue.h',
255        'base/decryptor.cc',
256        'base/decryptor.h',
257        'base/decrypt_config.cc',
258        'base/decrypt_config.h',
259        'base/demuxer.cc',
260        'base/demuxer.h',
261        'base/demuxer_stream.cc',
262        'base/demuxer_stream.h',
263        'base/djb2.cc',
264        'base/djb2.h',
265        'base/filter_collection.cc',
266        'base/filter_collection.h',
267        'base/media.cc',
268        'base/media.h',
269        'base/media_keys.cc',
270        'base/media_keys.h',
271        'base/media_log.cc',
272        'base/media_log.h',
273        'base/media_log_event.h',
274        'base/media_posix.cc',
275        'base/media_switches.cc',
276        'base/media_switches.h',
277        'base/media_win.cc',
278        'base/multi_channel_resampler.cc',
279        'base/multi_channel_resampler.h',
280        'base/pipeline.cc',
281        'base/pipeline.h',
282        'base/pipeline_status.cc',
283        'base/pipeline_status.h',
284        'base/ranges.cc',
285        'base/ranges.h',
286        'base/scoped_histogram_timer.h',
287        'base/seekable_buffer.cc',
288        'base/seekable_buffer.h',
289        'base/serial_runner.cc',
290        'base/serial_runner.h',
291        'base/simd/convert_rgb_to_yuv.h',
292        'base/simd/convert_rgb_to_yuv_c.cc',
293        'base/simd/convert_yuv_to_rgb.h',
294        'base/simd/convert_yuv_to_rgb_c.cc',
295        'base/simd/filter_yuv.h',
296        'base/simd/filter_yuv_c.cc',
297        'base/simd/yuv_to_rgb_table.cc',
298        'base/simd/yuv_to_rgb_table.h',
299        'base/sinc_resampler.cc',
300        'base/sinc_resampler.h',
301        'base/stream_parser.cc',
302        'base/stream_parser.h',
303        'base/stream_parser_buffer.cc',
304        'base/stream_parser_buffer.h',
305        'base/text_track.h',
306        'base/video_decoder.cc',
307        'base/video_decoder.h',
308        'base/video_decoder_config.cc',
309        'base/video_decoder_config.h',
310        'base/video_frame.cc',
311        'base/video_frame.h',
312        'base/video_renderer.cc',
313        'base/video_renderer.h',
314        'base/video_util.cc',
315        'base/video_util.h',
316        'base/yuv_convert.cc',
317        'base/yuv_convert.h',
318        'crypto/aes_decryptor.cc',
319        'crypto/aes_decryptor.h',
320        'ffmpeg/ffmpeg_common.cc',
321        'ffmpeg/ffmpeg_common.h',
322        'filters/audio_decoder_selector.cc',
323        'filters/audio_decoder_selector.h',
324        'filters/audio_file_reader.cc',
325        'filters/audio_file_reader.h',
326        'filters/audio_renderer_algorithm.cc',
327        'filters/audio_renderer_algorithm.h',
328        'filters/audio_renderer_impl.cc',
329        'filters/audio_renderer_impl.h',
330        'filters/blocking_url_protocol.cc',
331        'filters/blocking_url_protocol.h',
332        'filters/chunk_demuxer.cc',
333        'filters/chunk_demuxer.h',
334        'filters/decrypting_audio_decoder.cc',
335        'filters/decrypting_audio_decoder.h',
336        'filters/decrypting_demuxer_stream.cc',
337        'filters/decrypting_demuxer_stream.h',
338        'filters/decrypting_video_decoder.cc',
339        'filters/decrypting_video_decoder.h',
340        'filters/fake_demuxer_stream.cc',
341        'filters/fake_demuxer_stream.h',
342        'filters/fake_video_decoder.cc',
343        'filters/fake_video_decoder.h',
344        'filters/ffmpeg_audio_decoder.cc',
345        'filters/ffmpeg_audio_decoder.h',
346        'filters/ffmpeg_demuxer.cc',
347        'filters/ffmpeg_demuxer.h',
348        'filters/ffmpeg_glue.cc',
349        'filters/ffmpeg_glue.h',
350        'filters/ffmpeg_h264_to_annex_b_bitstream_converter.cc',
351        'filters/ffmpeg_h264_to_annex_b_bitstream_converter.h',
352        'filters/ffmpeg_video_decoder.cc',
353        'filters/ffmpeg_video_decoder.h',
354        'filters/file_data_source.cc',
355        'filters/file_data_source.h',
356        'filters/gpu_video_decoder.cc',
357        'filters/gpu_video_decoder.h',
358        'filters/h264_to_annex_b_bitstream_converter.cc',
359        'filters/h264_to_annex_b_bitstream_converter.h',
360        'filters/in_memory_url_protocol.cc',
361        'filters/in_memory_url_protocol.h',
362        'filters/opus_audio_decoder.cc',
363        'filters/opus_audio_decoder.h',
364        'filters/skcanvas_video_renderer.cc',
365        'filters/skcanvas_video_renderer.h',
366        'filters/source_buffer_stream.cc',
367        'filters/source_buffer_stream.h',
368        'filters/stream_parser_factory.cc',
369        'filters/stream_parser_factory.h',
370        'filters/video_decoder_selector.cc',
371        'filters/video_decoder_selector.h',
372        'filters/video_frame_stream.cc',
373        'filters/video_frame_stream.h',
374        'filters/video_renderer_base.cc',
375        'filters/video_renderer_base.h',
376        'filters/vpx_video_decoder.cc',
377        'filters/vpx_video_decoder.h',
378        'video/capture/android/video_capture_device_android.cc',
379        'video/capture/android/video_capture_device_android.h',
380        'video/capture/fake_video_capture_device.cc',
381        'video/capture/fake_video_capture_device.h',
382        'video/capture/linux/video_capture_device_linux.cc',
383        'video/capture/linux/video_capture_device_linux.h',
384        'video/capture/mac/video_capture_device_mac.h',
385        'video/capture/mac/video_capture_device_mac.mm',
386        'video/capture/mac/video_capture_device_qtkit_mac.h',
387        'video/capture/mac/video_capture_device_qtkit_mac.mm',
388
389        # TODO(sergeyu): Move screen_capture_device.cc to content and remove it
390        # from here.
391        'video/capture/screen/screen_capture_device.cc',
392        'video/capture/screen/screen_capture_device.h',
393        'video/capture/video_capture.h',
394        'video/capture/video_capture_device.h',
395        'video/capture/video_capture_device_dummy.cc',
396        'video/capture/video_capture_device_dummy.h',
397        'video/capture/video_capture_proxy.cc',
398        'video/capture/video_capture_proxy.h',
399        'video/capture/video_capture_types.h',
400        'video/capture/win/capability_list_win.cc',
401        'video/capture/win/capability_list_win.h',
402        'video/capture/win/filter_base_win.cc',
403        'video/capture/win/filter_base_win.h',
404        'video/capture/win/pin_base_win.cc',
405        'video/capture/win/pin_base_win.h',
406        'video/capture/win/sink_filter_observer_win.h',
407        'video/capture/win/sink_filter_win.cc',
408        'video/capture/win/sink_filter_win.h',
409        'video/capture/win/sink_input_pin_win.cc',
410        'video/capture/win/sink_input_pin_win.h',
411        'video/capture/win/video_capture_device_mf_win.cc',
412        'video/capture/win/video_capture_device_mf_win.h',
413        'video/capture/win/video_capture_device_win.cc',
414        'video/capture/win/video_capture_device_win.h',
415        'video/picture.cc',
416        'video/picture.h',
417        'video/video_decode_accelerator.cc',
418        'video/video_decode_accelerator.h',
419        'webm/webm_audio_client.cc',
420        'webm/webm_audio_client.h',
421        'webm/webm_cluster_parser.cc',
422        'webm/webm_cluster_parser.h',
423        'webm/webm_constants.cc',
424        'webm/webm_constants.h',
425        'webm/webm_content_encodings.cc',
426        'webm/webm_content_encodings.h',
427        'webm/webm_content_encodings_client.cc',
428        'webm/webm_content_encodings_client.h',
429        'webm/webm_crypto_helpers.cc',
430        'webm/webm_crypto_helpers.h',
431        'webm/webm_info_parser.cc',
432        'webm/webm_info_parser.h',
433        'webm/webm_parser.cc',
434        'webm/webm_parser.h',
435        'webm/webm_stream_parser.cc',
436        'webm/webm_stream_parser.h',
437        'webm/webm_tracks_parser.cc',
438        'webm/webm_tracks_parser.h',
439        'webm/webm_video_client.cc',
440        'webm/webm_video_client.h',
441        'webm/webm_webvtt_parser.cc',
442        'webm/webm_webvtt_parser.h'
443      ],
444      'direct_dependent_settings': {
445        'include_dirs': [
446          '..',
447        ],
448      },
449      'conditions': [
450        ['arm_neon==1', {
451          'defines': [
452            'USE_NEON'
453          ],
454        }],
455        ['OS!="ios"', {
456          'dependencies': [
457            '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
458            'shared_memory_support',
459          ],
460        }],
461        ['media_use_ffmpeg==1', {
462          'dependencies': [
463            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
464          ],
465        }, {  # media_use_ffmpeg==0
466          # Exclude the sources that depend on ffmpeg.
467          'sources!': [
468            'base/container_names.cc',
469            'base/container_names.h',
470            'base/media_posix.cc',
471            'ffmpeg/ffmpeg_common.cc',
472            'ffmpeg/ffmpeg_common.h',
473            'filters/audio_file_reader.cc',
474            'filters/audio_file_reader.h',
475            'filters/blocking_url_protocol.cc',
476            'filters/blocking_url_protocol.h',
477            'filters/ffmpeg_audio_decoder.cc',
478            'filters/ffmpeg_audio_decoder.h',
479            'filters/ffmpeg_demuxer.cc',
480            'filters/ffmpeg_demuxer.h',
481            'filters/ffmpeg_glue.cc',
482            'filters/ffmpeg_glue.h',
483            'filters/ffmpeg_h264_to_annex_b_bitstream_converter.cc',
484            'filters/ffmpeg_h264_to_annex_b_bitstream_converter.h',
485            'filters/ffmpeg_video_decoder.cc',
486            'filters/ffmpeg_video_decoder.h',
487          ],
488        }],
489        ['media_use_libvpx==1', {
490          'dependencies': [
491            '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
492          ],
493        }, {  # media_use_libvpx==0
494          'direct_dependent_settings': {
495            'defines': [
496              'MEDIA_DISABLE_LIBVPX',
497            ],
498          },
499          # Exclude the sources that depend on libvpx.
500          'sources!': [
501            'filters/vpx_video_decoder.cc',
502            'filters/vpx_video_decoder.h',
503          ],
504        }],
505        ['OS=="ios"', {
506          'includes': [
507            # For shared_memory_support_sources variable.
508            'shared_memory_support.gypi',
509          ],
510          'sources': [
511            'base/media_stub.cc',
512            # These sources are normally built via a dependency on the
513            # shared_memory_support target, but that target is not built on iOS.
514            # Instead, directly build only the files that are needed for iOS.
515            '<@(shared_memory_support_sources)',
516          ],
517          'sources/': [
518            # Exclude everything but iOS-specific files.
519            ['exclude', '\\.(cc|mm)$'],
520            ['include', '_ios\\.(cc|mm)$'],
521            ['include', '(^|/)ios/'],
522            # Re-include specific pieces.
523            # iOS support is limited to audio input only.
524            ['include', '^audio/audio_buffers_state\\.'],
525            ['include', '^audio/audio_input_controller\\.'],
526            ['include', '^audio/audio_manager\\.'],
527            ['include', '^audio/audio_manager_base\\.'],
528            ['include', '^audio/audio_parameters\\.'],
529            ['include', '^audio/fake_audio_consumer\\.'],
530            ['include', '^audio/fake_audio_input_stream\\.'],
531            ['include', '^audio/fake_audio_output_stream\\.'],
532            ['include', '^base/audio_bus\\.'],
533            ['include', '^base/channel_layout\\.'],
534            ['include', '^base/media\\.cc$'],
535            ['include', '^base/media_stub\\.cc$'],
536            ['include', '^base/media_switches\\.'],
537            ['include', '^base/vector_math\\.'],
538          ],
539          'link_settings': {
540            'libraries': [
541              '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
542              '$(SDKROOT)/System/Library/Frameworks/AVFoundation.framework',
543              '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
544            ],
545          },
546        }],
547        ['OS=="android"', {
548          'link_settings': {
549            'libraries': [
550              '-lOpenSLES',
551            ],
552          },
553          'include_dirs': [
554            '<(SHARED_INTERMEDIATE_DIR)/media',
555          ],
556          'dependencies': [
557            'media_android_jni_headers',
558            'player_android',
559            'video_capture_android_jni_headers',
560          ],
561          'sources': [
562            'base/media.cc',
563            'base/media.h',
564            'base/media_stub.cc',
565          ],
566          'conditions': [
567            ['android_webview_build==0', {
568              'dependencies': [
569                'media_java',
570              ],
571            }],
572          ],
573        }],
574        # A simple WebM encoder for animated avatars on ChromeOS.
575        ['chromeos==1', {
576          'dependencies': [
577            '../third_party/libvpx/libvpx.gyp:libvpx',
578            '../third_party/libyuv/libyuv.gyp:libyuv',
579          ],
580          'sources': [
581            'webm/chromeos/ebml_writer.cc',
582            'webm/chromeos/ebml_writer.h',
583            'webm/chromeos/webm_encoder.cc',
584            'webm/chromeos/webm_encoder.h',
585          ],
586        }],
587        ['use_alsa==1', {
588          'link_settings': {
589            'libraries': [
590              '-lasound',
591            ],
592          },
593        }, { # use_alsa==0
594          'sources/': [ ['exclude', '/alsa_'],
595                      ['exclude', '/audio_manager_linux'] ],
596        }],
597        ['OS!="openbsd"', {
598          'sources!': [
599            'audio/openbsd/audio_manager_openbsd.cc',
600            'audio/openbsd/audio_manager_openbsd.h',
601          ],
602        }],
603        ['OS=="linux"', {
604          'variables': {
605            'conditions': [
606              ['sysroot!=""', {
607                'pkg-config': '../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
608              }, {
609                'pkg-config': 'pkg-config'
610              }],
611            ],
612          },
613          'conditions': [
614            ['use_x11==1', {
615              'link_settings': {
616                'libraries': [
617                  '-lX11',
618                  '-lXdamage',
619                  '-lXext',
620                  '-lXfixes',
621                ],
622              },
623            }],
624            ['use_cras==1', {
625              'cflags': [
626                '<!@(<(pkg-config) --cflags libcras)',
627              ],
628              'link_settings': {
629                'libraries': [
630                  '<!@(<(pkg-config) --libs libcras)',
631                ],
632              },
633              'defines': [
634                'USE_CRAS',
635              ],
636            }, {  # else: use_cras==0
637              'sources!': [
638                'audio/cras/audio_manager_cras.cc',
639                'audio/cras/audio_manager_cras.h',
640                'audio/cras/cras_input.cc',
641                'audio/cras/cras_input.h',
642                'audio/cras/cras_unified.cc',
643                'audio/cras/cras_unified.h',
644              ],
645            }],
646          ],
647        }],
648        ['OS!="linux"', {
649          'sources!': [
650            'audio/cras/audio_manager_cras.cc',
651            'audio/cras/audio_manager_cras.h',
652            'audio/cras/cras_input.cc',
653            'audio/cras/cras_input.h',
654            'audio/cras/cras_unified.cc',
655            'audio/cras/cras_unified.h',
656          ],
657        }],
658        ['use_pulseaudio==1', {
659          'cflags': [
660            '<!@(pkg-config --cflags libpulse)',
661          ],
662          'defines': [
663            'USE_PULSEAUDIO',
664          ],
665          'conditions': [
666            ['linux_link_pulseaudio==0', {
667              'defines': [
668                'DLOPEN_PULSEAUDIO',
669              ],
670              'variables': {
671                'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
672                'extra_header': 'audio/pulse/pulse_stub_header.fragment',
673                'sig_files': ['audio/pulse/pulse.sigs'],
674                'outfile_type': 'posix_stubs',
675                'stubs_filename_root': 'pulse_stubs',
676                'project_path': 'media/audio/pulse',
677                'intermediate_dir': '<(INTERMEDIATE_DIR)',
678                'output_root': '<(SHARED_INTERMEDIATE_DIR)/pulse',
679              },
680              'include_dirs': [
681                '<(output_root)',
682              ],
683              'actions': [
684                {
685                  'action_name': 'generate_stubs',
686                  'inputs': [
687                    '<(generate_stubs_script)',
688                    '<(extra_header)',
689                    '<@(sig_files)',
690                  ],
691                  'outputs': [
692                    '<(intermediate_dir)/<(stubs_filename_root).cc',
693                    '<(output_root)/<(project_path)/<(stubs_filename_root).h',
694                  ],
695                  'action': ['python',
696                             '<(generate_stubs_script)',
697                             '-i', '<(intermediate_dir)',
698                             '-o', '<(output_root)/<(project_path)',
699                             '-t', '<(outfile_type)',
700                             '-e', '<(extra_header)',
701                             '-s', '<(stubs_filename_root)',
702                             '-p', '<(project_path)',
703                             '<@(_inputs)',
704                  ],
705                  'process_outputs_as_sources': 1,
706                  'message': 'Generating Pulse stubs for dynamic loading.',
707                },
708              ],
709              'conditions': [
710                # Linux/Solaris need libdl for dlopen() and friends.
711                ['OS=="linux" or OS=="solaris"', {
712                  'link_settings': {
713                    'libraries': [
714                      '-ldl',
715                    ],
716                  },
717                }],
718              ],
719            }, {  # else: linux_link_pulseaudio==0
720              'link_settings': {
721                'ldflags': [
722                  '<!@(pkg-config --libs-only-L --libs-only-other libpulse)',
723                ],
724                'libraries': [
725                  '<!@(pkg-config --libs-only-l libpulse)',
726                ],
727              },
728            }],
729          ],
730        }, {  # else: use_pulseaudio==0
731          'sources!': [
732            'audio/pulse/audio_manager_pulse.cc',
733            'audio/pulse/audio_manager_pulse.h',
734            'audio/pulse/pulse_input.cc',
735            'audio/pulse/pulse_input.h',
736            'audio/pulse/pulse_output.cc',
737            'audio/pulse/pulse_output.h',
738            'audio/pulse/pulse_unified.cc',
739            'audio/pulse/pulse_unified.h',
740            'audio/pulse/pulse_util.cc',
741            'audio/pulse/pulse_util.h',
742          ],
743        }],
744        ['os_posix==1', {
745          'sources!': [
746            'video/capture/video_capture_device_dummy.cc',
747            'video/capture/video_capture_device_dummy.h',
748          ],
749        }],
750        ['OS=="mac"', {
751          'link_settings': {
752            'libraries': [
753              '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
754              '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
755              '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
756              '$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
757              '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
758              '$(SDKROOT)/System/Library/Frameworks/QTKit.framework',
759            ],
760          },
761        }],
762        ['OS=="win"', {
763          'sources!': [
764            'video/capture/video_capture_device_dummy.cc',
765            'video/capture/video_capture_device_dummy.h',
766          ],
767          'link_settings':  {
768            'libraries': [
769              '-lmf.lib',
770              '-lmfplat.lib',
771              '-lmfreadwrite.lib',
772              '-lmfuuid.lib',
773            ],
774          },
775          # Specify delayload for media.dll.
776          'msvs_settings': {
777            'VCLinkerTool': {
778              'DelayLoadDLLs': [
779                'mf.dll',
780                'mfplat.dll',
781                'mfreadwrite.dll',
782              ],
783            },
784          },
785          # Specify delayload for components that link with media.lib.
786          'all_dependent_settings': {
787            'msvs_settings': {
788              'VCLinkerTool': {
789                'DelayLoadDLLs': [
790                  'mf.dll',
791                  'mfplat.dll',
792                  'mfreadwrite.dll',
793                ],
794              },
795            },
796          },
797          # TODO(wolenetz): Fix size_t to int truncations in win64. See
798          # http://crbug.com/171009
799          'conditions': [
800            ['target_arch=="x64"', {
801              'msvs_disabled_warnings': [ 4267, ],
802            }],
803          ],
804        }],
805        ['proprietary_codecs==1 or branding=="Chrome"', {
806          'sources': [
807            'mp4/aac.cc',
808            'mp4/aac.h',
809            'mp4/avc.cc',
810            'mp4/avc.h',
811            'mp4/box_definitions.cc',
812            'mp4/box_definitions.h',
813            'mp4/box_reader.cc',
814            'mp4/box_reader.h',
815            'mp4/cenc.cc',
816            'mp4/cenc.h',
817            'mp4/es_descriptor.cc',
818            'mp4/es_descriptor.h',
819            'mp4/mp4_stream_parser.cc',
820            'mp4/mp4_stream_parser.h',
821            'mp4/offset_byte_queue.cc',
822            'mp4/offset_byte_queue.h',
823            'mp4/track_run_iterator.cc',
824            'mp4/track_run_iterator.h',
825          ],
826        }],
827        ['screen_capture_supported==1', {
828          'dependencies': [
829            '../third_party/webrtc/modules/modules.gyp:desktop_capture',
830          ],
831        }, {
832          'sources/': [
833            ['exclude', '^video/capture/screen/'],
834          ],
835        }],
836        ['toolkit_uses_gtk==1', {
837          'dependencies': [
838            '../build/linux/system.gyp:gtk',
839          ],
840        }],
841        # ios check is necessary due to http://crbug.com/172682.
842        ['OS!="ios" and (target_arch=="ia32" or target_arch=="x64")', {
843          'dependencies': [
844            'media_asm',
845            'media_mmx',
846            'media_sse',
847            'media_sse2',
848          ],
849          'sources': [
850            'base/simd/convert_yuv_to_rgb_x86.cc',
851          ],
852        }],
853        ['google_tv==1', {
854          'defines': [
855            'ENABLE_EAC3_PLAYBACK',
856          ],
857        }],
858      ],
859      'target_conditions': [
860        ['OS=="ios"', {
861          'sources/': [
862            # Pull in specific Mac files for iOS (which have been filtered out
863            # by file name rules).
864            ['include', '^audio/mac/audio_input_mac\\.'],
865          ],
866        }],
867      ],
868    },
869    {
870      'target_name': 'media_unittests',
871      'type': '<(gtest_target_type)',
872      'dependencies': [
873        'media',
874        'media_test_support',
875        '../base/base.gyp:base',
876        '../base/base.gyp:base_i18n',
877        '../base/base.gyp:test_support_base',
878        '../skia/skia.gyp:skia',
879        '../testing/gmock.gyp:gmock',
880        '../testing/gtest.gyp:gtest',
881        '../ui/ui.gyp:ui',
882      ],
883      'sources': [
884        'audio/async_socket_io_handler_unittest.cc',
885        'audio/audio_input_controller_unittest.cc',
886        'audio/audio_input_device_unittest.cc',
887        'audio/audio_input_unittest.cc',
888        'audio/audio_input_volume_unittest.cc',
889        'audio/audio_low_latency_input_output_unittest.cc',
890        'audio/audio_output_controller_unittest.cc',
891        'audio/audio_output_device_unittest.cc',
892        'audio/audio_output_proxy_unittest.cc',
893        'audio/audio_parameters_unittest.cc',
894        'audio/audio_silence_detector_unittest.cc',
895        'audio/cross_process_notification_unittest.cc',
896        'audio/fake_audio_consumer_unittest.cc',
897        'audio/ios/audio_manager_ios_unittest.cc',
898        'audio/linux/alsa_output_unittest.cc',
899        'audio/mac/audio_auhal_mac_unittest.cc',
900        'audio/mac/audio_device_listener_mac_unittest.cc',
901        'audio/mac/audio_low_latency_input_mac_unittest.cc',
902        'audio/simple_sources_unittest.cc',
903        'audio/virtual_audio_input_stream_unittest.cc',
904        'audio/virtual_audio_output_stream_unittest.cc',
905        'audio/win/audio_device_listener_win_unittest.cc',
906        'audio/win/audio_low_latency_input_win_unittest.cc',
907        'audio/win/audio_low_latency_output_win_unittest.cc',
908        'audio/win/audio_output_win_unittest.cc',
909        'audio/win/audio_unified_win_unittest.cc',
910        'audio/win/core_audio_util_win_unittest.cc',
911        'base/android/media_codec_bridge_unittest.cc',
912        'base/audio_bus_unittest.cc',
913        'base/audio_converter_unittest.cc',
914        'base/audio_fifo_unittest.cc',
915        'base/audio_hardware_config_unittest.cc',
916        'base/audio_hash_unittest.cc',
917        'base/audio_pull_fifo_unittest.cc',
918        'base/audio_renderer_mixer_input_unittest.cc',
919        'base/audio_renderer_mixer_unittest.cc',
920        'base/audio_splicer_unittest.cc',
921        'base/audio_timestamp_helper_unittest.cc',
922        'base/bind_to_loop_unittest.cc',
923        'base/bit_reader_unittest.cc',
924        'base/callback_holder_unittest.cc',
925        'base/channel_mixer_unittest.cc',
926        'base/clock_unittest.cc',
927        'base/container_names_unittest.cc',
928        'base/data_buffer_unittest.cc',
929        'base/decoder_buffer_queue_unittest.cc',
930        'base/decoder_buffer_unittest.cc',
931        'base/djb2_unittest.cc',
932        'base/gmock_callback_support_unittest.cc',
933        'base/multi_channel_resampler_unittest.cc',
934        'base/pipeline_unittest.cc',
935        'base/ranges_unittest.cc',
936        'base/run_all_unittests.cc',
937        'base/scoped_histogram_timer_unittest.cc',
938        'base/seekable_buffer_unittest.cc',
939        'base/sinc_resampler_unittest.cc',
940        'base/test_data_util.cc',
941        'base/test_data_util.h',
942        'base/vector_math_testing.h',
943        'base/vector_math_unittest.cc',
944        'base/video_frame_unittest.cc',
945        'base/video_util_unittest.cc',
946        'base/yuv_convert_unittest.cc',
947        'crypto/aes_decryptor_unittest.cc',
948        'ffmpeg/ffmpeg_common_unittest.cc',
949        'filters/audio_decoder_selector_unittest.cc',
950        'filters/audio_file_reader_unittest.cc',
951        'filters/audio_renderer_algorithm_unittest.cc',
952        'filters/audio_renderer_impl_unittest.cc',
953        'filters/blocking_url_protocol_unittest.cc',
954        'filters/chunk_demuxer_unittest.cc',
955        'filters/decrypting_audio_decoder_unittest.cc',
956        'filters/decrypting_demuxer_stream_unittest.cc',
957        'filters/decrypting_video_decoder_unittest.cc',
958        'filters/fake_demuxer_stream_unittest.cc',
959        'filters/fake_video_decoder_unittest.cc',
960        'filters/ffmpeg_audio_decoder_unittest.cc',
961        'filters/ffmpeg_demuxer_unittest.cc',
962        'filters/ffmpeg_glue_unittest.cc',
963        'filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc',
964        'filters/ffmpeg_video_decoder_unittest.cc',
965        'filters/file_data_source_unittest.cc',
966        'filters/h264_to_annex_b_bitstream_converter_unittest.cc',
967        'filters/pipeline_integration_test.cc',
968        'filters/pipeline_integration_test_base.cc',
969        'filters/skcanvas_video_renderer_unittest.cc',
970        'filters/source_buffer_stream_unittest.cc',
971        'filters/video_decoder_selector_unittest.cc',
972        'filters/video_frame_stream_unittest.cc',
973        'filters/video_renderer_base_unittest.cc',
974        'video/capture/screen/screen_capture_device_unittest.cc',
975        'video/capture/video_capture_device_unittest.cc',
976        'webm/cluster_builder.cc',
977        'webm/cluster_builder.h',
978        'webm/tracks_builder.cc',
979        'webm/tracks_builder.h',
980        'webm/webm_cluster_parser_unittest.cc',
981        'webm/webm_content_encodings_client_unittest.cc',
982        'webm/webm_parser_unittest.cc',
983        'webm/webm_tracks_parser_unittest.cc',
984        'webm/webm_webvtt_parser_unittest.cc',
985      ],
986      'conditions': [
987        ['arm_neon==1', {
988          'defines': [
989            'USE_NEON'
990          ],
991        }],
992        ['OS!="ios"', {
993          'dependencies': [
994            'shared_memory_support',
995          ],
996        }],
997        ['media_use_ffmpeg==1', {
998          'dependencies': [
999            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1000          ],
1001        }],
1002        ['os_posix==1 and OS!="mac" and OS!="ios"', {
1003          'conditions': [
1004            ['linux_use_tcmalloc==1', {
1005              'dependencies': [
1006                '../base/allocator/allocator.gyp:allocator',
1007              ],
1008            }],
1009          ],
1010        }],
1011        ['OS=="ios"', {
1012          'sources/': [
1013            ['exclude', '.*'],
1014            ['include', '^audio/audio_input_controller_unittest\\.cc$'],
1015            ['include', '^audio/audio_input_unittest\\.cc$'],
1016            ['include', '^audio/audio_parameters_unittest\\.cc$'],
1017            ['include', '^audio/ios/audio_manager_ios_unittest\\.cc$'],
1018            ['include', '^base/mock_reader\\.h$'],
1019            ['include', '^base/run_all_unittests\\.cc$'],
1020          ],
1021        }],
1022        ['OS=="android"', {
1023          'sources!': [
1024            'audio/audio_input_volume_unittest.cc',
1025            'base/container_names_unittest.cc',
1026            'base/test_data_util.cc',
1027            'base/test_data_util.h',
1028            'ffmpeg/ffmpeg_common_unittest.cc',
1029            'filters/audio_file_reader_unittest.cc',
1030            'filters/blocking_url_protocol_unittest.cc',
1031            'filters/chunk_demuxer_unittest.cc',
1032            'filters/ffmpeg_audio_decoder_unittest.cc',
1033            'filters/ffmpeg_demuxer_unittest.cc',
1034            'filters/ffmpeg_glue_unittest.cc',
1035            'filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc',
1036            'filters/ffmpeg_video_decoder_unittest.cc',
1037            'filters/pipeline_integration_test.cc',
1038            'filters/pipeline_integration_test_base.cc',
1039            'mp4/mp4_stream_parser_unittest.cc',
1040            'webm/webm_cluster_parser_unittest.cc',
1041          ],
1042          'conditions': [
1043            ['gtest_target_type=="shared_library"', {
1044              'dependencies': [
1045                '../testing/android/native_test.gyp:native_test_native_code',
1046                'player_android',
1047              ],
1048            }],
1049          ],
1050        }],
1051        ['OS=="linux"', {
1052          'conditions': [
1053            ['use_cras==1', {
1054              'sources': [
1055                'audio/cras/cras_input_unittest.cc',
1056                'audio/cras/cras_unified_unittest.cc',
1057              ],
1058              'defines': [
1059                'USE_CRAS',
1060              ],
1061            }],
1062          ],
1063        }],
1064        ['use_alsa==0', {
1065          'sources!': [
1066            'audio/linux/alsa_output_unittest.cc',
1067            'audio/audio_low_latency_input_output_unittest.cc',
1068          ],
1069        }],
1070        ['OS!="ios" and (target_arch=="ia32" or target_arch=="x64")', {
1071          'sources': [
1072            'base/simd/convert_rgb_to_yuv_unittest.cc',
1073          ],
1074        }],
1075        ['screen_capture_supported==1', {
1076          'dependencies': [
1077            '../third_party/webrtc/modules/modules.gyp:desktop_capture',
1078          ],
1079        }, {
1080          'sources/': [
1081            ['exclude', '^video/capture/screen/'],
1082          ],
1083        }],
1084        ['proprietary_codecs==1 or branding=="Chrome"', {
1085          'sources': [
1086            'mp4/aac_unittest.cc',
1087            'mp4/avc_unittest.cc',
1088            'mp4/box_reader_unittest.cc',
1089            'mp4/es_descriptor_unittest.cc',
1090            'mp4/mp4_stream_parser_unittest.cc',
1091            'mp4/offset_byte_queue_unittest.cc',
1092            'mp4/track_run_iterator_unittest.cc',
1093          ],
1094        }],
1095        # TODO(wolenetz): Fix size_t to int truncations in win64. See
1096        # http://crbug.com/171009
1097        ['OS=="win" and target_arch=="x64"', {
1098          'msvs_disabled_warnings': [ 4267, ],
1099        }],
1100      ],
1101    },
1102    {
1103      'target_name': 'media_test_support',
1104      'type': 'static_library',
1105      'dependencies': [
1106        'media',
1107        '../base/base.gyp:base',
1108        '../skia/skia.gyp:skia',
1109        '../testing/gmock.gyp:gmock',
1110        '../testing/gtest.gyp:gtest',
1111      ],
1112      'sources': [
1113        'audio/mock_audio_manager.cc',
1114        'audio/mock_audio_manager.h',
1115        'audio/test_audio_input_controller_factory.cc',
1116        'audio/test_audio_input_controller_factory.h',
1117        'base/fake_audio_render_callback.cc',
1118        'base/fake_audio_render_callback.h',
1119        'base/gmock_callback_support.h',
1120        'base/mock_audio_renderer_sink.cc',
1121        'base/mock_audio_renderer_sink.h',
1122        'base/mock_data_source_host.cc',
1123        'base/mock_data_source_host.h',
1124        'base/mock_demuxer_host.cc',
1125        'base/mock_demuxer_host.h',
1126        'base/mock_filters.cc',
1127        'base/mock_filters.h',
1128        'base/test_helpers.cc',
1129        'base/test_helpers.h',
1130      ],
1131    },
1132  ],
1133  'conditions': [
1134    ['OS!="ios" and target_arch!="arm"', {
1135      'targets': [
1136       {
1137          'target_name': 'media_asm',
1138          'type': 'static_library',
1139          'sources': [
1140            'base/simd/convert_rgb_to_yuv_ssse3.asm',
1141            'base/simd/convert_yuv_to_rgb_mmx.asm',
1142            'base/simd/convert_yuv_to_rgb_sse.asm',
1143            'base/simd/convert_yuva_to_argb_mmx.asm',
1144            'base/simd/empty_register_state_mmx.asm',
1145            'base/simd/linear_scale_yuv_to_rgb_mmx.asm',
1146            'base/simd/linear_scale_yuv_to_rgb_sse.asm',
1147            'base/simd/scale_yuv_to_rgb_mmx.asm',
1148            'base/simd/scale_yuv_to_rgb_sse.asm',
1149          ],
1150          'conditions': [
1151            ['component=="shared_library"', {
1152              'variables': {
1153                'yasm_flags': ['-DEXPORT_SYMBOLS'],
1154              },
1155            }],
1156            ['target_arch=="x64"', {
1157              # Source files optimized for X64 systems.
1158              'sources': [
1159                'base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm',
1160                'base/simd/scale_yuv_to_rgb_sse2_x64.asm',
1161              ],
1162              'variables': {
1163                'yasm_flags': ['-DARCH_X86_64'],
1164              },
1165            }],
1166            ['OS=="mac"', {
1167              'variables': {
1168                'yasm_flags': [
1169                  '-DPREFIX',
1170                  '-DMACHO',
1171                ],
1172              },
1173              'sources': [
1174                # XCode doesn't want to link a pure assembly target and will
1175                # fail to link when it creates an empty file list.  So add a
1176                # dummy file keep the linker happy.  See http://crbug.com/157073
1177                'base/simd/xcode_hack.c',
1178              ],
1179            }],
1180            ['os_posix==1 and OS!="mac"', {
1181              'variables': {
1182                'conditions': [
1183                  ['target_arch=="ia32"', {
1184                    'yasm_flags': [
1185                      '-DX86_32',
1186                      '-DELF',
1187                    ],
1188                  }, {
1189                    'yasm_flags': [
1190                      '-DELF',
1191                      '-DPIC',
1192                    ],
1193                  }],
1194                ],
1195              },
1196            }],
1197          ],
1198          'variables': {
1199            'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/media',
1200            'yasm_flags': [
1201              '-DCHROMIUM',
1202              # In addition to the same path as source asm, let yasm %include
1203              # search path be relative to src/ per Chromium policy.
1204              '-I..',
1205            ],
1206            'yasm_includes': [
1207              '../third_party/x86inc/x86inc.asm',
1208              'base/simd/convert_rgb_to_yuv_ssse3.inc',
1209              'base/simd/convert_yuv_to_rgb_mmx.inc',
1210              'base/simd/convert_yuva_to_argb_mmx.inc',
1211              'base/simd/linear_scale_yuv_to_rgb_mmx.inc',
1212              'base/simd/media_export.asm',
1213              'base/simd/scale_yuv_to_rgb_mmx.inc',
1214            ],
1215          },
1216          'msvs_2010_disable_uldi_when_referenced': 1,
1217          'includes': [
1218            '../third_party/yasm/yasm_compile.gypi',
1219          ],
1220        },
1221        {
1222          'target_name': 'media_mmx',
1223          'type': 'static_library',
1224          'cflags': [
1225            '-mmmx',
1226          ],
1227          'include_dirs': [
1228            '..',
1229          ],
1230          'defines': [
1231            'MEDIA_IMPLEMENTATION',
1232          ],
1233          'conditions': [
1234            # TODO(jschuh): Get MMX enabled on Win64. crbug.com/179657
1235            ['OS!="win" or target_arch=="ia32"', {
1236              'sources': [
1237                'base/simd/filter_yuv_mmx.cc',
1238              ],
1239            }],
1240          ],
1241        },
1242        {
1243          'target_name': 'media_sse',
1244          'type': 'static_library',
1245          'cflags': [
1246            '-msse',
1247          ],
1248          'include_dirs': [
1249            '..',
1250          ],
1251          'defines': [
1252            'MEDIA_IMPLEMENTATION',
1253          ],
1254          'sources': [
1255            'base/simd/sinc_resampler_sse.cc',
1256          ],
1257        },
1258        {
1259          'target_name': 'media_sse2',
1260          'type': 'static_library',
1261          'cflags': [
1262            '-msse2',
1263          ],
1264          'include_dirs': [
1265            '..',
1266          ],
1267          'defines': [
1268            'MEDIA_IMPLEMENTATION',
1269          ],
1270          'sources': [
1271            'base/simd/convert_rgb_to_yuv_sse2.cc',
1272            'base/simd/convert_rgb_to_yuv_ssse3.cc',
1273            'base/simd/filter_yuv_sse2.cc',
1274          ],
1275        },
1276        {
1277          'target_name': 'shared_memory_support_sse',
1278          'type': 'static_library',
1279          'cflags': [
1280            '-msse',
1281          ],
1282          'include_dirs': [
1283            '..',
1284          ],
1285          'defines': [
1286            'MEDIA_IMPLEMENTATION',
1287          ],
1288          'sources': [
1289            'base/simd/vector_math_sse.cc',
1290          ],
1291        },
1292      ], # targets
1293    }],
1294    ['OS!="ios"', {
1295      'targets': [
1296        {
1297          # Minimal target for NaCl and other renderer side media clients which
1298          # only need to send audio data across the shared memory to the browser
1299          # process.
1300          'target_name': 'shared_memory_support',
1301          'type': '<(component)',
1302          'dependencies': [
1303            '../base/base.gyp:base',
1304          ],
1305          'defines': [
1306            'MEDIA_IMPLEMENTATION',
1307          ],
1308          'include_dirs': [
1309            '..',
1310          ],
1311          'includes': [
1312            'shared_memory_support.gypi',
1313          ],
1314          'sources': [
1315            '<@(shared_memory_support_sources)',
1316          ],
1317          'conditions': [
1318            ['arm_neon==1', {
1319              'defines': [
1320                'USE_NEON'
1321              ],
1322            }],
1323            ['target_arch=="ia32" or target_arch=="x64"', {
1324              'dependencies': [
1325                'shared_memory_support_sse'
1326              ],
1327            }],
1328          ],
1329        },
1330        {
1331          'target_name': 'seek_tester',
1332          'type': 'executable',
1333          'dependencies': [
1334            'media',
1335            '../base/base.gyp:base',
1336          ],
1337          'sources': [
1338            'tools/seek_tester/seek_tester.cc',
1339          ],
1340        },
1341        {
1342          'target_name': 'demuxer_bench',
1343          'type': 'executable',
1344          'dependencies': [
1345            'media',
1346            '../base/base.gyp:base',
1347          ],
1348          'sources': [
1349            'tools/demuxer_bench/demuxer_bench.cc',
1350          ],
1351          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
1352          'msvs_disabled_warnings': [ 4267, ],
1353        },
1354      ],
1355    }],
1356    ['(OS=="win" or toolkit_uses_gtk==1) and use_aura!=1', {
1357      'targets': [
1358        {
1359          'target_name': 'shader_bench',
1360          'type': 'executable',
1361          'dependencies': [
1362            'media',
1363            '../base/base.gyp:base',
1364            '../ui/gl/gl.gyp:gl',
1365            '../ui/ui.gyp:ui',
1366          ],
1367          'sources': [
1368            'tools/shader_bench/cpu_color_painter.cc',
1369            'tools/shader_bench/cpu_color_painter.h',
1370            'tools/shader_bench/gpu_color_painter.cc',
1371            'tools/shader_bench/gpu_color_painter.h',
1372            'tools/shader_bench/gpu_painter.cc',
1373            'tools/shader_bench/gpu_painter.h',
1374            'tools/shader_bench/painter.cc',
1375            'tools/shader_bench/painter.h',
1376            'tools/shader_bench/shader_bench.cc',
1377            'tools/shader_bench/window.cc',
1378            'tools/shader_bench/window.h',
1379          ],
1380          'conditions': [
1381            ['toolkit_uses_gtk==1', {
1382              'dependencies': [
1383                '../build/linux/system.gyp:gtk',
1384              ],
1385              'sources': [
1386                'tools/shader_bench/window_linux.cc',
1387              ],
1388            }],
1389            ['OS=="win"', {
1390              'dependencies': [
1391                '../third_party/angle/src/build_angle.gyp:libEGL',
1392                '../third_party/angle/src/build_angle.gyp:libGLESv2',
1393              ],
1394              'sources': [
1395                'tools/shader_bench/window_win.cc',
1396              ],
1397            }],
1398            # See http://crbug.com/162998#c4 for why this is needed.
1399            ['OS=="linux" and linux_use_tcmalloc==1', {
1400              'dependencies': [
1401                '../base/allocator/allocator.gyp:allocator',
1402              ],
1403            }],
1404          ],
1405          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
1406          'msvs_disabled_warnings': [ 4267, ],
1407        },
1408      ],
1409    }],
1410    ['use_x11==1', {
1411      'targets': [
1412        {
1413          'target_name': 'player_x11',
1414          'type': 'executable',
1415          'dependencies': [
1416            'media',
1417            '../base/base.gyp:base',
1418            '../ui/gl/gl.gyp:gl',
1419            '../ui/ui.gyp:ui',
1420          ],
1421          'link_settings': {
1422            'libraries': [
1423              '-ldl',
1424              '-lX11',
1425              '-lXrender',
1426              '-lXext',
1427            ],
1428          },
1429          'sources': [
1430            'tools/player_x11/data_source_logger.cc',
1431            'tools/player_x11/data_source_logger.h',
1432            'tools/player_x11/gl_video_renderer.cc',
1433            'tools/player_x11/gl_video_renderer.h',
1434            'tools/player_x11/player_x11.cc',
1435            'tools/player_x11/x11_video_renderer.cc',
1436            'tools/player_x11/x11_video_renderer.h',
1437          ],
1438        },
1439      ],
1440    }],
1441    # Special target to wrap a gtest_target_type==shared_library
1442    # media_unittests into an android apk for execution.
1443    ['OS=="android" and gtest_target_type=="shared_library"', {
1444      'targets': [
1445        {
1446          'target_name': 'media_unittests_apk',
1447          'type': 'none',
1448          'dependencies': [
1449            'media_java',
1450            'media_unittests',
1451          ],
1452          'variables': {
1453            'test_suite_name': 'media_unittests',
1454            'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)media_unittests<(SHARED_LIB_SUFFIX)',
1455          },
1456          'includes': ['../build/apk_test.gypi'],
1457        },
1458      ],
1459    }],
1460    ['OS=="android"', {
1461      'targets': [
1462        {
1463          'target_name': 'media_player_jni_headers',
1464          'type': 'none',
1465          'variables': {
1466            'jni_gen_package': 'media',
1467            'input_java_class': 'android/media/MediaPlayer.class',
1468          },
1469          'includes': ['../build/jar_file_jni_generator.gypi'],
1470        },
1471        {
1472          'target_name': 'media_android_jni_headers',
1473          'type': 'none',
1474          'dependencies': [
1475            'media_player_jni_headers',
1476          ],
1477          'sources': [
1478            'base/android/java/src/org/chromium/media/AudioManagerAndroid.java',
1479            'base/android/java/src/org/chromium/media/MediaCodecBridge.java',
1480            'base/android/java/src/org/chromium/media/MediaPlayerBridge.java',
1481            'base/android/java/src/org/chromium/media/MediaPlayerListener.java',
1482            'base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java',
1483          ],
1484          'variables': {
1485            'jni_gen_package': 'media',
1486          },
1487          'includes': ['../build/jni_generator.gypi'],
1488        },
1489        {
1490          'target_name': 'video_capture_android_jni_headers',
1491          'type': 'none',
1492          'sources': [
1493            'base/android/java/src/org/chromium/media/VideoCapture.java',
1494          ],
1495          'variables': {
1496            'jni_gen_package': 'media',
1497          },
1498          'includes': ['../build/jni_generator.gypi'],
1499        },
1500        {
1501          'target_name': 'media_format_jni_headers',
1502          'type': 'none',
1503          'variables': {
1504            'jni_gen_package': 'media',
1505            'input_java_class': 'android/media/MediaFormat.class',
1506          },
1507          'includes': ['../build/jar_file_jni_generator.gypi'],
1508        },
1509        {
1510          'target_name': 'player_android',
1511          'type': 'static_library',
1512          'sources': [
1513            'base/android/media_codec_bridge.cc',
1514            'base/android/media_codec_bridge.h',
1515            'base/android/media_jni_registrar.cc',
1516            'base/android/media_jni_registrar.h',
1517            'base/android/media_player_android.cc',
1518            'base/android/media_player_android.h',
1519            'base/android/media_player_bridge.cc',
1520            'base/android/media_player_bridge.h',
1521            'base/android/media_player_listener.cc',
1522            'base/android/media_player_listener.h',
1523            'base/android/media_source_player.cc',
1524            'base/android/media_source_player.h',
1525            'base/android/webaudio_media_codec_bridge.cc',
1526            'base/android/webaudio_media_codec_bridge.h',
1527            'base/android/webaudio_media_codec_info.h',
1528          ],
1529          'dependencies': [
1530            '../base/base.gyp:base',
1531            'media_android_jni_headers',
1532          ],
1533          'include_dirs': [
1534            '<(SHARED_INTERMEDIATE_DIR)/media',
1535          ],
1536        },
1537        {
1538          'target_name': 'media_java',
1539          'type': 'none',
1540          'dependencies': [
1541            '../base/base.gyp:base',
1542          ],
1543          'export_dependent_settings': [
1544            '../base/base.gyp:base',
1545          ],
1546          'variables': {
1547            'java_in_dir': 'base/android/java',
1548          },
1549          'includes': ['../build/java.gypi'],
1550        },
1551
1552      ],
1553    }],
1554    ['media_use_ffmpeg==1', {
1555      'targets': [
1556        {
1557          'target_name': 'ffmpeg_unittests',
1558          'type': 'executable',
1559          'dependencies': [
1560            '../base/base.gyp:base',
1561            '../base/base.gyp:base_i18n',
1562            '../base/base.gyp:test_support_base',
1563            '../base/base.gyp:test_support_perf',
1564            '../testing/gtest.gyp:gtest',
1565            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1566            'media',
1567            'media_test_support',
1568          ],
1569          'sources': [
1570            'ffmpeg/ffmpeg_unittest.cc',
1571          ],
1572          'conditions': [
1573            ['toolkit_uses_gtk==1', {
1574              'dependencies': [
1575                # Needed for the following #include chain:
1576                #   base/run_all_unittests.cc
1577                #   ../base/test_suite.h
1578                #   gtk/gtk.h
1579                '../build/linux/system.gyp:gtk',
1580              ],
1581              'conditions': [
1582                ['linux_use_tcmalloc==1', {
1583                  'dependencies': [
1584                    '../base/allocator/allocator.gyp:allocator',
1585                  ],
1586                }],
1587              ],
1588            }],
1589          ],
1590        },
1591        {
1592          'target_name': 'ffmpeg_regression_tests',
1593          'type': 'executable',
1594          'dependencies': [
1595            '../base/base.gyp:test_support_base',
1596            '../testing/gmock.gyp:gmock',
1597            '../testing/gtest.gyp:gtest',
1598            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1599            'media',
1600            'media_test_support',
1601          ],
1602          'sources': [
1603            'base/run_all_unittests.cc',
1604            'base/test_data_util.cc',
1605            'ffmpeg/ffmpeg_regression_tests.cc',
1606            'filters/pipeline_integration_test_base.cc',
1607          ],
1608          'conditions': [
1609            ['os_posix==1 and OS!="mac"', {
1610              'conditions': [
1611                ['linux_use_tcmalloc==1', {
1612                  'dependencies': [
1613                    '../base/allocator/allocator.gyp:allocator',
1614                  ],
1615                }],
1616              ],
1617            }],
1618          ],
1619        },
1620        {
1621          'target_name': 'ffmpeg_tests',
1622          'type': 'executable',
1623          'dependencies': [
1624            '../base/base.gyp:base',
1625            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1626            'media',
1627          ],
1628          'sources': [
1629            'test/ffmpeg_tests/ffmpeg_tests.cc',
1630          ],
1631          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
1632          'msvs_disabled_warnings': [ 4267, ],
1633        },
1634        {
1635          'target_name': 'media_bench',
1636          'type': 'executable',
1637          'dependencies': [
1638            '../base/base.gyp:base',
1639            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1640            'media',
1641          ],
1642          'sources': [
1643            'tools/media_bench/media_bench.cc',
1644          ],
1645          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
1646          'msvs_disabled_warnings': [ 4267, ],
1647        },
1648      ],
1649    }],
1650  ],
1651}
1652