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