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