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