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