media.gyp revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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_renderer_impl.cc',
417        'filters/video_renderer_impl.h',
418        'filters/vpx_video_decoder.cc',
419        'filters/vpx_video_decoder.h',
420        'filters/webvtt_util.h',
421        'filters/wsola_internals.cc',
422        'filters/wsola_internals.h',
423        'midi/midi_manager.cc',
424        'midi/midi_manager.h',
425        'midi/midi_manager_alsa.cc',
426        'midi/midi_manager_alsa.h',
427        'midi/midi_manager_android.cc',
428        'midi/midi_manager_mac.cc',
429        'midi/midi_manager_mac.h',
430        'midi/midi_manager_usb.cc',
431        'midi/midi_manager_usb.h',
432        'midi/midi_manager_win.cc',
433        'midi/midi_manager_win.h',
434        'midi/midi_message_queue.cc',
435        'midi/midi_message_queue.h',
436        'midi/midi_message_util.cc',
437        'midi/midi_message_util.h',
438        'midi/midi_port_info.cc',
439        'midi/midi_port_info.h',
440        'midi/usb_midi_descriptor_parser.cc',
441        'midi/usb_midi_descriptor_parser.h',
442        'midi/usb_midi_device.h',
443        'midi/usb_midi_device_android.cc',
444        'midi/usb_midi_device_android.h',
445        'midi/usb_midi_device_factory_android.cc',
446        'midi/usb_midi_device_factory_android.h',
447        'midi/usb_midi_input_stream.cc',
448        'midi/usb_midi_input_stream.h',
449        'midi/usb_midi_jack.h',
450        'midi/usb_midi_output_stream.cc',
451        'midi/usb_midi_output_stream.h',
452        'video/capture/android/video_capture_device_android.cc',
453        'video/capture/android/video_capture_device_android.h',
454        'video/capture/android/video_capture_device_factory_android.cc',
455        'video/capture/android/video_capture_device_factory_android.h',
456        'video/capture/fake_video_capture_device.cc',
457        'video/capture/fake_video_capture_device.h',
458        'video/capture/file_video_capture_device.cc',
459        'video/capture/file_video_capture_device.h',
460        'video/capture/linux/video_capture_device_linux.cc',
461        'video/capture/linux/video_capture_device_linux.h',
462        'video/capture/mac/avfoundation_glue.h',
463        'video/capture/mac/avfoundation_glue.mm',
464        'video/capture/mac/coremedia_glue.h',
465        'video/capture/mac/coremedia_glue.mm',
466        'video/capture/mac/platform_video_capturing_mac.h',
467        'video/capture/mac/video_capture_device_avfoundation_mac.h',
468        'video/capture/mac/video_capture_device_avfoundation_mac.mm',
469        'video/capture/mac/video_capture_device_mac.h',
470        'video/capture/mac/video_capture_device_mac.mm',
471        'video/capture/mac/video_capture_device_qtkit_mac.h',
472        'video/capture/mac/video_capture_device_qtkit_mac.mm',
473        'video/capture/video_capture.h',
474        'video/capture/video_capture_device.cc',
475        'video/capture/video_capture_device.h',
476        'video/capture/video_capture_proxy.cc',
477        'video/capture/video_capture_proxy.h',
478        'video/capture/video_capture_types.cc',
479        'video/capture/video_capture_types.h',
480        'video/capture/win/capability_list_win.cc',
481        'video/capture/win/capability_list_win.h',
482        'video/capture/win/filter_base_win.cc',
483        'video/capture/win/filter_base_win.h',
484        'video/capture/win/pin_base_win.cc',
485        'video/capture/win/pin_base_win.h',
486        'video/capture/win/sink_filter_observer_win.h',
487        'video/capture/win/sink_filter_win.cc',
488        'video/capture/win/sink_filter_win.h',
489        'video/capture/win/sink_input_pin_win.cc',
490        'video/capture/win/sink_input_pin_win.h',
491        'video/capture/win/video_capture_device_mf_win.cc',
492        'video/capture/win/video_capture_device_mf_win.h',
493        'video/capture/win/video_capture_device_win.cc',
494        'video/capture/win/video_capture_device_win.h',
495        'video/picture.cc',
496        'video/picture.h',
497        'video/video_decode_accelerator.cc',
498        'video/video_decode_accelerator.h',
499        'video/video_encode_accelerator.cc',
500        'video/video_encode_accelerator.h',
501        'formats/common/offset_byte_queue.cc',
502        'formats/common/offset_byte_queue.h',
503        'formats/webm/webm_audio_client.cc',
504        'formats/webm/webm_audio_client.h',
505        'formats/webm/webm_cluster_parser.cc',
506        'formats/webm/webm_cluster_parser.h',
507        'formats/webm/webm_constants.cc',
508        'formats/webm/webm_constants.h',
509        'formats/webm/webm_content_encodings.cc',
510        'formats/webm/webm_content_encodings.h',
511        'formats/webm/webm_content_encodings_client.cc',
512        'formats/webm/webm_content_encodings_client.h',
513        'formats/webm/webm_crypto_helpers.cc',
514        'formats/webm/webm_crypto_helpers.h',
515        'formats/webm/webm_info_parser.cc',
516        'formats/webm/webm_info_parser.h',
517        'formats/webm/webm_parser.cc',
518        'formats/webm/webm_parser.h',
519        'formats/webm/webm_stream_parser.cc',
520        'formats/webm/webm_stream_parser.h',
521        'formats/webm/webm_tracks_parser.cc',
522        'formats/webm/webm_tracks_parser.h',
523        'formats/webm/webm_video_client.cc',
524        'formats/webm/webm_video_client.h',
525        'formats/webm/webm_webvtt_parser.cc',
526        'formats/webm/webm_webvtt_parser.h'
527      ],
528      'direct_dependent_settings': {
529        'include_dirs': [
530          '..',
531        ],
532      },
533      'conditions': [
534        ['arm_neon==1', {
535          'defines': [
536            'USE_NEON'
537          ],
538        }],
539        ['media_use_ffmpeg==1', {
540          'dependencies': [
541            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
542          ],
543        }, {  # media_use_ffmpeg==0
544          # Exclude the sources that depend on ffmpeg.
545          'sources!': [
546            'base/audio_video_metadata_extractor.cc',
547            'base/audio_video_metadata_extractor.h',
548            'base/container_names.cc',
549            'base/container_names.h',
550            'base/media_file_checker.cc',
551            'base/media_file_checker.h',
552            'base/media_posix.cc',
553            'ffmpeg/ffmpeg_common.cc',
554            'ffmpeg/ffmpeg_common.h',
555            'filters/audio_file_reader.cc',
556            'filters/audio_file_reader.h',
557            'filters/blocking_url_protocol.cc',
558            'filters/blocking_url_protocol.h',
559            'filters/ffmpeg_audio_decoder.cc',
560            'filters/ffmpeg_audio_decoder.h',
561            'filters/ffmpeg_demuxer.cc',
562            'filters/ffmpeg_demuxer.h',
563            'filters/ffmpeg_glue.cc',
564            'filters/ffmpeg_glue.h',
565            'filters/ffmpeg_h264_to_annex_b_bitstream_converter.cc',
566            'filters/ffmpeg_h264_to_annex_b_bitstream_converter.h',
567            'filters/ffmpeg_video_decoder.cc',
568            'filters/ffmpeg_video_decoder.h',
569          ],
570        }],
571        ['media_use_libvpx==1', {
572          'dependencies': [
573            '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
574          ],
575        }, {  # media_use_libvpx==0
576          'direct_dependent_settings': {
577            'defines': [
578              'MEDIA_DISABLE_LIBVPX',
579            ],
580          },
581          # Exclude the sources that depend on libvpx.
582          'sources!': [
583            'filters/vpx_video_decoder.cc',
584            'filters/vpx_video_decoder.h',
585          ],
586        }],
587        ['OS=="android"', {
588          'dependencies': [
589            'media_android_jni_headers',
590            'player_android',
591            'video_capture_android_jni_headers',
592          ],
593          'sources': [
594            'base/media.cc',
595            'base/media.h',
596            'base/media_stub.cc',
597          ],
598          'sources!': [
599            'filters/opus_audio_decoder.cc',
600            'filters/opus_audio_decoder.h',
601          ],
602          'conditions': [
603            ['android_webview_build==0', {
604              'dependencies': [
605                'media_java',
606              ],
607            }],
608          ],
609          'defines': [
610            'DISABLE_USER_INPUT_MONITOR',
611          ],
612        }],
613        # A simple WebM encoder for animated avatars on ChromeOS.
614        ['chromeos==1', {
615          'dependencies': [
616            '../third_party/libvpx/libvpx.gyp:libvpx',
617            '../third_party/libyuv/libyuv.gyp:libyuv',
618          ],
619          'sources': [
620            'formats/webm/chromeos/ebml_writer.cc',
621            'formats/webm/chromeos/ebml_writer.h',
622            'formats/webm/chromeos/webm_encoder.cc',
623            'formats/webm/chromeos/webm_encoder.h',
624          ],
625        }],
626        ['use_alsa==1', {
627          'link_settings': {
628            'libraries': [
629              '-lasound',
630            ],
631          },
632          'defines': [
633            'USE_ALSA',
634          ],
635        }, { # use_alsa==0
636          'sources/': [
637            ['exclude', '(^|/)alsa/'],
638            ['exclude', '_alsa\\.(h|cc)$'],
639          ],
640        }],
641        ['OS!="openbsd"', {
642          'sources!': [
643            'audio/openbsd/audio_manager_openbsd.cc',
644            'audio/openbsd/audio_manager_openbsd.h',
645          ],
646        }],
647        ['OS=="linux"', {
648          'conditions': [
649            ['use_x11==1', {
650              'dependencies': [
651                '../build/linux/system.gyp:x11',
652                '../build/linux/system.gyp:xdamage',
653                '../build/linux/system.gyp:xext',
654                '../build/linux/system.gyp:xfixes',
655                '../build/linux/system.gyp:xtst',
656              ],
657            }, {  # else: use_x11==0
658              'sources!': [
659                'base/user_input_monitor_linux.cc',
660              ],
661              'defines': [
662                'DISABLE_USER_INPUT_MONITOR',
663              ],
664            }],
665            ['use_cras==1', {
666              'cflags': [
667                '<!@(<(pkg-config) --cflags libcras)',
668              ],
669              'link_settings': {
670                'libraries': [
671                  '<!@(<(pkg-config) --libs libcras)',
672                ],
673              },
674              'defines': [
675                'USE_CRAS',
676              ],
677            }, {  # else: use_cras==0
678              'sources!': [
679                'audio/cras/audio_manager_cras.cc',
680                'audio/cras/audio_manager_cras.h',
681                'audio/cras/cras_input.cc',
682                'audio/cras/cras_input.h',
683                'audio/cras/cras_unified.cc',
684                'audio/cras/cras_unified.h',
685              ],
686            }],
687          ],
688        }],
689        ['OS!="linux"', {
690          'sources!': [
691            'audio/cras/audio_manager_cras.cc',
692            'audio/cras/audio_manager_cras.h',
693            'audio/cras/cras_input.cc',
694            'audio/cras/cras_input.h',
695            'audio/cras/cras_unified.cc',
696            'audio/cras/cras_unified.h',
697          ],
698        }],
699        ['use_pulseaudio==1', {
700          'cflags': [
701            '<!@(<(pkg-config) --cflags libpulse)',
702          ],
703          'defines': [
704            'USE_PULSEAUDIO',
705          ],
706          'conditions': [
707            ['linux_link_pulseaudio==0', {
708              'defines': [
709                'DLOPEN_PULSEAUDIO',
710              ],
711              'variables': {
712                'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
713                'extra_header': 'audio/pulse/pulse_stub_header.fragment',
714                'sig_files': ['audio/pulse/pulse.sigs'],
715                'outfile_type': 'posix_stubs',
716                'stubs_filename_root': 'pulse_stubs',
717                'project_path': 'media/audio/pulse',
718                'intermediate_dir': '<(INTERMEDIATE_DIR)',
719                'output_root': '<(SHARED_INTERMEDIATE_DIR)/pulse',
720              },
721              'include_dirs': [
722                '<(output_root)',
723              ],
724              'actions': [
725                {
726                  'action_name': 'generate_stubs',
727                  'inputs': [
728                    '<(generate_stubs_script)',
729                    '<(extra_header)',
730                    '<@(sig_files)',
731                  ],
732                  'outputs': [
733                    '<(intermediate_dir)/<(stubs_filename_root).cc',
734                    '<(output_root)/<(project_path)/<(stubs_filename_root).h',
735                  ],
736                  'action': ['python',
737                             '<(generate_stubs_script)',
738                             '-i', '<(intermediate_dir)',
739                             '-o', '<(output_root)/<(project_path)',
740                             '-t', '<(outfile_type)',
741                             '-e', '<(extra_header)',
742                             '-s', '<(stubs_filename_root)',
743                             '-p', '<(project_path)',
744                             '<@(_inputs)',
745                  ],
746                  'process_outputs_as_sources': 1,
747                  'message': 'Generating Pulse stubs for dynamic loading',
748                },
749              ],
750              'conditions': [
751                # Linux/Solaris need libdl for dlopen() and friends.
752                ['OS=="linux" or OS=="solaris"', {
753                  'link_settings': {
754                    'libraries': [
755                      '-ldl',
756                    ],
757                  },
758                }],
759              ],
760            }, {  # else: linux_link_pulseaudio==0
761              'link_settings': {
762                'ldflags': [
763                  '<!@(<(pkg-config) --libs-only-L --libs-only-other libpulse)',
764                ],
765                'libraries': [
766                  '<!@(<(pkg-config) --libs-only-l libpulse)',
767                ],
768              },
769            }],
770          ],
771        }, {  # else: use_pulseaudio==0
772          'sources!': [
773            'audio/pulse/audio_manager_pulse.cc',
774            'audio/pulse/audio_manager_pulse.h',
775            'audio/pulse/pulse_input.cc',
776            'audio/pulse/pulse_input.h',
777            'audio/pulse/pulse_output.cc',
778            'audio/pulse/pulse_output.h',
779            'audio/pulse/pulse_util.cc',
780            'audio/pulse/pulse_util.h',
781          ],
782        }],
783        ['OS=="mac"', {
784          'link_settings': {
785            'libraries': [
786              '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
787              '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
788              '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
789              '$(SDKROOT)/System/Library/Frameworks/CoreMIDI.framework',
790              '$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
791              '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
792              '$(SDKROOT)/System/Library/Frameworks/QTKit.framework',
793            ],
794          },
795        }],
796        ['OS=="win"', {
797          'link_settings':  {
798            'libraries': [
799              '-lmf.lib',
800              '-lmfplat.lib',
801              '-lmfreadwrite.lib',
802              '-lmfuuid.lib',
803            ],
804          },
805          # Specify delayload for media.dll.
806          'msvs_settings': {
807            'VCLinkerTool': {
808              'DelayLoadDLLs': [
809                'mf.dll',
810                'mfplat.dll',
811                'mfreadwrite.dll',
812              ],
813            },
814          },
815          # Specify delayload for components that link with media.lib.
816          'all_dependent_settings': {
817            'msvs_settings': {
818              'VCLinkerTool': {
819                'DelayLoadDLLs': [
820                  'mf.dll',
821                  'mfplat.dll',
822                  'mfreadwrite.dll',
823                ],
824              },
825            },
826          },
827          # TODO(wolenetz): Fix size_t to int truncations in win64. See
828          # http://crbug.com/171009
829          'conditions': [
830            ['target_arch=="x64"', {
831              'msvs_disabled_warnings': [ 4267, ],
832            }],
833          ],
834        }],
835        ['proprietary_codecs==1', {
836          'sources': [
837            'formats/mp2t/es_parser.h',
838            'formats/mp2t/es_parser_adts.cc',
839            'formats/mp2t/es_parser_adts.h',
840            'formats/mp2t/es_parser_h264.cc',
841            'formats/mp2t/es_parser_h264.h',
842            'formats/mp2t/mp2t_common.h',
843            'formats/mp2t/mp2t_stream_parser.cc',
844            'formats/mp2t/mp2t_stream_parser.h',
845            'formats/mp2t/ts_packet.cc',
846            'formats/mp2t/ts_packet.h',
847            'formats/mp2t/ts_section.h',
848            'formats/mp2t/ts_section_pat.cc',
849            'formats/mp2t/ts_section_pat.h',
850            'formats/mp2t/ts_section_pes.cc',
851            'formats/mp2t/ts_section_pes.h',
852            'formats/mp2t/ts_section_pmt.cc',
853            'formats/mp2t/ts_section_pmt.h',
854            'formats/mp2t/ts_section_psi.cc',
855            'formats/mp2t/ts_section_psi.h',
856            'formats/mp4/aac.cc',
857            'formats/mp4/aac.h',
858            'formats/mp4/avc.cc',
859            'formats/mp4/avc.h',
860            'formats/mp4/box_definitions.cc',
861            'formats/mp4/box_definitions.h',
862            'formats/mp4/box_reader.cc',
863            'formats/mp4/box_reader.h',
864            'formats/mp4/cenc.cc',
865            'formats/mp4/cenc.h',
866            'formats/mp4/es_descriptor.cc',
867            'formats/mp4/es_descriptor.h',
868            'formats/mp4/mp4_stream_parser.cc',
869            'formats/mp4/mp4_stream_parser.h',
870            'formats/mp4/track_run_iterator.cc',
871            'formats/mp4/track_run_iterator.h',
872            'formats/mpeg/adts_constants.cc',
873            'formats/mpeg/adts_constants.h',
874            'formats/mpeg/adts_stream_parser.cc',
875            'formats/mpeg/adts_stream_parser.h',
876            'formats/mpeg/mp3_stream_parser.cc',
877            'formats/mpeg/mp3_stream_parser.h',
878            'formats/mpeg/mpeg_audio_stream_parser_base.cc',
879            'formats/mpeg/mpeg_audio_stream_parser_base.h',
880          ],
881          'conditions': [
882            ['enable_mpeg2ts_stream_parser==1', {
883              'defines': [
884                'ENABLE_MPEG2TS_STREAM_PARSER',
885              ],
886            }],
887          ],
888        }],
889        ['toolkit_uses_gtk==1', {
890          'dependencies': [
891            '../build/linux/system.gyp:gtk',
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_stream_unittest.cc',
1043        'filters/video_renderer_impl_unittest.cc',
1044        'midi/midi_manager_usb_unittest.cc',
1045        'midi/midi_message_queue_unittest.cc',
1046        'midi/midi_message_util_unittest.cc',
1047        'midi/usb_midi_descriptor_parser_unittest.cc',
1048        'midi/usb_midi_input_stream_unittest.cc',
1049        'midi/usb_midi_output_stream_unittest.cc',
1050        'video/capture/video_capture_device_unittest.cc',
1051        'formats/common/offset_byte_queue_unittest.cc',
1052        'formats/webm/cluster_builder.cc',
1053        'formats/webm/cluster_builder.h',
1054        'formats/webm/tracks_builder.cc',
1055        'formats/webm/tracks_builder.h',
1056        'formats/webm/webm_cluster_parser_unittest.cc',
1057        'formats/webm/webm_content_encodings_client_unittest.cc',
1058        'formats/webm/webm_parser_unittest.cc',
1059        'formats/webm/webm_tracks_parser_unittest.cc',
1060        'formats/webm/webm_webvtt_parser_unittest.cc',
1061      ],
1062      'include_dirs': [
1063        # Needed by media_drm_bridge.cc.
1064        '<(SHARED_INTERMEDIATE_DIR)',
1065      ],
1066      'conditions': [
1067        ['arm_neon==1', {
1068          'defines': [
1069            'USE_NEON'
1070          ],
1071        }],
1072        ['media_use_ffmpeg==1', {
1073          'dependencies': [
1074            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1075          ],
1076        }, {  # media_use_ffmpeg== 0
1077          'sources!': [
1078            'base/audio_video_metadata_extractor_unittest.cc',
1079            'base/media_file_checker_unittest.cc',
1080          ],
1081        }],
1082        ['use_alsa==1', {
1083          'defines': [
1084            'USE_ALSA',
1085          ],
1086        }],
1087        ['use_pulseaudio==1', {
1088          'defines': [
1089            'USE_PULSEAUDIO',
1090          ],
1091        }],
1092        ['os_posix==1 and OS!="mac"', {
1093          'conditions': [
1094            # TODO(dmikurube): Kill linux_use_tcmalloc. http://crbug.com/345554
1095            ['(use_allocator!="none" and use_allocator!="see_use_tcmalloc") or (use_allocator=="see_use_tcmalloc" and linux_use_tcmalloc==1)', {
1096              'dependencies': [
1097                '../base/allocator/allocator.gyp:allocator',
1098              ],
1099            }],
1100          ],
1101        }],
1102        ['OS=="android"', {
1103          'sources!': [
1104            'audio/audio_input_volume_unittest.cc',
1105            'base/container_names_unittest.cc',
1106            'ffmpeg/ffmpeg_common_unittest.cc',
1107            'filters/audio_file_reader_unittest.cc',
1108            'filters/blocking_url_protocol_unittest.cc',
1109            'filters/ffmpeg_audio_decoder_unittest.cc',
1110            'filters/ffmpeg_demuxer_unittest.cc',
1111            'filters/ffmpeg_glue_unittest.cc',
1112            'filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc',
1113            'filters/ffmpeg_video_decoder_unittest.cc',
1114            'filters/pipeline_integration_test.cc',
1115            'filters/pipeline_integration_test_base.cc',
1116          ],
1117          'conditions': [
1118            ['gtest_target_type=="shared_library"', {
1119              'dependencies': [
1120                '../testing/android/native_test.gyp:native_test_native_code',
1121                'player_android',
1122              ],
1123            }],
1124          ],
1125        }],
1126        ['OS=="linux"', {
1127          'conditions': [
1128            ['use_cras==1', {
1129              'sources': [
1130                'audio/cras/cras_input_unittest.cc',
1131                'audio/cras/cras_unified_unittest.cc',
1132              ],
1133              'defines': [
1134                'USE_CRAS',
1135              ],
1136            }],
1137          ],
1138        }],
1139        ['use_alsa==0', {
1140          'sources!': [
1141            'audio/alsa/alsa_output_unittest.cc',
1142            'audio/audio_low_latency_input_output_unittest.cc',
1143          ],
1144        }],
1145        ['target_arch=="ia32" or target_arch=="x64"', {
1146          'sources': [
1147            'base/simd/convert_rgb_to_yuv_unittest.cc',
1148          ],
1149        }],
1150        ['proprietary_codecs==1', {
1151          'sources': [
1152            'formats/common/stream_parser_test_base.cc',
1153            'formats/common/stream_parser_test_base.h',
1154            'formats/mp2t/es_parser_h264_unittest.cc',
1155            'formats/mp2t/mp2t_stream_parser_unittest.cc',
1156            'formats/mp4/aac_unittest.cc',
1157            'formats/mp4/avc_unittest.cc',
1158            'formats/mp4/box_reader_unittest.cc',
1159            'formats/mp4/es_descriptor_unittest.cc',
1160            'formats/mp4/mp4_stream_parser_unittest.cc',
1161            'formats/mp4/track_run_iterator_unittest.cc',
1162            'formats/mpeg/adts_stream_parser_unittest.cc',
1163            'formats/mpeg/mp3_stream_parser_unittest.cc',
1164          ],
1165        }],
1166        # TODO(wolenetz): Fix size_t to int truncations in win64. See
1167        # http://crbug.com/171009
1168        ['OS=="win" and target_arch=="x64"', {
1169          'msvs_disabled_warnings': [ 4267, ],
1170        }],
1171      ],
1172    },
1173    {
1174      'target_name': 'media_perftests',
1175      'type': '<(gtest_target_type)',
1176      'dependencies': [
1177        '../base/base.gyp:test_support_base',
1178        '../testing/gmock.gyp:gmock',
1179        '../testing/gtest.gyp:gtest',
1180        '../testing/perf/perf_test.gyp:perf_test',
1181        '../ui/base/ui_base.gyp:ui_base',
1182        '../ui/gfx/gfx.gyp:gfx',
1183        '../ui/gfx/gfx.gyp:gfx_geometry',
1184        '../ui/gl/gl.gyp:gl',
1185        'media',
1186        'media_test_support',
1187        'shared_memory_support',
1188      ],
1189      'sources': [
1190        'base/audio_bus_perftest.cc',
1191        'base/audio_converter_perftest.cc',
1192        'base/demuxer_perftest.cc',
1193        'base/run_all_perftests.cc',
1194        'base/sinc_resampler_perftest.cc',
1195        'base/vector_math_perftest.cc',
1196        'filters/pipeline_integration_perftest.cc',
1197        'filters/pipeline_integration_test_base.cc',
1198      ],
1199      'conditions': [
1200        ['arm_neon==1', {
1201          'defines': [
1202            'USE_NEON'
1203          ],
1204        }],
1205        ['OS=="android"', {
1206          'conditions': [
1207            ['gtest_target_type=="shared_library"', {
1208              'dependencies': [
1209                '../testing/android/native_test.gyp:native_test_native_code',
1210              ],
1211            }],
1212          ],
1213        }],
1214        ['media_use_ffmpeg==1', {
1215          'dependencies': [
1216            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1217          ],
1218        }, {  # media_use_ffmpeg==0
1219          'sources!': [
1220            'base/demuxer_perftest.cc',
1221            'filters/pipeline_integration_perftest.cc',
1222            'filters/pipeline_integration_test_base.cc',
1223          ],
1224        }],
1225      ],
1226    },
1227    {
1228      'target_name': 'media_test_support',
1229      'type': 'static_library',
1230      'dependencies': [
1231        'media',
1232        'shared_memory_support',
1233        '../base/base.gyp:base',
1234        '../skia/skia.gyp:skia',
1235        '../testing/gmock.gyp:gmock',
1236        '../testing/gtest.gyp:gtest',
1237      ],
1238      'sources': [
1239        'audio/mock_audio_manager.cc',
1240        'audio/mock_audio_manager.h',
1241        'audio/mock_audio_source_callback.cc',
1242        'audio/mock_audio_source_callback.h',
1243        'audio/test_audio_input_controller_factory.cc',
1244        'audio/test_audio_input_controller_factory.h',
1245        'base/fake_audio_render_callback.cc',
1246        'base/fake_audio_render_callback.h',
1247        'base/fake_audio_renderer_sink.cc',
1248        'base/fake_audio_renderer_sink.h',
1249        'base/fake_text_track_stream.cc',
1250        'base/fake_text_track_stream.h',
1251        'base/gmock_callback_support.h',
1252        'base/mock_audio_renderer_sink.cc',
1253        'base/mock_audio_renderer_sink.h',
1254        'base/mock_demuxer_host.cc',
1255        'base/mock_demuxer_host.h',
1256        'base/mock_filters.cc',
1257        'base/mock_filters.h',
1258        'base/test_data_util.cc',
1259        'base/test_data_util.h',
1260        'base/test_helpers.cc',
1261        'base/test_helpers.h',
1262        'filters/mock_gpu_video_accelerator_factories.cc',
1263        'filters/mock_gpu_video_accelerator_factories.h',
1264        'video/capture/mock_video_capture_event_handler.cc',
1265        'video/capture/mock_video_capture_event_handler.h',
1266        'video/mock_video_decode_accelerator.cc',
1267        'video/mock_video_decode_accelerator.h',
1268      ],
1269    },
1270    {
1271      # Minimal target for NaCl and other renderer side media clients which
1272      # only need to send audio data across the shared memory to the browser
1273      # process.
1274      'target_name': 'shared_memory_support',
1275      'type': '<(component)',
1276      'dependencies': [
1277        '../base/base.gyp:base',
1278      ],
1279      'defines': [
1280        'MEDIA_IMPLEMENTATION',
1281      ],
1282      'include_dirs': [
1283        '..',
1284      ],
1285      'includes': [
1286        'shared_memory_support.gypi',
1287      ],
1288      'sources': [
1289        '<@(shared_memory_support_sources)',
1290      ],
1291      'conditions': [
1292        ['arm_neon==1', {
1293          'defines': [
1294            'USE_NEON'
1295          ],
1296        }],
1297        ['target_arch=="ia32" or target_arch=="x64"', {
1298          'dependencies': [
1299            'shared_memory_support_sse'
1300          ],
1301        }],
1302      ],
1303    },
1304  ],
1305  'conditions': [
1306    ['target_arch!="arm"', {
1307      'targets': [
1308       {
1309          'target_name': 'media_asm',
1310          'type': 'static_library',
1311          'sources': [
1312            'base/simd/convert_rgb_to_yuv_ssse3.asm',
1313            'base/simd/convert_yuv_to_rgb_mmx.asm',
1314            'base/simd/convert_yuv_to_rgb_sse.asm',
1315            'base/simd/convert_yuva_to_argb_mmx.asm',
1316            'base/simd/empty_register_state_mmx.asm',
1317            'base/simd/linear_scale_yuv_to_rgb_mmx.asm',
1318            'base/simd/linear_scale_yuv_to_rgb_sse.asm',
1319            'base/simd/scale_yuv_to_rgb_mmx.asm',
1320            'base/simd/scale_yuv_to_rgb_sse.asm',
1321          ],
1322          'conditions': [
1323            ['component=="shared_library"', {
1324              'variables': {
1325                'yasm_flags': ['-DEXPORT_SYMBOLS'],
1326              },
1327            }],
1328            ['target_arch=="x64"', {
1329              # Source files optimized for X64 systems.
1330              'sources': [
1331                'base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm',
1332                'base/simd/scale_yuv_to_rgb_sse2_x64.asm',
1333              ],
1334              'variables': {
1335                'yasm_flags': ['-DARCH_X86_64'],
1336              },
1337            }],
1338            ['OS=="mac"', {
1339              'variables': {
1340                'yasm_flags': [
1341                  '-DPREFIX',
1342                  '-DMACHO',
1343                ],
1344              },
1345              'sources': [
1346                # XCode doesn't want to link a pure assembly target and will
1347                # fail to link when it creates an empty file list.  So add a
1348                # dummy file keep the linker happy.  See http://crbug.com/157073
1349                'base/simd/xcode_hack.c',
1350              ],
1351            }],
1352            ['os_posix==1 and OS!="mac"', {
1353              'variables': {
1354                'conditions': [
1355                  ['target_arch=="ia32"', {
1356                    'yasm_flags': [
1357                      '-DARCH_X86_32',
1358                      '-DELF',
1359                    ],
1360                  }, { # target_arch=="x64"
1361                    'yasm_flags': [
1362                      '-DARCH_X86_64',
1363                      '-DELF',
1364                      '-DPIC',
1365                    ],
1366                  }],
1367                ],
1368              },
1369            }],
1370          ],
1371          'variables': {
1372            'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/media',
1373            'yasm_flags': [
1374              '-DCHROMIUM',
1375              # In addition to the same path as source asm, let yasm %include
1376              # search path be relative to src/ per Chromium policy.
1377              '-I..',
1378            ],
1379            'yasm_includes': [
1380              '../third_party/x86inc/x86inc.asm',
1381              'base/simd/convert_rgb_to_yuv_ssse3.inc',
1382              'base/simd/convert_yuv_to_rgb_mmx.inc',
1383              'base/simd/convert_yuva_to_argb_mmx.inc',
1384              'base/simd/linear_scale_yuv_to_rgb_mmx.inc',
1385              'base/simd/media_export.asm',
1386              'base/simd/scale_yuv_to_rgb_mmx.inc',
1387            ],
1388          },
1389          'msvs_2010_disable_uldi_when_referenced': 1,
1390          'includes': [
1391            '../third_party/yasm/yasm_compile.gypi',
1392          ],
1393        },
1394        {
1395          'target_name': 'media_mmx',
1396          'type': 'static_library',
1397          'cflags': [
1398            '-mmmx',
1399          ],
1400          'defines': [
1401            'MEDIA_IMPLEMENTATION',
1402          ],
1403          'include_dirs': [
1404            '..',
1405          ],
1406          'sources': [
1407            'base/simd/filter_yuv_mmx.cc',
1408          ],
1409        },
1410        {
1411          'target_name': 'media_sse',
1412          'type': 'static_library',
1413          'cflags': [
1414            '-msse',
1415          ],
1416          'defines': [
1417            'MEDIA_IMPLEMENTATION',
1418          ],
1419          'include_dirs': [
1420            '..',
1421          ],
1422          'sources': [
1423            'base/simd/sinc_resampler_sse.cc',
1424          ],
1425        },
1426        {
1427          'target_name': 'media_sse2',
1428          'type': 'static_library',
1429          'cflags': [
1430            '-msse2',
1431          ],
1432          'defines': [
1433            'MEDIA_IMPLEMENTATION',
1434          ],
1435          'include_dirs': [
1436            '..',
1437          ],
1438          'sources': [
1439            'base/simd/convert_rgb_to_yuv_sse2.cc',
1440            'base/simd/convert_rgb_to_yuv_ssse3.cc',
1441            'base/simd/filter_yuv_sse2.cc',
1442          ],
1443        },
1444        {
1445          'target_name': 'shared_memory_support_sse',
1446          'type': 'static_library',
1447          'cflags': [
1448            '-msse',
1449          ],
1450          'defines': [
1451            'MEDIA_IMPLEMENTATION',
1452          ],
1453          'include_dirs': [
1454            '..',
1455          ],
1456          'sources': [
1457            'base/simd/vector_math_sse.cc',
1458          ],
1459        },
1460      ], # targets
1461    }],
1462    ['use_x11==1', {
1463      'targets': [
1464        {
1465          'target_name': 'player_x11',
1466          'type': 'executable',
1467          'dependencies': [
1468            'media',
1469	    'shared_memory_support',
1470            '../base/base.gyp:base',
1471            '../ui/gl/gl.gyp:gl',
1472            '../ui/gfx/gfx.gyp:gfx',
1473            '../ui/gfx/gfx.gyp:gfx_geometry',
1474            '../build/linux/system.gyp:x11',
1475            '../build/linux/system.gyp:xext',
1476            '../build/linux/system.gyp:xrender',
1477          ],
1478          'conditions': [
1479            # Linux/Solaris need libdl for dlopen() and friends.
1480            ['OS=="linux" or OS=="solaris"', {
1481              'link_settings': {
1482                'libraries': [
1483                  '-ldl',
1484                ],
1485              },
1486            }],
1487          ],
1488          'sources': [
1489            'tools/player_x11/data_source_logger.cc',
1490            'tools/player_x11/data_source_logger.h',
1491            'tools/player_x11/gl_video_renderer.cc',
1492            'tools/player_x11/gl_video_renderer.h',
1493            'tools/player_x11/player_x11.cc',
1494            'tools/player_x11/x11_video_renderer.cc',
1495            'tools/player_x11/x11_video_renderer.h',
1496          ],
1497        },
1498      ],
1499    }],
1500    # Special target to wrap a gtest_target_type==shared_library
1501    # media_unittests into an android apk for execution.
1502    ['OS=="android" and gtest_target_type=="shared_library"', {
1503      'targets': [
1504        {
1505          'target_name': 'media_unittests_apk',
1506          'type': 'none',
1507          'dependencies': [
1508            'media_java',
1509            'media_unittests',
1510          ],
1511          'variables': {
1512            'test_suite_name': 'media_unittests',
1513            'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)media_unittests<(SHARED_LIB_SUFFIX)',
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            'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)media_perftests<(SHARED_LIB_SUFFIX)',
1527          },
1528          'includes': ['../build/apk_test.gypi'],
1529        },
1530      ],
1531    }],
1532    ['OS=="android"', {
1533      'targets': [
1534        {
1535          'target_name': 'media_android_jni_headers',
1536          'type': 'none',
1537          'sources': [
1538            'base/android/java/src/org/chromium/media/AudioManagerAndroid.java',
1539            'base/android/java/src/org/chromium/media/AudioRecordInput.java',
1540            'base/android/java/src/org/chromium/media/MediaCodecBridge.java',
1541            'base/android/java/src/org/chromium/media/MediaDrmBridge.java',
1542            'base/android/java/src/org/chromium/media/MediaPlayerBridge.java',
1543            'base/android/java/src/org/chromium/media/MediaPlayerListener.java',
1544            'base/android/java/src/org/chromium/media/UsbMidiDeviceAndroid.java',
1545            'base/android/java/src/org/chromium/media/UsbMidiDeviceFactoryAndroid.java',
1546            'base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java',
1547          ],
1548          'variables': {
1549            'jni_gen_package': 'media',
1550            'jni_generator_ptr_type': 'long',
1551          },
1552          'includes': ['../build/jni_generator.gypi'],
1553        },
1554        {
1555          'target_name': 'video_capture_android_jni_headers',
1556          'type': 'none',
1557          'sources': [
1558            'base/android/java/src/org/chromium/media/VideoCapture.java',
1559            'base/android/java/src/org/chromium/media/VideoCaptureFactory.java',
1560          ],
1561          'variables': {
1562            'jni_gen_package': 'media',
1563            'jni_generator_ptr_type': 'long',
1564          },
1565          'includes': ['../build/jni_generator.gypi'],
1566        },
1567        {
1568          'target_name': 'player_android',
1569          'type': 'static_library',
1570          'sources': [
1571            'base/android/audio_decoder_job.cc',
1572            'base/android/audio_decoder_job.h',
1573            'base/android/media_codec_bridge.cc',
1574            'base/android/media_codec_bridge.h',
1575            'base/android/media_decoder_job.cc',
1576            'base/android/media_decoder_job.h',
1577            'base/android/media_drm_bridge.cc',
1578            'base/android/media_drm_bridge.h',
1579            'base/android/media_jni_registrar.cc',
1580            'base/android/media_jni_registrar.h',
1581            'base/android/media_player_android.cc',
1582            'base/android/media_player_android.h',
1583            'base/android/media_player_bridge.cc',
1584            'base/android/media_player_bridge.h',
1585            'base/android/media_player_listener.cc',
1586            'base/android/media_player_listener.h',
1587            'base/android/media_source_player.cc',
1588            'base/android/media_source_player.h',
1589            'base/android/video_decoder_job.cc',
1590            'base/android/video_decoder_job.h',
1591            'base/android/webaudio_media_codec_bridge.cc',
1592            'base/android/webaudio_media_codec_bridge.h',
1593            'base/android/webaudio_media_codec_info.h',
1594          ],
1595          'dependencies': [
1596            '../base/base.gyp:base',
1597            '../third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h',
1598            '../ui/gl/gl.gyp:gl',
1599            '../url/url.gyp:url_lib',
1600            'media_android_jni_headers',
1601          ],
1602          'include_dirs': [
1603            # Needed by media_drm_bridge.cc.
1604            '<(SHARED_INTERMEDIATE_DIR)',
1605          ],
1606          'defines': [
1607            'MEDIA_IMPLEMENTATION',
1608          ],
1609        },
1610        {
1611          'target_name': 'media_java',
1612          'type': 'none',
1613          'dependencies': [
1614            '../base/base.gyp:base',
1615            'media_android_imageformat_list',
1616          ],
1617          'export_dependent_settings': [
1618            '../base/base.gyp:base',
1619          ],
1620          'variables': {
1621            'java_in_dir': 'base/android/java',
1622          },
1623          'includes': ['../build/java.gypi'],
1624        },
1625        {
1626          'target_name': 'media_android_imageformat_list',
1627          'type': 'none',
1628          'sources': [
1629            'base/android/java/src/org/chromium/media/ImageFormat.template',
1630          ],
1631          'variables': {
1632            'package_name': 'org/chromium/media',
1633            'template_deps': ['video/capture/android/imageformat_list.h'],
1634          },
1635          'includes': [ '../build/android/java_cpp_template.gypi' ],
1636        },
1637      ],
1638    }],
1639    ['media_use_ffmpeg==1', {
1640      'targets': [
1641        {
1642          'target_name': 'ffmpeg_unittests',
1643          'type': 'executable',
1644          'dependencies': [
1645            '../base/base.gyp:base',
1646            '../base/base.gyp:base_i18n',
1647            '../base/base.gyp:test_support_base',
1648            '../base/base.gyp:test_support_perf',
1649            '../testing/gtest.gyp:gtest',
1650            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1651            'media',
1652            'media_test_support',
1653          ],
1654          'sources': [
1655            'ffmpeg/ffmpeg_unittest.cc',
1656          ],
1657          'conditions': [
1658            ['toolkit_uses_gtk==1', {
1659              'dependencies': [
1660                # Needed for the following #include chain:
1661                #   base/run_all_unittests.cc
1662                #   ../base/test_suite.h
1663                #   gtk/gtk.h
1664                '../build/linux/system.gyp:gtk',
1665              ],
1666              'conditions': [
1667                # TODO(dmikurube): Kill linux_use_tcmalloc. http://crbug.com/345554
1668                ['(use_allocator!="none" and use_allocator!="see_use_tcmalloc") or (use_allocator=="see_use_tcmalloc" and linux_use_tcmalloc==1)', {
1669                  'dependencies': [
1670                    '../base/allocator/allocator.gyp:allocator',
1671                  ],
1672                }],
1673              ],
1674            }],
1675          ],
1676        },
1677        {
1678          'target_name': 'ffmpeg_regression_tests',
1679          'type': 'executable',
1680          'dependencies': [
1681            '../base/base.gyp:test_support_base',
1682            '../testing/gmock.gyp:gmock',
1683            '../testing/gtest.gyp:gtest',
1684            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1685            '../ui/gfx/gfx.gyp:gfx_geometry',
1686            'media',
1687            'media_test_support',
1688          ],
1689          'sources': [
1690            'base/run_all_unittests.cc',
1691            'ffmpeg/ffmpeg_regression_tests.cc',
1692            'filters/pipeline_integration_test_base.cc',
1693          ],
1694          'conditions': [
1695            ['os_posix==1 and OS!="mac"', {
1696              'conditions': [
1697                # TODO(dmikurube): Kill linux_use_tcmalloc. http://crbug.com/345554
1698                ['(use_allocator!="none" and use_allocator!="see_use_tcmalloc") or (use_allocator=="see_use_tcmalloc" and linux_use_tcmalloc==1)', {
1699                  'dependencies': [
1700                    '../base/allocator/allocator.gyp:allocator',
1701                  ],
1702                }],
1703              ],
1704            }],
1705          ],
1706        },
1707      ],
1708    }],
1709  ],
1710}
1711