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")
12 visibility = [ "//media/*" ]
14 "audio_block_fifo.cc",
18 "audio_buffer_queue.cc",
19 "audio_buffer_queue.h",
20 "audio_capturer_source.h",
21 "audio_buffer_converter.cc",
22 "audio_buffer_converter.h",
27 "audio_decoder_config.cc",
28 "audio_decoder_config.h",
29 "audio_discard_helper.cc",
30 "audio_discard_helper.h",
33 "audio_hardware_config.cc",
34 "audio_hardware_config.h",
41 "audio_renderer_mixer.cc",
42 "audio_renderer_mixer.h",
43 "audio_renderer_mixer_input.cc",
44 "audio_renderer_mixer_input.h",
45 "audio_renderer_sink.h",
48 "audio_timestamp_helper.cc",
49 "audio_timestamp_helper.h",
50 "bind_to_current_loop.h",
60 "cdm_callback_promise.cc",
61 "cdm_callback_promise.h",
68 "channel_mixing_matrix.cc",
69 "channel_mixing_matrix.h",
77 "decoder_buffer_queue.cc",
78 "decoder_buffer_queue.h",
87 "demuxer_stream_provider.cc",
88 "demuxer_stream_provider.h",
103 "multi_channel_resampler.cc",
104 "multi_channel_resampler.h",
116 "scoped_histogram_timer.h",
117 "seekable_buffer.cc",
121 "simd/convert_rgb_to_yuv.h",
122 "simd/convert_rgb_to_yuv_c.cc",
123 "simd/convert_yuv_to_rgb.h",
124 "simd/convert_yuv_to_rgb_c.cc",
126 "simd/filter_yuv_c.cc",
127 "simd/yuv_to_rgb_table.cc",
128 "simd/yuv_to_rgb_table.h",
133 "stream_parser_buffer.cc",
134 "stream_parser_buffer.h",
142 "text_track_config.cc",
143 "text_track_config.h",
144 "time_delta_interpolator.cc",
145 "time_delta_interpolator.h",
147 "user_input_monitor.cc",
148 "user_input_monitor.h",
151 "video_decoder_config.cc",
152 "video_decoder_config.h",
155 "video_frame_pool.cc",
156 "video_frame_pool.h",
162 "wall_clock_time_source.cc",
163 "wall_clock_time_source.h",
170 configs += [ "//media:media_config" ]
172 if (media_use_ffmpeg) {
174 "audio_video_metadata_extractor.cc",
175 "audio_video_metadata_extractor.h",
176 "container_names.cc",
178 "media_file_checker.cc",
179 "media_file_checker.h",
181 deps += [ "//third_party/ffmpeg" ]
184 if (enable_browser_cdms) {
188 "browser_cdm_factory.h",
193 sources += [ "media_stub.cc" ]
195 sources += [ "media_win.cc" ]
196 } else if (is_posix) {
197 sources += [ "media_posix.cc" ]
200 if (is_linux && use_x11) {
202 "//build/config/linux:x11",
203 "//build/config/linux:xext",
204 # TODO(ajwong): Why does xent get a separate thing in //build/config/linux:BUILD.gn
205 # "//build/config/linux:xdamage",
206 # "//build/config/linux:xfixes",
207 # "//build/config/linux:xtst",
209 sources += [ "user_input_monitor_linux.cc" ]
211 "//ui/events:events_base",
215 sources += [ "user_input_monitor_mac.cc" ]
217 sources += [ "user_input_monitor_win.cc" ]
219 defines += [ "DISABLE_USER_INPUT_MONITOR" ]
222 if (cpu_arch == "x86" || cpu_arch == "x64") {
223 sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
230 if (is_linux || is_win) {
232 "keyboard_event_counter.cc",
233 "keyboard_event_counter.h",
238 # Minimal media component for media/cast on iOS.
239 config("base_for_cast_ios_dependent_config") {
240 defines = [ "MEDIA_FOR_CAST_IOS" ]
243 source_set("base_for_cast_ios") {
248 configs += [ "//media:media_config" ]
249 all_dependent_configs = [ ":base_for_cast_ios_dependent_config" ]
252 source_set("test_support") {
255 "fake_audio_render_callback.cc",
256 "fake_audio_render_callback.h",
257 "fake_audio_renderer_sink.cc",
258 "fake_audio_renderer_sink.h",
259 "fake_text_track_stream.cc",
260 "fake_text_track_stream.h",
261 "gmock_callback_support.h",
262 "mock_audio_renderer_sink.cc",
263 "mock_audio_renderer_sink.h",
264 "mock_demuxer_host.cc",
265 "mock_demuxer_host.h",
273 configs += [ "//media:media_config" ]
274 deps = [ "//testing/gmock" ]
277 source_set("unittests") {
280 "audio_block_fifo_unittest.cc",
281 "audio_buffer_converter_unittest.cc",
282 "audio_buffer_unittest.cc",
283 "audio_buffer_queue_unittest.cc",
284 "audio_bus_unittest.cc",
285 "audio_converter_unittest.cc",
286 "audio_discard_helper_unittest.cc",
287 "audio_fifo_unittest.cc",
288 "audio_hardware_config_unittest.cc",
289 "audio_hash_unittest.cc",
290 "audio_pull_fifo_unittest.cc",
291 "audio_renderer_mixer_input_unittest.cc",
292 "audio_renderer_mixer_unittest.cc",
293 "audio_splicer_unittest.cc",
294 "audio_timestamp_helper_unittest.cc",
295 "bind_to_current_loop_unittest.cc",
296 "bit_reader_unittest.cc",
298 "callback_holder_unittest.cc",
299 "channel_mixer_unittest.cc",
300 "channel_mixing_matrix_unittest.cc",
301 "data_buffer_unittest.cc",
302 "decoder_buffer_queue_unittest.cc",
303 "decoder_buffer_unittest.cc",
305 "gmock_callback_support_unittest.cc",
306 "multi_channel_resampler_unittest.cc",
307 "pipeline_unittest.cc",
308 "ranges_unittest.cc",
309 "run_all_unittests.cc",
310 "scoped_histogram_timer_unittest.cc",
311 "serial_runner_unittest.cc",
312 "seekable_buffer_unittest.cc",
313 "sinc_resampler_unittest.cc",
314 "stream_parser_unittest.cc",
315 "text_ranges_unittest.cc",
316 "text_renderer_unittest.cc",
317 "user_input_monitor_unittest.cc",
318 "vector_math_testing.h",
319 "vector_math_unittest.cc",
320 "video_frame_unittest.cc",
321 "video_frame_pool_unittest.cc",
322 "video_util_unittest.cc",
323 "wall_clock_time_source_unittest.cc",
324 "yuv_convert_unittest.cc",
326 configs += [ "//media:media_config" ]
335 if (media_use_ffmpeg) {
337 "audio_video_metadata_extractor_unittest.cc",
338 "media_file_checker_unittest.cc",
344 "container_names_unittest.cc",
347 deps += [ "//ui/gl" ]
350 if (cpu_arch == "x86" || cpu_arch == "x64") {
351 sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ]
355 source_set("perftests") {
358 "audio_bus_perftest.cc",
359 "audio_converter_perftest.cc",
360 "run_all_perftests.cc",
361 "sinc_resampler_perftest.cc",
362 "vector_math_perftest.cc",
363 "yuv_convert_perftest.cc",
365 configs += [ "//media:media_config" ]
373 if (media_use_ffmpeg) {
375 "demuxer_perftest.cc",
384 if (cpu_arch == "x86" || cpu_arch == "x64") {
385 source_set("media_sse2") {
387 "simd/convert_rgb_to_yuv_sse2.cc",
388 "simd/convert_rgb_to_yuv_ssse3.cc",
389 "simd/filter_yuv_sse2.cc",
391 configs += [ "//media:media_config" ]
393 cflags = [ "-msse2" ]
397 import("//third_party/yasm/yasm_assemble.gni")
398 yasm_assemble("media_yasm") {
400 "simd/convert_rgb_to_yuv_ssse3.asm",
401 "simd/convert_yuv_to_rgb_sse.asm",
402 "simd/convert_yuva_to_argb_mmx.asm",
403 "simd/empty_register_state_mmx.asm",
404 "simd/linear_scale_yuv_to_rgb_mmx.asm",
405 "simd/linear_scale_yuv_to_rgb_sse.asm",
406 "simd/scale_yuv_to_rgb_mmx.asm",
407 "simd/scale_yuv_to_rgb_sse.asm",
410 # TODO(ajwong): Only export if shared_library build...
414 # In addition to the same path as source asm, let yasm %include
415 # search path be relative to src/ per Chromium policy.
416 "-I", rebase_path("..", root_build_dir),
420 "//third_party/x86inc/x86inc.asm",
421 "simd/convert_rgb_to_yuv_ssse3.inc",
422 "simd/convert_yuv_to_rgb_mmx.inc",
423 "simd/convert_yuva_to_argb_mmx.inc",
424 "simd/linear_scale_yuv_to_rgb_mmx.inc",
425 "simd/media_export.asm",
426 "simd/scale_yuv_to_rgb_mmx.inc",
429 if (cpu_arch == "x86") {
430 yasm_flags += [ "-DARCH_X86_32" ]
431 } else if (cpu_arch == "x64") {
432 yasm_flags += [ "-DARCH_X86_64" ]
434 "simd/linear_scale_yuv_to_rgb_mmx_x64.asm",
435 "simd/scale_yuv_to_rgb_sse2_x64.asm",
439 if (is_mac || is_ios) {
446 yasm_flags += [ "-DELF" ]
447 if (cpu_arch == "x64") {
448 # TODO(ajwong): Why isn't this true in mac?
449 yasm_flags += [ "-DPIC" ]