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