• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 PulseAudio library.
9    'use_pulseaudio%': 0,
10    # Override to dynamically link the cras (ChromeOS audio) library.
11    'use_cras%': 0,
12  },
13  'targets': [
14    {
15      'target_name': 'media',
16      'type': '<(component)',
17      'dependencies': [
18        'yuv_convert',
19        '../base/base.gyp:base',
20        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
21        '../build/temp_gyp/googleurl.gyp:googleurl',
22        '../crypto/crypto.gyp:crypto',
23        '../third_party/openmax/openmax.gyp:il',
24        '../ui/ui.gyp:ui',
25      ],
26      'defines': [
27        'MEDIA_IMPLEMENTATION',
28      ],
29      'include_dirs': [
30        '..',
31      ],
32      'sources': [
33        'audio/android/audio_manager_android.cc',
34        'audio/android/audio_manager_android.h',
35        'audio/android/audio_track_output_android.cc',
36        'audio/android/audio_track_output_android.h',
37        'audio/android/opensles_input.cc',
38        'audio/android/opensles_input.h',
39        'audio/android/opensles_output.cc',
40        'audio/android/opensles_output.h',
41        'audio/async_socket_io_handler.h',
42        'audio/async_socket_io_handler_posix.cc',
43        'audio/async_socket_io_handler_win.cc',
44        'audio/audio_buffers_state.cc',
45        'audio/audio_buffers_state.h',
46        'audio/audio_io.h',
47        'audio/audio_input_controller.cc',
48        'audio/audio_input_controller.h',
49        'audio/audio_input_stream_impl.cc',
50        'audio/audio_input_stream_impl.h',
51        'audio/audio_device_name.cc',
52        'audio/audio_device_name.h',
53        'audio/audio_manager.cc',
54        'audio/audio_manager.h',
55        'audio/audio_manager_base.cc',
56        'audio/audio_manager_base.h',
57        'audio/audio_output_controller.cc',
58        'audio/audio_output_controller.h',
59        'audio/audio_output_dispatcher.cc',
60        'audio/audio_output_dispatcher.h',
61        'audio/audio_output_dispatcher_impl.cc',
62        'audio/audio_output_dispatcher_impl.h',
63        'audio/audio_output_mixer.cc',
64        'audio/audio_output_mixer.h',
65        'audio/audio_output_proxy.cc',
66        'audio/audio_output_proxy.h',
67        'audio/audio_parameters.cc',
68        'audio/audio_parameters.h',
69        'audio/audio_util.cc',
70        'audio/audio_util.h',
71        'audio/cross_process_notification.cc',
72        'audio/cross_process_notification.h',
73        'audio/cross_process_notification_win.cc',
74        'audio/cross_process_notification_posix.cc',
75        'audio/fake_audio_input_stream.cc',
76        'audio/fake_audio_input_stream.h',
77        'audio/fake_audio_output_stream.cc',
78        'audio/fake_audio_output_stream.h',
79        'audio/linux/audio_manager_linux.cc',
80        'audio/linux/audio_manager_linux.h',
81        'audio/linux/alsa_input.cc',
82        'audio/linux/alsa_input.h',
83        'audio/linux/alsa_output.cc',
84        'audio/linux/alsa_output.h',
85        'audio/linux/alsa_util.cc',
86        'audio/linux/alsa_util.h',
87        'audio/linux/alsa_wrapper.cc',
88        'audio/linux/alsa_wrapper.h',
89        'audio/linux/cras_output.cc',
90        'audio/linux/cras_output.h',
91        'audio/openbsd/audio_manager_openbsd.cc',
92        'audio/openbsd/audio_manager_openbsd.h',
93        'audio/mac/audio_input_mac.cc',
94        'audio/mac/audio_input_mac.h',
95        'audio/mac/audio_low_latency_input_mac.cc',
96        'audio/mac/audio_low_latency_input_mac.h',
97        'audio/mac/audio_low_latency_output_mac.cc',
98        'audio/mac/audio_low_latency_output_mac.h',
99        'audio/mac/audio_manager_mac.cc',
100        'audio/mac/audio_manager_mac.h',
101        'audio/mac/audio_output_mac.cc',
102        'audio/mac/audio_output_mac.h',
103        'audio/null_audio_sink.cc',
104        'audio/null_audio_sink.h',
105        'audio/pulse/pulse_output.cc',
106        'audio/pulse/pulse_output.h',
107        'audio/sample_rates.cc',
108        'audio/sample_rates.h',
109        'audio/simple_sources.cc',
110        'audio/simple_sources.h',
111        'audio/win/audio_low_latency_input_win.cc',
112        'audio/win/audio_low_latency_input_win.h',
113        'audio/win/audio_low_latency_output_win.cc',
114        'audio/win/audio_low_latency_output_win.h',
115        'audio/win/audio_manager_win.cc',
116        'audio/win/audio_manager_win.h',
117        'audio/win/avrt_wrapper_win.cc',
118        'audio/win/avrt_wrapper_win.h',
119        'audio/win/device_enumeration_win.cc',
120        'audio/win/device_enumeration_win.h',
121        'audio/win/wavein_input_win.cc',
122        'audio/win/wavein_input_win.h',
123        'audio/win/waveout_output_win.cc',
124        'audio/win/waveout_output_win.h',
125        'base/android/media_jni_registrar.cc',
126        'base/android/media_jni_registrar.h',
127        'base/audio_decoder.cc',
128        'base/audio_decoder.h',
129        'base/audio_decoder_config.cc',
130        'base/audio_decoder_config.h',
131        'base/audio_renderer.h',
132        'base/audio_renderer_mixer.cc',
133        'base/audio_renderer_mixer.h',
134        'base/audio_renderer_mixer_input.cc',
135        'base/audio_renderer_mixer_input.h',
136        'base/bitstream_buffer.h',
137        'base/buffers.cc',
138        'base/buffers.h',
139        'base/byte_queue.cc',
140        'base/byte_queue.h',
141        'base/channel_layout.cc',
142        'base/channel_layout.h',
143        'base/clock.cc',
144        'base/clock.h',
145        'base/composite_filter.cc',
146        'base/composite_filter.h',
147        'base/data_buffer.cc',
148        'base/data_buffer.h',
149        'base/data_source.cc',
150        'base/data_source.h',
151        'base/decoder_buffer.cc',
152        'base/decoder_buffer.h',
153        'base/decrypt_config.cc',
154        'base/decrypt_config.h',
155        'base/decryptor.h',
156        'base/decryptor_client.h',
157        'base/demuxer.cc',
158        'base/demuxer.h',
159        'base/demuxer_stream.cc',
160        'base/demuxer_stream.h',
161        'base/djb2.cc',
162        'base/djb2.h',
163        'base/filter_collection.cc',
164        'base/filter_collection.h',
165        'base/filter_host.h',
166        'base/filters.cc',
167        'base/filters.h',
168        'base/h264_bitstream_converter.cc',
169        'base/h264_bitstream_converter.h',
170        'base/media.h',
171        'base/media_android.cc',
172        'base/media_export.h',
173        'base/media_log.cc',
174        'base/media_log.h',
175        'base/media_log_event.h',
176        'base/media_posix.cc',
177        'base/media_switches.cc',
178        'base/media_switches.h',
179        'base/media_win.cc',
180        'base/message_loop_factory.cc',
181        'base/message_loop_factory.h',
182        'base/pipeline.cc',
183        'base/pipeline.h',
184        'base/pipeline_status.cc',
185        'base/pipeline_status.h',
186        'base/ranges.cc',
187        'base/ranges.h',
188        'base/seekable_buffer.cc',
189        'base/seekable_buffer.h',
190        'base/state_matrix.cc',
191        'base/state_matrix.h',
192        'base/stream_parser.cc',
193        'base/stream_parser.h',
194        'base/stream_parser_buffer.cc',
195        'base/stream_parser_buffer.h',
196        'base/video_decoder.cc',
197        'base/video_decoder.h',
198        'base/video_decoder_config.cc',
199        'base/video_decoder_config.h',
200        'base/video_frame.cc',
201        'base/video_frame.h',
202        'base/video_renderer.h',
203        'base/video_util.cc',
204        'base/video_util.h',
205        'crypto/aes_decryptor.cc',
206        'crypto/aes_decryptor.h',
207        'ffmpeg/ffmpeg_common.cc',
208        'ffmpeg/ffmpeg_common.h',
209        'ffmpeg/file_protocol.cc',
210        'ffmpeg/file_protocol.h',
211        'filters/audio_file_reader.cc',
212        'filters/audio_file_reader.h',
213        'filters/audio_renderer_algorithm.cc',
214        'filters/audio_renderer_algorithm.h',
215        'filters/audio_renderer_impl.cc',
216        'filters/audio_renderer_impl.h',
217        'filters/bitstream_converter.cc',
218        'filters/bitstream_converter.h',
219        'filters/chunk_demuxer.cc',
220        'filters/chunk_demuxer.h',
221        'filters/chunk_demuxer_client.h',
222        'filters/dummy_demuxer.cc',
223        'filters/dummy_demuxer.h',
224        'filters/ffmpeg_audio_decoder.cc',
225        'filters/ffmpeg_audio_decoder.h',
226        'filters/ffmpeg_demuxer.cc',
227        'filters/ffmpeg_demuxer.h',
228        'filters/ffmpeg_h264_bitstream_converter.cc',
229        'filters/ffmpeg_h264_bitstream_converter.h',
230        'filters/ffmpeg_glue.cc',
231        'filters/ffmpeg_glue.h',
232        'filters/ffmpeg_video_decoder.cc',
233        'filters/ffmpeg_video_decoder.h',
234        'filters/file_data_source.cc',
235        'filters/file_data_source.h',
236        'filters/gpu_video_decoder.cc',
237        'filters/gpu_video_decoder.h',
238        'filters/in_memory_url_protocol.cc',
239        'filters/in_memory_url_protocol.h',
240        'filters/source_buffer_stream.cc',
241        'filters/source_buffer_stream.h',
242        'filters/video_frame_generator.cc',
243        'filters/video_frame_generator.h',
244        'filters/video_renderer_base.cc',
245        'filters/video_renderer_base.h',
246        'video/capture/fake_video_capture_device.cc',
247        'video/capture/fake_video_capture_device.h',
248        'video/capture/linux/video_capture_device_linux.cc',
249        'video/capture/linux/video_capture_device_linux.h',
250        'video/capture/mac/video_capture_device_mac.h',
251        'video/capture/mac/video_capture_device_mac.mm',
252        'video/capture/mac/video_capture_device_qtkit_mac.h',
253        'video/capture/mac/video_capture_device_qtkit_mac.mm',
254        'video/capture/video_capture.h',
255        'video/capture/video_capture_device.h',
256        'video/capture/video_capture_device_dummy.cc',
257        'video/capture/video_capture_device_dummy.h',
258        'video/capture/video_capture_proxy.cc',
259        'video/capture/video_capture_proxy.h',
260        'video/capture/video_capture_types.h',
261        'video/capture/win/filter_base_win.cc',
262        'video/capture/win/filter_base_win.h',
263        'video/capture/win/pin_base_win.cc',
264        'video/capture/win/pin_base_win.h',
265        'video/capture/win/sink_filter_observer_win.h',
266        'video/capture/win/sink_filter_win.cc',
267        'video/capture/win/sink_filter_win.h',
268        'video/capture/win/sink_input_pin_win.cc',
269        'video/capture/win/sink_input_pin_win.h',
270        'video/capture/win/video_capture_device_win.cc',
271        'video/capture/win/video_capture_device_win.h',
272        'video/picture.cc',
273        'video/picture.h',
274        'video/video_decode_accelerator.cc',
275        'video/video_decode_accelerator.h',
276        'webm/webm_constants.h',
277        'webm/webm_cluster_parser.cc',
278        'webm/webm_cluster_parser.h',
279        'webm/webm_content_encodings.cc',
280        'webm/webm_content_encodings.h',
281        'webm/webm_content_encodings_client.cc',
282        'webm/webm_content_encodings_client.h',
283        'webm/webm_info_parser.cc',
284        'webm/webm_info_parser.h',
285        'webm/webm_parser.cc',
286        'webm/webm_parser.h',
287        'webm/webm_stream_parser.cc',
288        'webm/webm_stream_parser.h',
289        'webm/webm_tracks_parser.cc',
290        'webm/webm_tracks_parser.h',
291      ],
292      'direct_dependent_settings': {
293        'include_dirs': [
294          '..',
295        ],
296      },
297      'conditions': [
298        # Android doesn't use ffmpeg, so make the dependency conditional
299        # and exclude the sources which depend on ffmpeg.
300        ['OS != "android"', {
301          'dependencies': [
302            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
303          ],
304        }],
305        ['OS == "android"', {
306          'sources!': [
307            'base/media_posix.cc',
308            'ffmpeg/ffmpeg_common.cc',
309            'ffmpeg/ffmpeg_common.h',
310            'ffmpeg/file_protocol.cc',
311            'ffmpeg/file_protocol.h',
312            'filters/audio_file_reader.cc',
313            'filters/audio_file_reader.h',
314            'filters/bitstream_converter.cc',
315            'filters/bitstream_converter.h',
316            'filters/chunk_demuxer.cc',
317            'filters/chunk_demuxer.h',
318            'filters/chunk_demuxer_client.h',
319            'filters/ffmpeg_audio_decoder.cc',
320            'filters/ffmpeg_audio_decoder.h',
321            'filters/ffmpeg_demuxer.cc',
322            'filters/ffmpeg_demuxer.h',
323            'filters/ffmpeg_h264_bitstream_converter.cc',
324            'filters/ffmpeg_h264_bitstream_converter.h',
325            'filters/ffmpeg_glue.cc',
326            'filters/ffmpeg_glue.h',
327            'filters/ffmpeg_video_decoder.cc',
328            'filters/ffmpeg_video_decoder.h',
329            'filters/gpu_video_decoder.cc',
330            'filters/gpu_video_decoder.h',
331            'webm/webm_cluster_parser.cc',
332            'webm/webm_cluster_parser.h',
333            'webm/webm_stream_parser.cc',
334            'webm/webm_stream_parser.h',
335          ],
336        }],
337        # The below 'android' condition were added temporarily and should be
338        # removed in downstream, because there is no Java environment setup in
339        # upstream yet.
340        ['OS == "android"', {
341          'sources!':[
342            'audio/android/audio_track_output_android.cc',
343          ],
344          'sources':[
345            'audio/android/audio_track_output_stub_android.cc',
346          ],
347          'link_settings': {
348            'libraries': [
349              '-lOpenSLES',
350            ],
351          },
352        }],
353        ['OS=="linux" or OS=="freebsd" or OS=="solaris"', {
354          'link_settings': {
355            'libraries': [
356              '-lasound',
357            ],
358          },
359        }],
360        ['OS=="openbsd"', {
361          'sources/': [ ['exclude', '/alsa_' ],
362                        ['exclude', '/audio_manager_linux' ] ],
363          'link_settings': {
364            'libraries': [
365            ],
366          },
367        }],
368        ['OS!="openbsd"', {
369          'sources!': [
370            'audio/openbsd/audio_manager_openbsd.cc',
371            'audio/openbsd/audio_manager_openbsd.h',
372          ],
373        }],
374        ['OS=="linux"', {
375          'variables': {
376            'conditions': [
377              ['sysroot!=""', {
378                'pkg-config': '../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
379              }, {
380                'pkg-config': 'pkg-config'
381              }],
382            ],
383          },
384          'conditions': [
385            ['use_cras == 1', {
386              'cflags': [
387                '<!@(<(pkg-config) --cflags libcras)',
388              ],
389              'link_settings': {
390                'libraries': [
391                  '<!@(<(pkg-config) --libs libcras)',
392                ],
393              },
394              'defines': [
395                'USE_CRAS',
396              ],
397            }, {  # else: use_cras == 0
398              'sources!': [
399                'audio/linux/cras_output.cc',
400                'audio/linux/cras_output.h',
401              ],
402            }],
403          ],
404        }],
405        ['os_posix == 1', {
406          'conditions': [
407            ['use_pulseaudio == 1', {
408              'cflags': [
409                '<!@(pkg-config --cflags libpulse)',
410              ],
411              'link_settings': {
412                'libraries': [
413                  '<!@(pkg-config --libs-only-l libpulse)',
414                ],
415              },
416              'defines': [
417                'USE_PULSEAUDIO',
418              ],
419            }, {  # else: use_pulseaudio == 0
420              'sources!': [
421                'audio/pulse/pulse_output.cc',
422                'audio/pulse/pulse_output.h',
423              ],
424            }],
425          ],
426        }],
427        ['os_posix == 1 and OS != "android"', {
428          # Video capture isn't supported in Android yet.
429          'sources!': [
430            'video/capture/video_capture_device_dummy.cc',
431            'video/capture/video_capture_device_dummy.h',
432          ],
433        }],
434        ['OS=="mac"', {
435          'link_settings': {
436            'libraries': [
437              '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
438              '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
439              '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
440              '$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
441              '$(SDKROOT)/System/Library/Frameworks/QTKit.framework',
442            ],
443          },
444        }],
445        ['OS=="win"', {
446          'sources!': [
447            'audio/pulse/pulse_output.cc',
448            'audio/pulse/pulse_output.h',
449            'video/capture/video_capture_device_dummy.cc',
450            'video/capture/video_capture_device_dummy.h',
451          ],
452        }],
453        ['proprietary_codecs==1 or branding=="Chrome"', {
454          'sources': [
455            'mp4/avc.cc',
456            'mp4/avc.h',
457            'mp4/box_definitions.cc',
458            'mp4/box_definitions.h',
459            'mp4/box_reader.cc',
460            'mp4/box_reader.h',
461            'mp4/cenc.cc',
462            'mp4/cenc.h',
463            'mp4/mp4_stream_parser.cc',
464            'mp4/mp4_stream_parser.h',
465            'mp4/offset_byte_queue.cc',
466            'mp4/offset_byte_queue.h',
467            'mp4/track_run_iterator.cc',
468            'mp4/track_run_iterator.h',
469          ],
470        }],
471      ],
472    },
473    {
474      'target_name': 'yuv_convert',
475      'type': 'static_library',
476      'include_dirs': [
477        '..',
478      ],
479      'conditions': [
480        ['order_profiling != 0', {
481          'target_conditions' : [
482            ['_toolset=="target"', {
483              'cflags!': [ '-finstrument-functions' ],
484            }],
485          ],
486        }],
487        [ 'target_arch == "ia32" or target_arch == "x64"', {
488          'dependencies': [
489            'yuv_convert_simd_x86',
490          ],
491        }],
492        [ 'target_arch == "arm"', {
493          'dependencies': [
494            'yuv_convert_simd_arm',
495          ],
496        }],
497      ],
498      'sources': [
499        'base/yuv_convert.cc',
500        'base/yuv_convert.h',
501      ],
502    },
503    {
504      'target_name': 'yuv_convert_simd_x86',
505      'type': 'static_library',
506      'include_dirs': [
507        '..',
508      ],
509      'sources': [
510        'base/simd/convert_rgb_to_yuv_c.cc',
511        'base/simd/convert_rgb_to_yuv_sse2.cc',
512        'base/simd/convert_rgb_to_yuv_ssse3.asm',
513        'base/simd/convert_rgb_to_yuv_ssse3.cc',
514        'base/simd/convert_rgb_to_yuv_ssse3.inc',
515        'base/simd/convert_yuv_to_rgb_c.cc',
516        'base/simd/convert_yuv_to_rgb_x86.cc',
517        'base/simd/convert_yuv_to_rgb_mmx.asm',
518        'base/simd/convert_yuv_to_rgb_mmx.inc',
519        'base/simd/convert_yuv_to_rgb_sse.asm',
520        'base/simd/filter_yuv.h',
521        'base/simd/filter_yuv_c.cc',
522        'base/simd/filter_yuv_mmx.cc',
523        'base/simd/filter_yuv_sse2.cc',
524        'base/simd/linear_scale_yuv_to_rgb_mmx.asm',
525        'base/simd/linear_scale_yuv_to_rgb_mmx.inc',
526        'base/simd/linear_scale_yuv_to_rgb_sse.asm',
527        'base/simd/scale_yuv_to_rgb_mmx.asm',
528        'base/simd/scale_yuv_to_rgb_mmx.inc',
529        'base/simd/scale_yuv_to_rgb_sse.asm',
530        'base/simd/yuv_to_rgb_table.cc',
531        'base/simd/yuv_to_rgb_table.h',
532      ],
533      'conditions': [
534        ['order_profiling != 0', {
535          'target_conditions' : [
536            ['_toolset=="target"', {
537              'cflags!': [ '-finstrument-functions' ],
538            }],
539          ],
540        }],
541        [ 'target_arch == "x64"', {
542          # Source files optimized for X64 systems.
543          'sources': [
544            'base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm',
545            'base/simd/scale_yuv_to_rgb_sse2_x64.asm',
546          ],
547        }],
548        [ 'os_posix == 1 and OS != "mac" and OS != "android"', {
549          'cflags': [
550            '-msse2',
551          ],
552        }],
553        [ 'OS == "mac"', {
554          'configurations': {
555            'Debug': {
556              'xcode_settings': {
557                # gcc on the mac builds horribly unoptimized sse code in debug
558                # mode. Since this is rarely going to be debugged, run with full
559                # optimizations in Debug as well as Release.
560                'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
561               },
562             },
563          },
564        }],
565        [ 'OS=="win"', {
566          'variables': {
567            'yasm_flags': [
568              '-DWIN32',
569              '-DMSVC',
570              '-DCHROMIUM',
571              '-Isimd',
572            ],
573          },
574        }],
575        [ 'OS=="mac"', {
576          'variables': {
577            'yasm_flags': [
578              '-DPREFIX',
579              '-DMACHO',
580              '-DCHROMIUM',
581              '-Isimd',
582            ],
583          },
584        }],
585        [ 'os_posix==1 and OS!="mac"', {
586          'variables': {
587            'conditions': [
588              [ 'target_arch=="ia32"', {
589                'yasm_flags': [
590                  '-DX86_32',
591                  '-DELF',
592                  '-DCHROMIUM',
593                  '-Isimd',
594                ],
595              }, {
596                'yasm_flags': [
597                  '-DARCH_X86_64',
598                  '-DELF',
599                  '-DPIC',
600                  '-DCHROMIUM',
601                  '-Isimd',
602                ],
603              }],
604            ],
605          },
606        }],
607      ],
608      'variables': {
609        'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/media',
610      },
611      'msvs_2010_disable_uldi_when_referenced': 1,
612      'includes': [
613        '../third_party/yasm/yasm_compile.gypi',
614      ],
615    },
616    {
617      'target_name': 'yuv_convert_simd_arm',
618      'type': 'static_library',
619      'include_dirs': [
620        '..',
621      ],
622      'sources': [
623        'base/simd/convert_rgb_to_yuv_c.cc',
624        'base/simd/convert_rgb_to_yuv.h',
625        'base/simd/convert_yuv_to_rgb_c.cc',
626        'base/simd/convert_yuv_to_rgb.h',
627        'base/simd/filter_yuv.h',
628        'base/simd/filter_yuv_c.cc',
629        'base/simd/yuv_to_rgb_table.cc',
630        'base/simd/yuv_to_rgb_table.h',
631      ],
632    },
633    {
634      'target_name': 'media_unittests',
635      'type': 'executable',
636      'dependencies': [
637        'media',
638        'media_test_support',
639        'yuv_convert',
640        '../base/base.gyp:base',
641        '../base/base.gyp:base_i18n',
642        '../base/base.gyp:test_support_base',
643        '../testing/gmock.gyp:gmock',
644        '../testing/gtest.gyp:gtest',
645        '../ui/ui.gyp:ui',
646      ],
647      'sources': [
648        'audio/async_socket_io_handler_unittest.cc',
649        'audio/audio_input_controller_unittest.cc',
650        'audio/audio_input_device_unittest.cc',
651        'audio/audio_input_unittest.cc',
652        'audio/audio_input_volume_unittest.cc',
653        'audio/audio_low_latency_input_output_unittest.cc',
654        'audio/audio_output_controller_unittest.cc',
655        'audio/audio_output_proxy_unittest.cc',
656        'audio/audio_parameters_unittest.cc',
657        'audio/audio_util_unittest.cc',
658        'audio/cross_process_notification_unittest.cc',
659        'audio/linux/alsa_output_unittest.cc',
660        'audio/mac/audio_low_latency_input_mac_unittest.cc',
661        'audio/mac/audio_output_mac_unittest.cc',
662        'audio/simple_sources_unittest.cc',
663        'audio/win/audio_low_latency_input_win_unittest.cc',
664        'audio/win/audio_low_latency_output_win_unittest.cc',
665        'audio/win/audio_output_win_unittest.cc',
666        'base/audio_renderer_mixer_unittest.cc',
667        'base/audio_renderer_mixer_input_unittest.cc',
668        'base/buffers_unittest.cc',
669        'base/clock_unittest.cc',
670        'base/composite_filter_unittest.cc',
671        'base/data_buffer_unittest.cc',
672        'base/decoder_buffer_unittest.cc',
673        'base/djb2_unittest.cc',
674        'base/fake_audio_render_callback.cc',
675        'base/fake_audio_render_callback.h',
676        'base/filter_collection_unittest.cc',
677        'base/h264_bitstream_converter_unittest.cc',
678        'base/pipeline_unittest.cc',
679        'base/ranges_unittest.cc',
680        'base/run_all_unittests.cc',
681        'base/seekable_buffer_unittest.cc',
682        'base/state_matrix_unittest.cc',
683        'base/test_data_util.cc',
684        'base/test_data_util.h',
685        'base/video_frame_unittest.cc',
686        'base/video_util_unittest.cc',
687        'base/yuv_convert_unittest.cc',
688        'crypto/aes_decryptor_unittest.cc',
689        'ffmpeg/ffmpeg_common_unittest.cc',
690        'filters/audio_renderer_algorithm_unittest.cc',
691        'filters/audio_renderer_impl_unittest.cc',
692        'filters/bitstream_converter_unittest.cc',
693        'filters/chunk_demuxer_unittest.cc',
694        'filters/ffmpeg_audio_decoder_unittest.cc',
695        'filters/ffmpeg_decoder_unittest.h',
696        'filters/ffmpeg_demuxer_unittest.cc',
697        'filters/ffmpeg_glue_unittest.cc',
698        'filters/ffmpeg_h264_bitstream_converter_unittest.cc',
699        'filters/ffmpeg_video_decoder_unittest.cc',
700        'filters/file_data_source_unittest.cc',
701        'filters/pipeline_integration_test.cc',
702        'filters/pipeline_integration_test_base.cc',
703        'filters/source_buffer_stream_unittest.cc',
704        'filters/video_renderer_base_unittest.cc',
705        'video/capture/video_capture_device_unittest.cc',
706        'webm/cluster_builder.cc',
707        'webm/cluster_builder.h',
708        'webm/webm_cluster_parser_unittest.cc',
709        'webm/webm_content_encodings_client_unittest.cc',
710        'webm/webm_parser_unittest.cc',
711      ],
712      'conditions': [
713        ['os_posix==1 and OS!="mac"', {
714          'conditions': [
715            ['linux_use_tcmalloc==1', {
716              'dependencies': [
717                '../base/allocator/allocator.gyp:allocator',
718              ],
719            }],
720          ],
721        }],
722        ['OS != "android"', {
723          'dependencies': [
724            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
725          ],
726        }],
727        ['OS == "android"', {
728          'sources!': [
729            'audio/audio_input_volume_unittest.cc',
730            'base/test_data_util.cc',
731            'base/test_data_util.h',
732            'ffmpeg/ffmpeg_common_unittest.cc',
733            'filters/ffmpeg_audio_decoder_unittest.cc',
734            'filters/bitstream_converter_unittest.cc',
735            'filters/chunk_demuxer_unittest.cc',
736            'filters/ffmpeg_demuxer_unittest.cc',
737            'filters/ffmpeg_glue_unittest.cc',
738            'filters/ffmpeg_h264_bitstream_converter_unittest.cc',
739            'filters/ffmpeg_video_decoder_unittest.cc',
740            'filters/pipeline_integration_test.cc',
741            'filters/pipeline_integration_test_base.cc',
742            'mp4/mp4_stream_parser_unittest.cc',
743            'webm/webm_cluster_parser_unittest.cc',
744          ],
745        }],
746        ['OS == "linux"', {
747          'conditions': [
748            ['use_cras == 1', {
749              'sources': [
750                'audio/linux/cras_output_unittest.cc',
751              ],
752              'defines': [
753                'USE_CRAS',
754              ],
755            }],
756          ],
757        }],
758        [ 'target_arch=="ia32" or target_arch=="x64"', {
759          'sources': [
760            'base/simd/convert_rgb_to_yuv_unittest.cc',
761          ],
762        }],
763        ['proprietary_codecs==1 or branding=="Chrome"', {
764          'sources': [
765            'mp4/avc_unittest.cc',
766            'mp4/box_reader_unittest.cc',
767            'mp4/mp4_stream_parser_unittest.cc',
768            'mp4/offset_byte_queue_unittest.cc',
769          ],
770        }],
771      ],
772    },
773    {
774      'target_name': 'media_test_support',
775      'type': 'static_library',
776      'dependencies': [
777        'media',
778        '../base/base.gyp:base',
779        '../testing/gmock.gyp:gmock',
780        '../testing/gtest.gyp:gtest',
781      ],
782      'sources': [
783        'audio/test_audio_input_controller_factory.cc',
784        'audio/test_audio_input_controller_factory.h',
785        'base/mock_callback.cc',
786        'base/mock_callback.h',
787        'base/mock_data_source_host.cc',
788        'base/mock_data_source_host.h',
789        'base/mock_demuxer_host.cc',
790        'base/mock_demuxer_host.h',
791        'base/mock_filter_host.cc',
792        'base/mock_filter_host.h',
793        'base/mock_filters.cc',
794        'base/mock_filters.h',
795      ],
796    },
797    {
798      'target_name': 'scaler_bench',
799      'type': 'executable',
800      'dependencies': [
801        'media',
802        'yuv_convert',
803        '../base/base.gyp:base',
804        '../skia/skia.gyp:skia',
805      ],
806      'sources': [
807        'tools/scaler_bench/scaler_bench.cc',
808      ],
809    },
810    {
811      'target_name': 'qt_faststart',
812      'type': 'executable',
813      'sources': [
814        'tools/qt_faststart/qt_faststart.c'
815      ],
816    },
817    {
818      'target_name': 'seek_tester',
819      'type': 'executable',
820      'dependencies': [
821        'media',
822        '../base/base.gyp:base',
823      ],
824      'sources': [
825        'tools/seek_tester/seek_tester.cc',
826      ],
827    },
828  ],
829  'conditions': [
830    ['OS=="win"', {
831      'targets': [
832        {
833          'target_name': 'player_wtl',
834          'type': 'executable',
835          'dependencies': [
836            'media',
837            'yuv_convert',
838            '../base/base.gyp:base',
839            '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
840            '../ui/ui.gyp:ui',
841          ],
842          'include_dirs': [
843            '<(DEPTH)/third_party/wtl/include',
844          ],
845          'sources': [
846            'tools/player_wtl/list.h',
847            'tools/player_wtl/mainfrm.h',
848            'tools/player_wtl/movie.cc',
849            'tools/player_wtl/movie.h',
850            'tools/player_wtl/player_wtl.cc',
851            'tools/player_wtl/player_wtl.rc',
852            'tools/player_wtl/props.h',
853            'tools/player_wtl/seek.h',
854            'tools/player_wtl/resource.h',
855            'tools/player_wtl/view.h',
856          ],
857          'msvs_settings': {
858            'VCLinkerTool': {
859              'SubSystem': '2',         # Set /SUBSYSTEM:WINDOWS
860            },
861          },
862          'defines': [
863            '_CRT_SECURE_NO_WARNINGS=1',
864          ],
865        },
866      ],
867    }],
868    ['OS == "win" or toolkit_uses_gtk == 1', {
869      'targets': [
870        {
871          'target_name': 'shader_bench',
872          'type': 'executable',
873          'dependencies': [
874            'media',
875            'yuv_convert',
876            '../base/base.gyp:base',
877            '../ui/gl/gl.gyp:gl',
878          ],
879          'sources': [
880            'tools/shader_bench/shader_bench.cc',
881            'tools/shader_bench/cpu_color_painter.cc',
882            'tools/shader_bench/cpu_color_painter.h',
883            'tools/shader_bench/gpu_color_painter.cc',
884            'tools/shader_bench/gpu_color_painter.h',
885            'tools/shader_bench/gpu_painter.cc',
886            'tools/shader_bench/gpu_painter.h',
887            'tools/shader_bench/painter.cc',
888            'tools/shader_bench/painter.h',
889            'tools/shader_bench/window.cc',
890            'tools/shader_bench/window.h',
891          ],
892          'conditions': [
893            ['toolkit_uses_gtk == 1', {
894              'dependencies': [
895                '../build/linux/system.gyp:gtk',
896              ],
897              'sources': [
898                'tools/shader_bench/window_linux.cc',
899              ],
900            }],
901            ['OS=="win"', {
902              'dependencies': [
903                '../third_party/angle/src/build_angle.gyp:libEGL',
904                '../third_party/angle/src/build_angle.gyp:libGLESv2',
905              ],
906              'sources': [
907                'tools/shader_bench/window_win.cc',
908              ],
909            }],
910          ],
911        },
912      ],
913    }],
914    ['OS == "linux" and target_arch != "arm"', {
915      'targets': [
916        {
917          'target_name': 'tile_render_bench',
918          'type': 'executable',
919          'dependencies': [
920            '../base/base.gyp:base',
921            '../ui/gl/gl.gyp:gl',
922          ],
923          'libraries': [
924            '-lGL',
925            '-ldl',
926          ],
927          'sources': [
928            'tools/tile_render_bench/tile_render_bench.cc',
929          ],
930        },
931      ],
932    }],
933    ['os_posix == 1 and OS != "mac" and OS != "android"', {
934      'targets': [
935        {
936          'target_name': 'player_x11',
937          'type': 'executable',
938          'dependencies': [
939            'media',
940            'yuv_convert',
941            '../base/base.gyp:base',
942            '../ui/gl/gl.gyp:gl',
943          ],
944          'link_settings': {
945            'libraries': [
946              '-ldl',
947              '-lX11',
948              '-lXrender',
949              '-lXext',
950            ],
951          },
952          'sources': [
953            'tools/player_x11/data_source_logger.cc',
954            'tools/player_x11/data_source_logger.h',
955            'tools/player_x11/gl_video_renderer.cc',
956            'tools/player_x11/gl_video_renderer.h',
957            'tools/player_x11/player_x11.cc',
958            'tools/player_x11/x11_video_renderer.cc',
959            'tools/player_x11/x11_video_renderer.h',
960          ],
961        },
962      ],
963    }],
964    ['OS == "android"', {
965      'targets': [
966        {
967          'target_name': 'player_android',
968          'type': 'static_library',
969          'sources': [
970            'base/android/media_player_bridge.cc',
971            'base/android/media_player_bridge.h',
972          ],
973          'dependencies': [
974            '../base/base.gyp:base',
975          ],
976          'include_dirs': [
977            '<(SHARED_INTERMEDIATE_DIR)/media',
978          ],
979          'actions': [
980            {
981              'action_name': 'generate-jni-headers',
982              'inputs': [
983                '../base/android/jni_generator/jni_generator.py',
984                'base/android/java/src/org/chromium/media/MediaPlayerListener.java',
985              ],
986              'outputs': [
987                '<(SHARED_INTERMEDIATE_DIR)/media/jni/media_player_listener_jni.h',
988              ],
989              'action': [
990                'python',
991                '<(DEPTH)/base/android/jni_generator/jni_generator.py',
992                '-o',
993                '<@(_inputs)',
994                '<@(_outputs)',
995              ],
996            },
997          ],
998        },
999        {
1000          'target_name': 'media_java',
1001          'type': 'none',
1002          'dependencies': [ '../base/base.gyp:base_java' ],
1003          'variables': {
1004            'package_name': 'media',
1005            'java_in_dir': 'base/android/java',
1006          },
1007          'includes': [ '../build/java.gypi' ],
1008        },
1009
1010      ],
1011    }, { # OS != "android"'
1012      # Android does not use ffmpeg, so disable the targets which require it.
1013      'targets': [
1014        {
1015          'target_name': 'ffmpeg_unittests',
1016          'type': 'executable',
1017          'dependencies': [
1018            'media',
1019            'media_test_support',
1020            '../base/base.gyp:base',
1021            '../base/base.gyp:base_i18n',
1022            '../base/base.gyp:test_support_base',
1023            '../base/base.gyp:test_support_perf',
1024            '../testing/gtest.gyp:gtest',
1025            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1026          ],
1027          'sources': [
1028            'ffmpeg/ffmpeg_unittest.cc',
1029          ],
1030          'conditions': [
1031            ['toolkit_uses_gtk == 1', {
1032              'dependencies': [
1033                # Needed for the following #include chain:
1034                #   base/run_all_unittests.cc
1035                #   ../base/test_suite.h
1036                #   gtk/gtk.h
1037                '../build/linux/system.gyp:gtk',
1038              ],
1039              'conditions': [
1040                ['linux_use_tcmalloc==1', {
1041                  'dependencies': [
1042                    '../base/allocator/allocator.gyp:allocator',
1043                  ],
1044                }],
1045              ],
1046            }],
1047          ],
1048        },
1049        {
1050          'target_name': 'ffmpeg_regression_tests',
1051          'type': 'executable',
1052          'dependencies': [
1053            'media',
1054            'media_test_support',
1055            '../base/base.gyp:test_support_base',
1056            '../testing/gmock.gyp:gmock',
1057            '../testing/gtest.gyp:gtest',
1058            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1059          ],
1060          'sources': [
1061            'base/test_data_util.cc',
1062            'base/run_all_unittests.cc',
1063            'ffmpeg/ffmpeg_regression_tests.cc',
1064            'filters/pipeline_integration_test_base.cc',
1065          ],
1066          'conditions': [
1067            ['os_posix==1 and OS!="mac"', {
1068              'conditions': [
1069                ['linux_use_tcmalloc==1', {
1070                  'dependencies': [
1071                    '../base/allocator/allocator.gyp:allocator',
1072                  ],
1073                }],
1074              ],
1075            }],
1076          ],
1077        },
1078        {
1079          'target_name': 'ffmpeg_tests',
1080          'type': 'executable',
1081          'dependencies': [
1082            'media',
1083            '../base/base.gyp:base',
1084            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1085          ],
1086          'sources': [
1087            'test/ffmpeg_tests/ffmpeg_tests.cc',
1088          ],
1089        },
1090        {
1091          'target_name': 'media_bench',
1092          'type': 'executable',
1093          'dependencies': [
1094            'media',
1095            '../base/base.gyp:base',
1096            '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
1097          ],
1098          'sources': [
1099            'tools/media_bench/media_bench.cc',
1100          ],
1101        },
1102      ],
1103    }]
1104  ],
1105}
1106