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")
13 "audio_block_fifo.cc",
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",
26 "audio_decoder_config.cc",
27 "audio_decoder_config.h",
28 "audio_discard_helper.cc",
29 "audio_discard_helper.h",
32 "audio_hardware_config.cc",
33 "audio_hardware_config.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",
47 "audio_timestamp_helper.cc",
48 "audio_timestamp_helper.h",
49 "bind_to_current_loop.h",
70 "decoder_buffer_queue.cc",
71 "decoder_buffer_queue.h",
91 "multi_channel_resampler.cc",
92 "multi_channel_resampler.h",
104 "scoped_histogram_timer.h",
105 "seekable_buffer.cc",
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",
114 "simd/filter_yuv_c.cc",
115 "simd/yuv_to_rgb_table.cc",
116 "simd/yuv_to_rgb_table.h",
121 "stream_parser_buffer.cc",
122 "stream_parser_buffer.h",
130 "text_track_config.cc",
131 "text_track_config.h",
132 "time_delta_interpolator.cc",
133 "time_delta_interpolator.h",
135 "user_input_monitor.cc",
136 "user_input_monitor.h",
139 "video_decoder_config.cc",
140 "video_decoder_config.h",
143 "video_frame_pool.cc",
144 "video_frame_pool.h",
150 "wall_clock_time_source.cc",
151 "wall_clock_time_source.h",
158 configs += [ "//media:media_config" ]
160 if (media_use_ffmpeg) {
162 "audio_video_metadata_extractor.cc",
163 "audio_video_metadata_extractor.h",
164 "container_names.cc",
166 "media_file_checker.cc",
167 "media_file_checker.h",
169 deps += [ "//third_party/ffmpeg" ]
172 if (enable_browser_cdms) {
176 "browser_cdm_factory.h",
181 sources += [ "media_stub.cc" ]
183 sources += [ "media_win.cc" ]
184 } else if (is_posix) {
185 sources += [ "media_posix.cc" ]
188 if (is_linux && use_x11) {
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",
197 sources += [ "user_input_monitor_linux.cc" ]
199 sources += [ "user_input_monitor_mac.cc" ]
201 sources += [ "user_input_monitor_win.cc" ]
203 defines += [ "DISABLE_USER_INPUT_MONITOR" ]
206 if (cpu_arch == "x86" || cpu_arch == "x64") {
207 sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
214 if (is_linux || is_win) {
216 "keyboard_event_counter.cc",
217 "keyboard_event_counter.h",
222 source_set("test_support") {
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",
242 configs += [ "//media:media_config" ]
243 deps = [ "//testing/gmock" ]
246 source_set("unittests") {
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",
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",
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",
293 configs += [ "//media:media_config" ]
302 if (media_use_ffmpeg) {
304 "audio_video_metadata_extractor_unittest.cc",
305 "media_file_checker_unittest.cc",
311 "container_names_unittest.cc",
314 deps += [ "//ui/gl" ]
317 if (cpu_arch == "x86" || cpu_arch == "x64") {
318 sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ]
322 source_set("perftests") {
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",
331 configs += [ "//media:media_config" ]
339 if (media_use_ffmpeg) {
341 "demuxer_perftest.cc",
350 if (cpu_arch == "x86" || cpu_arch == "x64") {
351 source_set("media_sse2") {
353 "simd/convert_rgb_to_yuv_sse2.cc",
354 "simd/convert_rgb_to_yuv_ssse3.cc",
355 "simd/filter_yuv_sse2.cc",
357 configs += [ "//media:media_config" ]
359 cflags = [ "-msse2" ]
363 import("//third_party/yasm/yasm_assemble.gni")
364 yasm_assemble("media_yasm") {
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",
376 # TODO(ajwong): Only export if shared_library build...
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),
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",
395 if (cpu_arch == "x86") {
396 yasm_flags += [ "-DARCH_X86_32" ]
397 } else if (cpu_arch == "x64") {
398 yasm_flags += [ "-DARCH_X86_64" ]
400 "simd/linear_scale_yuv_to_rgb_mmx_x64.asm",
401 "simd/scale_yuv_to_rgb_sse2_x64.asm",
405 if (is_mac || is_ios) {
412 yasm_flags += [ "-DELF" ]
413 if (cpu_arch == "x64") {
414 # TODO(ajwong): Why isn't this true in mac?
415 yasm_flags += [ "-DPIC" ]