BUILD.gn revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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. 4 5import("//build/config/android/config.gni") 6import("//build/config/arm.gni") 7import("//build/config/ui.gni") 8import("//build/config/linux/pkg_config.gni") 9import("//media/media_options.gni") 10 11source_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 "filter_collection.cc", 83 "filter_collection.h", 84 "media.cc", 85 "media.h", 86 "media_keys.cc", 87 "media_keys.h", 88 "media_log.cc", 89 "media_log.h", 90 "media_log_event.h", 91 "media_switches.cc", 92 "media_switches.h", 93 "multi_channel_resampler.cc", 94 "multi_channel_resampler.h", 95 "pipeline.cc", 96 "pipeline.h", 97 "pipeline_status.h", 98 "player_tracker.cc", 99 "player_tracker.h", 100 "ranges.cc", 101 "ranges.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" ] 159 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 } 171 172 if (enable_browser_cdms) { 173 sources += [ 174 "browser_cdm.cc", 175 "browser_cdm.h", 176 "browser_cdm_factory.h", 177 ] 178 } 179 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 } 187 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 } 205 206 if (cpu_arch == "x86" || cpu_arch == "x64") { 207 sources += [ "simd/convert_yuv_to_rgb_x86.cc" ] 208 deps += [ 209 ":media_yasm", 210 ":media_mmx", 211 ":media_sse2", 212 ] 213 } 214 215 if (is_linux || is_win) { 216 sources += [ 217 "keyboard_event_counter.cc", 218 "keyboard_event_counter.h", 219 ] 220 } 221} 222 223source_set("test_support") { 224 sources = [ 225 "fake_audio_render_callback.cc", 226 "fake_audio_render_callback.h", 227 "fake_audio_renderer_sink.cc", 228 "fake_audio_renderer_sink.h", 229 "fake_text_track_stream.cc", 230 "fake_text_track_stream.h", 231 "gmock_callback_support.h", 232 "mock_audio_renderer_sink.cc", 233 "mock_audio_renderer_sink.h", 234 "mock_demuxer_host.cc", 235 "mock_demuxer_host.h", 236 "mock_filters.cc", 237 "mock_filters.h", 238 "test_data_util.cc", 239 "test_data_util.h", 240 "test_helpers.cc", 241 "test_helpers.h", 242 ] 243 configs += [ "//media:media_config" ] 244 deps = [ "//testing/gmock" ] 245} 246 247source_set("unittests") { 248 sources = [ 249 "audio_block_fifo_unittest.cc", 250 "audio_buffer_converter_unittest.cc", 251 "audio_buffer_unittest.cc", 252 "audio_buffer_queue_unittest.cc", 253 "audio_bus_unittest.cc", 254 "audio_converter_unittest.cc", 255 "audio_discard_helper_unittest.cc", 256 "audio_fifo_unittest.cc", 257 "audio_hardware_config_unittest.cc", 258 "audio_hash_unittest.cc", 259 "audio_pull_fifo_unittest.cc", 260 "audio_renderer_mixer_input_unittest.cc", 261 "audio_renderer_mixer_unittest.cc", 262 "audio_splicer_unittest.cc", 263 "audio_timestamp_helper_unittest.cc", 264 "bind_to_current_loop_unittest.cc", 265 "bit_reader_unittest.cc", 266 "callback_holder.h", 267 "callback_holder_unittest.cc", 268 "channel_mixer_unittest.cc", 269 "data_buffer_unittest.cc", 270 "decoder_buffer_queue_unittest.cc", 271 "decoder_buffer_unittest.cc", 272 "djb2_unittest.cc", 273 "gmock_callback_support_unittest.cc", 274 "multi_channel_resampler_unittest.cc", 275 "pipeline_unittest.cc", 276 "ranges_unittest.cc", 277 "run_all_unittests.cc", 278 "scoped_histogram_timer_unittest.cc", 279 "serial_runner_unittest.cc", 280 "seekable_buffer_unittest.cc", 281 "sinc_resampler_unittest.cc", 282 "stream_parser_unittest.cc", 283 "text_ranges_unittest.cc", 284 "text_renderer_unittest.cc", 285 "user_input_monitor_unittest.cc", 286 "vector_math_testing.h", 287 "vector_math_unittest.cc", 288 "video_frame_unittest.cc", 289 "video_frame_pool_unittest.cc", 290 "video_util_unittest.cc", 291 "wall_clock_time_source_unittest.cc", 292 "yuv_convert_unittest.cc", 293 ] 294 configs += [ "//media:media_config" ] 295 deps = [ 296 ":base", 297 ":test_support", 298 "//skia", 299 "//testing/gmock", 300 "//testing/gtest", 301 ] 302 303 if (media_use_ffmpeg) { 304 sources += [ 305 "audio_video_metadata_extractor_unittest.cc", 306 "media_file_checker_unittest.cc", 307 ] 308 } 309 310 if (!is_android) { 311 sources += [ 312 "container_names_unittest.cc", 313 ] 314 } else { 315 deps += [ "//ui/gl" ] 316 } 317 318 if (cpu_arch == "x86" || cpu_arch == "x64") { 319 sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ] 320 } 321} 322 323source_set("perftests") { 324 sources = [ 325 "audio_bus_perftest.cc", 326 "audio_converter_perftest.cc", 327 "run_all_perftests.cc", 328 "sinc_resampler_perftest.cc", 329 "vector_math_perftest.cc", 330 "yuv_convert_perftest.cc", 331 ] 332 configs += [ "//media:media_config" ] 333 deps = [ 334 ":base", 335 ":test_support", 336 "//testing/gmock", 337 "//testing/gtest", 338 ] 339 340 if (media_use_ffmpeg) { 341 sources += [ 342 "demuxer_perftest.cc", 343 ] 344 } 345 346 if (is_android) { 347 deps += [ "//ui/gl"] 348 } 349} 350 351if (cpu_arch == "x86" || cpu_arch == "x64") { 352 source_set("media_mmx") { 353 sources = [ "simd/filter_yuv_mmx.cc" ] 354 configs += [ "//media:media_config" ] 355 if (!is_win) { 356 cflags = [ "-mmmx" ] 357 } 358 } 359 360 source_set("media_sse2") { 361 sources = [ 362 "simd/convert_rgb_to_yuv_sse2.cc", 363 "simd/convert_rgb_to_yuv_ssse3.cc", 364 "simd/filter_yuv_sse2.cc", 365 ] 366 configs += [ "//media:media_config" ] 367 if (!is_win) { 368 cflags = [ "-msse2" ] 369 } 370 } 371 372 import("//third_party/yasm/yasm_assemble.gni") 373 yasm_assemble("media_yasm") { 374 sources = [ 375 "simd/convert_rgb_to_yuv_ssse3.asm", 376 "simd/convert_yuv_to_rgb_mmx.asm", 377 "simd/convert_yuv_to_rgb_sse.asm", 378 "simd/convert_yuva_to_argb_mmx.asm", 379 "simd/empty_register_state_mmx.asm", 380 "simd/linear_scale_yuv_to_rgb_mmx.asm", 381 "simd/linear_scale_yuv_to_rgb_sse.asm", 382 "simd/scale_yuv_to_rgb_mmx.asm", 383 "simd/scale_yuv_to_rgb_sse.asm", 384 ] 385 386 # TODO(ajwong): Only export if shared_library build... 387 yasm_flags = [ 388 "-DCHROMIUM", 389 "-DEXPORT_SYMBOLS", 390 # In addition to the same path as source asm, let yasm %include 391 # search path be relative to src/ per Chromium policy. 392 "-I", rebase_path("..", root_build_dir), 393 ] 394 395 inputs = [ 396 "//third_party/x86inc/x86inc.asm", 397 "simd/convert_rgb_to_yuv_ssse3.inc", 398 "simd/convert_yuv_to_rgb_mmx.inc", 399 "simd/convert_yuva_to_argb_mmx.inc", 400 "simd/linear_scale_yuv_to_rgb_mmx.inc", 401 "simd/media_export.asm", 402 "simd/scale_yuv_to_rgb_mmx.inc", 403 ] 404 405 if (cpu_arch == "x86") { 406 yasm_flags += [ "-DARCH_X86_32" ] 407 } else if (cpu_arch == "x64") { 408 yasm_flags += [ "-DARCH_X86_64" ] 409 sources += [ 410 "simd/linear_scale_yuv_to_rgb_mmx_x64.asm", 411 "simd/scale_yuv_to_rgb_sse2_x64.asm", 412 ] 413 } 414 415 if (is_mac || is_ios) { 416 yasm_flags += [ 417 "-DPREFIX", 418 "-DMACHO", 419 ] 420 } else { 421 if (is_posix) { 422 yasm_flags += [ "-DELF" ] 423 if (cpu_arch == "x64") { 424 # TODO(ajwong): Why isn't this true in mac? 425 yasm_flags += [ "-DPIC" ] 426 } 427 } 428 } 429 } 430} 431