Home | History | Annotate | Download | only in base
      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 
      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")
     10 
     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     "demuxer_stream_provider.cc",
     81     "demuxer_stream_provider.h",
     82     "djb2.cc",
     83     "djb2.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     "renderer.cc",
    103     "renderer.h",
    104     "sample_format.cc",
    105     "sample_format.h",
    106     "scoped_histogram_timer.h",
    107     "seekable_buffer.cc",
    108     "seekable_buffer.h",
    109     "serial_runner.cc",
    110     "serial_runner.h",
    111     "simd/convert_rgb_to_yuv.h",
    112     "simd/convert_rgb_to_yuv_c.cc",
    113     "simd/convert_yuv_to_rgb.h",
    114     "simd/convert_yuv_to_rgb_c.cc",
    115     "simd/filter_yuv.h",
    116     "simd/filter_yuv_c.cc",
    117     "simd/yuv_to_rgb_table.cc",
    118     "simd/yuv_to_rgb_table.h",
    119     "sinc_resampler.cc",
    120     "sinc_resampler.h",
    121     "stream_parser.cc",
    122     "stream_parser.h",
    123     "stream_parser_buffer.cc",
    124     "stream_parser_buffer.h",
    125     "text_cue.cc",
    126     "text_cue.h",
    127     "text_ranges.cc",
    128     "text_ranges.h",
    129     "text_renderer.cc",
    130     "text_renderer.h",
    131     "text_track.h",
    132     "text_track_config.cc",
    133     "text_track_config.h",
    134     "time_delta_interpolator.cc",
    135     "time_delta_interpolator.h",
    136     "time_source.h",
    137     "user_input_monitor.cc",
    138     "user_input_monitor.h",
    139     "video_decoder.cc",
    140     "video_decoder.h",
    141     "video_decoder_config.cc",
    142     "video_decoder_config.h",
    143     "video_frame.cc",
    144     "video_frame.h",
    145     "video_frame_pool.cc",
    146     "video_frame_pool.h",
    147     "video_renderer.cc",
    148     "video_renderer.h",
    149     "video_rotation.h",
    150     "video_util.cc",
    151     "video_util.h",
    152     "wall_clock_time_source.cc",
    153     "wall_clock_time_source.h",
    154     "yuv_convert.cc",
    155     "yuv_convert.h",
    156   ]
    157   defines = []
    158   deps = [ "//skia" ]
    159   libs = []
    160   configs += [ "//media:media_config" ]
    161 
    162   if (media_use_ffmpeg) {
    163     sources += [
    164       "audio_video_metadata_extractor.cc",
    165       "audio_video_metadata_extractor.h",
    166       "container_names.cc",
    167       "container_names.h",
    168       "media_file_checker.cc",
    169       "media_file_checker.h",
    170     ]
    171     deps += [ "//third_party/ffmpeg" ]
    172   }
    173 
    174   if (enable_browser_cdms) {
    175     sources += [
    176       "browser_cdm.cc",
    177       "browser_cdm.h",
    178       "browser_cdm_factory.h",
    179     ]
    180   }
    181 
    182   if (is_android) {
    183     sources += [ "media_stub.cc" ]
    184   } else if (is_win) {
    185     sources += [ "media_win.cc" ]
    186   } else if (is_posix) {
    187     sources += [ "media_posix.cc" ]
    188   }
    189 
    190   if (is_linux && use_x11) {
    191     configs += [
    192       "//build/config/linux:x11",
    193       "//build/config/linux:xext",
    194   # TODO(ajwong): Why does xent get a separate thing in //build/config/linux:BUILD.gn
    195   #         "//build/config/linux:xdamage",
    196   #         "//build/config/linux:xfixes",
    197   #         "//build/config/linux:xtst",
    198     ]
    199     sources += [ "user_input_monitor_linux.cc" ]
    200     deps += [
    201       "//ui/events:events_base",
    202       "//ui/gfx/x",
    203     ]
    204   } else if (is_mac) {
    205     sources += [ "user_input_monitor_mac.cc" ]
    206   } else if (is_win) {
    207     sources += [ "user_input_monitor_win.cc" ]
    208   } else {
    209     defines += [ "DISABLE_USER_INPUT_MONITOR" ]
    210   }
    211 
    212   if (cpu_arch == "x86" || cpu_arch == "x64") {
    213     sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
    214     deps += [
    215       ":media_yasm",
    216       ":media_sse2",
    217     ]
    218   }
    219 
    220   if (is_linux || is_win) {
    221     sources += [
    222       "keyboard_event_counter.cc",
    223       "keyboard_event_counter.h",
    224     ]
    225   }
    226 }
    227 
    228 # Minimal media component for media/cast on iOS.
    229 config("base_for_cast_ios_dependent_config") {
    230   defines = [ "MEDIA_FOR_CAST_IOS" ]
    231 }
    232 
    233 source_set("base_for_cast_ios") {
    234   sources = [
    235     "video_frame.cc",
    236     "video_frame.h",
    237   ]
    238   configs += [ "//media:media_config" ]
    239   all_dependent_configs = [ ":base_for_cast_ios_dependent_config" ]
    240 }
    241 
    242 source_set("test_support") {
    243   testonly = true
    244   sources = [
    245     "fake_audio_render_callback.cc",
    246     "fake_audio_render_callback.h",
    247     "fake_audio_renderer_sink.cc",
    248     "fake_audio_renderer_sink.h",
    249     "fake_text_track_stream.cc",
    250     "fake_text_track_stream.h",
    251     "gmock_callback_support.h",
    252     "mock_audio_renderer_sink.cc",
    253     "mock_audio_renderer_sink.h",
    254     "mock_demuxer_host.cc",
    255     "mock_demuxer_host.h",
    256     "mock_filters.cc",
    257     "mock_filters.h",
    258     "test_data_util.cc",
    259     "test_data_util.h",
    260     "test_helpers.cc",
    261     "test_helpers.h",
    262   ]
    263   configs += [ "//media:media_config" ]
    264   deps = [ "//testing/gmock" ]
    265 }
    266 
    267 source_set("unittests") {
    268   testonly = true
    269   sources = [
    270     "audio_block_fifo_unittest.cc",
    271     "audio_buffer_converter_unittest.cc",
    272     "audio_buffer_unittest.cc",
    273     "audio_buffer_queue_unittest.cc",
    274     "audio_bus_unittest.cc",
    275     "audio_converter_unittest.cc",
    276     "audio_discard_helper_unittest.cc",
    277     "audio_fifo_unittest.cc",
    278     "audio_hardware_config_unittest.cc",
    279     "audio_hash_unittest.cc",
    280     "audio_pull_fifo_unittest.cc",
    281     "audio_renderer_mixer_input_unittest.cc",
    282     "audio_renderer_mixer_unittest.cc",
    283     "audio_splicer_unittest.cc",
    284     "audio_timestamp_helper_unittest.cc",
    285     "bind_to_current_loop_unittest.cc",
    286     "bit_reader_unittest.cc",
    287     "callback_holder.h",
    288     "callback_holder_unittest.cc",
    289     "channel_mixer_unittest.cc",
    290     "data_buffer_unittest.cc",
    291     "decoder_buffer_queue_unittest.cc",
    292     "decoder_buffer_unittest.cc",
    293     "djb2_unittest.cc",
    294     "gmock_callback_support_unittest.cc",
    295     "multi_channel_resampler_unittest.cc",
    296     "pipeline_unittest.cc",
    297     "ranges_unittest.cc",
    298     "run_all_unittests.cc",
    299     "scoped_histogram_timer_unittest.cc",
    300     "serial_runner_unittest.cc",
    301     "seekable_buffer_unittest.cc",
    302     "sinc_resampler_unittest.cc",
    303     "stream_parser_unittest.cc",
    304     "text_ranges_unittest.cc",
    305     "text_renderer_unittest.cc",
    306     "user_input_monitor_unittest.cc",
    307     "vector_math_testing.h",
    308     "vector_math_unittest.cc",
    309     "video_frame_unittest.cc",
    310     "video_frame_pool_unittest.cc",
    311     "video_util_unittest.cc",
    312     "wall_clock_time_source_unittest.cc",
    313     "yuv_convert_unittest.cc",
    314   ]
    315   configs += [ "//media:media_config" ]
    316   deps = [
    317     ":base",
    318     ":test_support",
    319     "//skia",
    320     "//testing/gmock",
    321     "//testing/gtest",
    322   ]
    323 
    324   if (media_use_ffmpeg) {
    325     sources += [
    326       "audio_video_metadata_extractor_unittest.cc",
    327       "media_file_checker_unittest.cc",
    328     ]
    329   }
    330 
    331   if (!is_android) {
    332     sources += [
    333       "container_names_unittest.cc",
    334     ]
    335   } else {
    336     deps += [ "//ui/gl" ]
    337   }
    338 
    339   if (cpu_arch == "x86" || cpu_arch == "x64") {
    340     sources += [ "simd/convert_rgb_to_yuv_unittest.cc" ]
    341   }
    342 }
    343 
    344 source_set("perftests") {
    345   testonly = true
    346   sources = [
    347     "audio_bus_perftest.cc",
    348     "audio_converter_perftest.cc",
    349     "run_all_perftests.cc",
    350     "sinc_resampler_perftest.cc",
    351     "vector_math_perftest.cc",
    352     "yuv_convert_perftest.cc",
    353   ]
    354   configs += [ "//media:media_config" ]
    355   deps = [
    356     ":base",
    357     ":test_support",
    358     "//testing/gmock",
    359     "//testing/gtest",
    360   ]
    361 
    362   if (media_use_ffmpeg) {
    363     sources += [
    364       "demuxer_perftest.cc",
    365     ]
    366   }
    367 
    368   if (is_android) {
    369     deps += [ "//ui/gl"]
    370   }
    371 }
    372 
    373 if (cpu_arch == "x86" || cpu_arch == "x64") {
    374   source_set("media_sse2") {
    375     sources = [
    376       "simd/convert_rgb_to_yuv_sse2.cc",
    377       "simd/convert_rgb_to_yuv_ssse3.cc",
    378       "simd/filter_yuv_sse2.cc",
    379     ]
    380     configs += [ "//media:media_config" ]
    381     if (!is_win) {
    382       cflags = [ "-msse2" ]
    383     }
    384   }
    385 
    386   import("//third_party/yasm/yasm_assemble.gni")
    387   yasm_assemble("media_yasm") {
    388     sources = [
    389       "simd/convert_rgb_to_yuv_ssse3.asm",
    390       "simd/convert_yuv_to_rgb_sse.asm",
    391       "simd/convert_yuva_to_argb_mmx.asm",
    392       "simd/empty_register_state_mmx.asm",
    393       "simd/linear_scale_yuv_to_rgb_mmx.asm",
    394       "simd/linear_scale_yuv_to_rgb_sse.asm",
    395       "simd/scale_yuv_to_rgb_mmx.asm",
    396       "simd/scale_yuv_to_rgb_sse.asm",
    397     ]
    398 
    399     # TODO(ajwong): Only export if shared_library build...
    400     yasm_flags = [
    401       "-DCHROMIUM",
    402       "-DEXPORT_SYMBOLS",
    403       # In addition to the same path as source asm, let yasm %include
    404       # search path be relative to src/ per Chromium policy.
    405       "-I", rebase_path("..", root_build_dir),
    406     ]
    407 
    408     inputs = [
    409       "//third_party/x86inc/x86inc.asm",
    410       "simd/convert_rgb_to_yuv_ssse3.inc",
    411       "simd/convert_yuv_to_rgb_mmx.inc",
    412       "simd/convert_yuva_to_argb_mmx.inc",
    413       "simd/linear_scale_yuv_to_rgb_mmx.inc",
    414       "simd/media_export.asm",
    415       "simd/scale_yuv_to_rgb_mmx.inc",
    416     ]
    417 
    418     if (cpu_arch == "x86") {
    419       yasm_flags += [ "-DARCH_X86_32" ]
    420     } else if (cpu_arch == "x64") {
    421       yasm_flags += [ "-DARCH_X86_64" ]
    422       sources += [
    423         "simd/linear_scale_yuv_to_rgb_mmx_x64.asm",
    424         "simd/scale_yuv_to_rgb_sse2_x64.asm",
    425       ]
    426     }
    427 
    428     if (is_mac || is_ios) {
    429       yasm_flags += [
    430         "-DPREFIX",
    431         "-DMACHO",
    432       ]
    433     } else {
    434       if (is_posix) {
    435         yasm_flags += [ "-DELF" ]
    436         if (cpu_arch == "x64") {
    437         # TODO(ajwong): Why isn't this true in mac?
    438           yasm_flags += [ "-DPIC" ]
    439         }
    440       }
    441     }
    442   }
    443 }
    444