Manual fixups in drive code for scoped_refptr operator T* removal.
[chromium-blink-merge.git] / media / base / BUILD.gn
blob1fdc8bf7078674dad0fee11cc673274587121bf7
1 # Copyright 2014 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.
5 import("//build/config/android/config.gni")
6 import("//build/config/arm.gni")
7 import("//build/config/ui.gni")
8 import("//build/config/linux/pkg_config.gni")
9 import("//media/media_options.gni")
11 source_set("base") {
12   sources = [
13     "audio_block_fifo.cc",
14     "audio_block_fifo.h",
15     "audio_buffer.cc",
16     "audio_buffer.h",
17     "audio_buffer_queue.cc",
18     "audio_buffer_queue.h",
19     "audio_capturer_source.h",
20     "audio_buffer_converter.cc",
21     "audio_buffer_converter.h",
22     "audio_converter.cc",
23     "audio_converter.h",
24     "audio_decoder.cc",
25     "audio_decoder.h",
26     "audio_decoder_config.cc",
27     "audio_decoder_config.h",
28     "audio_discard_helper.cc",
29     "audio_discard_helper.h",
30     "audio_fifo.cc",
31     "audio_fifo.h",
32     "audio_hardware_config.cc",
33     "audio_hardware_config.h",
34     "audio_hash.cc",
35     "audio_hash.h",
36     "audio_pull_fifo.cc",
37     "audio_pull_fifo.h",
38     "audio_renderer.cc",
39     "audio_renderer.h",
40     "audio_renderer_mixer.cc",
41     "audio_renderer_mixer.h",
42     "audio_renderer_mixer_input.cc",
43     "audio_renderer_mixer_input.h",
44     "audio_renderer_sink.h",
45     "audio_splicer.cc",
46     "audio_splicer.h",
47     "audio_timestamp_helper.cc",
48     "audio_timestamp_helper.h",
49     "bind_to_current_loop.h",
50     "bit_reader.cc",
51     "bit_reader.h",
52     "bit_reader_core.cc",
53     "bit_reader_core.h",
54     "bitstream_buffer.h",
55     "buffering_state.h",
56     "buffers.h",
57     "byte_queue.cc",
58     "byte_queue.h",
59     "cdm_promise.cc",
60     "cdm_promise.h",
61     "channel_mixer.cc",
62     "channel_mixer.h",
63     "clock.h",
64     "data_buffer.cc",
65     "data_buffer.h",
66     "data_source.cc",
67     "data_source.h",
68     "decoder_buffer.cc",
69     "decoder_buffer.h",
70     "decoder_buffer_queue.cc",
71     "decoder_buffer_queue.h",
72     "decrypt_config.cc",
73     "decrypt_config.h",
74     "decryptor.cc",
75     "decryptor.h",
76     "demuxer.cc",
77     "demuxer.h",
78     "demuxer_stream.cc",
79     "demuxer_stream.h",
80     "djb2.cc",
81     "djb2.h",
82     "media.cc",
83     "media.h",
84     "media_keys.cc",
85     "media_keys.h",
86     "media_log.cc",
87     "media_log.h",
88     "media_log_event.h",
89     "media_switches.cc",
90     "media_switches.h",
91     "multi_channel_resampler.cc",
92     "multi_channel_resampler.h",
93     "pipeline.cc",
94     "pipeline.h",
95     "pipeline_status.h",
96     "player_tracker.cc",
97     "player_tracker.h",
98     "ranges.cc",
99     "ranges.h",
100     "renderer.cc",
101     "renderer.h",
102     "sample_format.cc",
103     "sample_format.h",
104     "scoped_histogram_timer.h",
105     "seekable_buffer.cc",
106     "seekable_buffer.h",
107     "serial_runner.cc",
108     "serial_runner.h",
109     "simd/convert_rgb_to_yuv.h",
110     "simd/convert_rgb_to_yuv_c.cc",
111     "simd/convert_yuv_to_rgb.h",
112     "simd/convert_yuv_to_rgb_c.cc",
113     "simd/filter_yuv.h",
114     "simd/filter_yuv_c.cc",
115     "simd/yuv_to_rgb_table.cc",
116     "simd/yuv_to_rgb_table.h",
117     "sinc_resampler.cc",
118     "sinc_resampler.h",
119     "stream_parser.cc",
120     "stream_parser.h",
121     "stream_parser_buffer.cc",
122     "stream_parser_buffer.h",
123     "text_cue.cc",
124     "text_cue.h",
125     "text_ranges.cc",
126     "text_ranges.h",
127     "text_renderer.cc",
128     "text_renderer.h",
129     "text_track.h",
130     "text_track_config.cc",
131     "text_track_config.h",
132     "time_delta_interpolator.cc",
133     "time_delta_interpolator.h",
134     "time_source.h",
135     "user_input_monitor.cc",
136     "user_input_monitor.h",
137     "video_decoder.cc",
138     "video_decoder.h",
139     "video_decoder_config.cc",
140     "video_decoder_config.h",
141     "video_frame.cc",
142     "video_frame.h",
143     "video_frame_pool.cc",
144     "video_frame_pool.h",
145     "video_renderer.cc",
146     "video_renderer.h",
147     "video_rotation.h",
148     "video_util.cc",
149     "video_util.h",
150     "wall_clock_time_source.cc",
151     "wall_clock_time_source.h",
152     "yuv_convert.cc",
153     "yuv_convert.h",
154   ]
155   defines = []
156   deps = [ "//skia" ]
157   libs = []
158   configs += [ "//media:media_config" ]
160   if (media_use_ffmpeg) {
161     sources += [
162       "audio_video_metadata_extractor.cc",
163       "audio_video_metadata_extractor.h",
164       "container_names.cc",
165       "container_names.h",
166       "media_file_checker.cc",
167       "media_file_checker.h",
168     ]
169     deps += [ "//third_party/ffmpeg" ]
170   }
172   if (enable_browser_cdms) {
173     sources += [
174       "browser_cdm.cc",
175       "browser_cdm.h",
176       "browser_cdm_factory.h",
177     ]
178   }
180   if (is_android) {
181     sources += [ "media_stub.cc" ]
182   } else if (is_win) {
183     sources += [ "media_win.cc" ]
184   } else if (is_posix) {
185     sources += [ "media_posix.cc" ]
186   }
188   if (is_linux && use_x11) {
189     configs += [
190       "//build/config/linux:x11",
191       "//build/config/linux:xext",
192   # TODO(ajwong): Why does xent get a separate thing in //build/config/linux:BUILD.gn
193   #         "//build/config/linux:xdamage",
194   #         "//build/config/linux:xfixes",
195   #         "//build/config/linux:xtst",
196     ]
197     sources += [ "user_input_monitor_linux.cc" ]
198   } else if (is_mac) {
199     sources += [ "user_input_monitor_mac.cc" ]
200   } else if (is_win) {
201     sources += [ "user_input_monitor_win.cc" ]
202   } else {
203     defines += [ "DISABLE_USER_INPUT_MONITOR" ]
204   }
206   if (cpu_arch == "x86" || cpu_arch == "x64") {
207     sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
208     deps += [
209       ":media_yasm",
210       ":media_sse2",
211     ]
212   }
214   if (is_linux || is_win) {
215     sources += [
216       "keyboard_event_counter.cc",
217       "keyboard_event_counter.h",
218     ]
219   }
222 source_set("test_support") {
223   sources = [
224     "fake_audio_render_callback.cc",
225     "fake_audio_render_callback.h",
226     "fake_audio_renderer_sink.cc",
227     "fake_audio_renderer_sink.h",
228     "fake_text_track_stream.cc",
229     "fake_text_track_stream.h",
230     "gmock_callback_support.h",
231     "mock_audio_renderer_sink.cc",
232     "mock_audio_renderer_sink.h",
233     "mock_demuxer_host.cc",
234     "mock_demuxer_host.h",
235     "mock_filters.cc",
236     "mock_filters.h",
237     "test_data_util.cc",
238     "test_data_util.h",
239     "test_helpers.cc",
240     "test_helpers.h",
241   ]
242   configs += [ "//media:media_config" ]
243   deps = [ "//testing/gmock" ]
246 source_set("unittests") {
247   sources = [
248     "audio_block_fifo_unittest.cc",
249     "audio_buffer_converter_unittest.cc",
250     "audio_buffer_unittest.cc",
251     "audio_buffer_queue_unittest.cc",
252     "audio_bus_unittest.cc",
253     "audio_converter_unittest.cc",
254     "audio_discard_helper_unittest.cc",
255     "audio_fifo_unittest.cc",
256     "audio_hardware_config_unittest.cc",
257     "audio_hash_unittest.cc",
258     "audio_pull_fifo_unittest.cc",
259     "audio_renderer_mixer_input_unittest.cc",
260     "audio_renderer_mixer_unittest.cc",
261     "audio_splicer_unittest.cc",
262     "audio_timestamp_helper_unittest.cc",
263     "bind_to_current_loop_unittest.cc",
264     "bit_reader_unittest.cc",
265     "callback_holder.h",
266     "callback_holder_unittest.cc",
267     "channel_mixer_unittest.cc",
268     "data_buffer_unittest.cc",
269     "decoder_buffer_queue_unittest.cc",
270     "decoder_buffer_unittest.cc",
271     "djb2_unittest.cc",
272     "gmock_callback_support_unittest.cc",
273     "multi_channel_resampler_unittest.cc",
274     "pipeline_unittest.cc",
275     "ranges_unittest.cc",
276     "run_all_unittests.cc",
277     "scoped_histogram_timer_unittest.cc",
278     "serial_runner_unittest.cc",
279     "seekable_buffer_unittest.cc",
280     "sinc_resampler_unittest.cc",
281     "stream_parser_unittest.cc",
282     "text_ranges_unittest.cc",
283     "text_renderer_unittest.cc",
284     "user_input_monitor_unittest.cc",
285     "vector_math_testing.h",
286     "vector_math_unittest.cc",
287     "video_frame_unittest.cc",
288     "video_frame_pool_unittest.cc",
289     "video_util_unittest.cc",
290     "wall_clock_time_source_unittest.cc",
291     "yuv_convert_unittest.cc",
292   ]
293   configs += [ "//media:media_config" ]
294   deps = [
295     ":base",
296     ":test_support",
297     "//skia",
298     "//testing/gmock",
299     "//testing/gtest",
300   ]
302   if (media_use_ffmpeg) {
303     sources += [
304       "audio_video_metadata_extractor_unittest.cc",
305       "media_file_checker_unittest.cc",
306     ]
307   }
309   if (!is_android) {
310     sources += [
311       "container_names_unittest.cc",
312     ]
313   } else {
314     deps += [ "//ui/gl" ]
315   }
317   if (cpu_arch == "x86" || cpu_arch == "x64") {
318     sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ]
319   }
322 source_set("perftests") {
323   sources = [
324     "audio_bus_perftest.cc",
325     "audio_converter_perftest.cc",
326     "run_all_perftests.cc",
327     "sinc_resampler_perftest.cc",
328     "vector_math_perftest.cc",
329     "yuv_convert_perftest.cc",
330   ]
331   configs += [ "//media:media_config" ]
332   deps = [
333     ":base",
334     ":test_support",
335     "//testing/gmock",
336     "//testing/gtest",
337   ]
339   if (media_use_ffmpeg) {
340     sources += [
341       "demuxer_perftest.cc",
342     ]
343   }
345   if (is_android) {
346     deps += [ "//ui/gl"]
347   }
350 if (cpu_arch == "x86" || cpu_arch == "x64") {
351   source_set("media_sse2") {
352     sources = [
353       "simd/convert_rgb_to_yuv_sse2.cc",
354       "simd/convert_rgb_to_yuv_ssse3.cc",
355       "simd/filter_yuv_sse2.cc",
356     ]
357     configs += [ "//media:media_config" ]
358     if (!is_win) {
359       cflags = [ "-msse2" ]
360     }
361   }
363   import("//third_party/yasm/yasm_assemble.gni")
364   yasm_assemble("media_yasm") {
365     sources = [
366       "simd/convert_rgb_to_yuv_ssse3.asm",
367       "simd/convert_yuv_to_rgb_sse.asm",
368       "simd/convert_yuva_to_argb_mmx.asm",
369       "simd/empty_register_state_mmx.asm",
370       "simd/linear_scale_yuv_to_rgb_mmx.asm",
371       "simd/linear_scale_yuv_to_rgb_sse.asm",
372       "simd/scale_yuv_to_rgb_mmx.asm",
373       "simd/scale_yuv_to_rgb_sse.asm",
374     ]
376     # TODO(ajwong): Only export if shared_library build...
377     yasm_flags = [
378       "-DCHROMIUM",
379       "-DEXPORT_SYMBOLS",
380       # In addition to the same path as source asm, let yasm %include
381       # search path be relative to src/ per Chromium policy.
382       "-I", rebase_path("..", root_build_dir),
383     ]
385     inputs = [
386       "//third_party/x86inc/x86inc.asm",
387       "simd/convert_rgb_to_yuv_ssse3.inc",
388       "simd/convert_yuv_to_rgb_mmx.inc",
389       "simd/convert_yuva_to_argb_mmx.inc",
390       "simd/linear_scale_yuv_to_rgb_mmx.inc",
391       "simd/media_export.asm",
392       "simd/scale_yuv_to_rgb_mmx.inc",
393     ]
395     if (cpu_arch == "x86") {
396       yasm_flags += [ "-DARCH_X86_32" ]
397     } else if (cpu_arch == "x64") {
398       yasm_flags += [ "-DARCH_X86_64" ]
399       sources += [
400         "simd/linear_scale_yuv_to_rgb_mmx_x64.asm",
401         "simd/scale_yuv_to_rgb_sse2_x64.asm",
402       ]
403     }
405     if (is_mac || is_ios) {
406       yasm_flags += [
407         "-DPREFIX",
408         "-DMACHO",
409       ]
410     } else {
411       if (is_posix) {
412         yasm_flags += [ "-DELF" ]
413         if (cpu_arch == "x64") {
414         # TODO(ajwong): Why isn't this true in mac?
415           yasm_flags += [ "-DPIC" ]
416         }
417       }
418     }
419   }