tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

BUILD.gn (35800B)


      1 # Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
      2 #
      3 # Use of this source code is governed by a BSD-style license
      4 # that can be found in the LICENSE file in the root of the source
      5 # tree. An additional intellectual property rights grant can be found
      6 # in the file PATENTS.  All contributing project authors may
      7 # be found in the AUTHORS file in the root of the source tree.
      8 
      9 import("//chromium/build/config/linux/pkg_config.gni")
     10 import("//libwebrtc/third_party/libaom/options.gni")
     11 import("../webrtc.gni")
     12 
     13 group("media") {
     14   deps = []
     15   deps += [
     16     ":rtc_media",
     17     ":rtc_media_base",
     18   ]
     19 }
     20 
     21 config("rtc_media_defines_config") {
     22   defines = [ "HAVE_WEBRTC_VIDEO" ]
     23 }
     24 
     25 rtc_source_set("rtc_media_config") {
     26   visibility = [ "*" ]
     27   sources = [ "base/media_config.h" ]
     28 }
     29 
     30 rtc_library("rtc_sdp_video_format_utils") {
     31   visibility = [ "*" ]
     32   sources = [
     33     "base/sdp_video_format_utils.cc",
     34     "base/sdp_video_format_utils.h",
     35   ]
     36 
     37   deps = [
     38     ":media_constants",
     39     "../api:rtp_parameters",
     40     "../api/video_codecs:video_codecs_api",
     41     "../rtc_base:checks",
     42     "../rtc_base:stringutils",
     43     "//third_party/abseil-cpp/absl/algorithm:container",
     44   ]
     45 }
     46 
     47 rtc_library("rtc_media_base") {
     48   visibility = [ "*" ]
     49   defines = []
     50   libs = []
     51   sources = [
     52     "base/adapted_video_track_source.h",  # Used downstream
     53     "base/video_adapter.h",  # Used once downstream
     54     "base/video_broadcaster.h",  # Used downstream
     55     "base/video_common.h",  # Used downstream
     56   ]
     57   deps = [
     58     ":adapted_video_track_source",
     59     ":codec",
     60     ":media_channel",
     61     ":media_channel_impl",
     62     ":rid_description",
     63     ":rtc_media_config",
     64     ":rtp_utils",
     65     ":stream_params",
     66     ":video_adapter",
     67     ":video_broadcaster",
     68     ":video_common",
     69     ":video_source_base",
     70     "../api:array_view",
     71     "../api:audio_options_api",
     72     "../api:call_api",
     73     "../api:field_trials_view",
     74     "../api:frame_transformer_interface",
     75     "../api:media_stream_interface",
     76     "../api:rtc_error",
     77     "../api:rtp_parameters",
     78     "../api:rtp_sender_setparameters_callback",
     79     "../api:scoped_refptr",
     80     "../api:sequence_checker",
     81     "../api:transport_api",
     82     "../api:video_track_source_constraints",
     83     "../api/audio:audio_frame_processor",
     84     "../api/audio_codecs:audio_codecs_api",
     85     "../api/crypto:frame_decryptor_interface",
     86     "../api/crypto:frame_encryptor_interface",
     87     "../api/crypto:options",
     88     "../api/task_queue",
     89     "../api/task_queue:pending_task_safety_flag",
     90     "../api/transport:datagram_transport_interface",
     91     "../api/transport:stun_types",
     92     "../api/transport/rtp:rtp_source",
     93     "../api/units:time_delta",
     94     "../api/video:recordable_encoded_frame",
     95     "../api/video:resolution",
     96     "../api/video:video_bitrate_allocation",
     97     "../api/video:video_bitrate_allocator_factory",
     98     "../api/video:video_frame",
     99     "../api/video:video_rtp_headers",
    100     "../api/video_codecs:scalability_mode",
    101     "../api/video_codecs:video_codecs_api",
    102     "../call:call_interfaces",
    103     "../common_video",
    104     "../modules/async_audio_processing",
    105     "../modules/audio_device",
    106     "../modules/rtp_rtcp:rtp_rtcp_format",
    107     "../rtc_base:async_packet_socket",
    108     "../rtc_base:buffer",
    109     "../rtc_base:byte_order",
    110     "../rtc_base:checks",
    111     "../rtc_base:copy_on_write_buffer",
    112     "../rtc_base:dscp",
    113     "../rtc_base:logging",
    114     "../rtc_base:macromagic",
    115     "../rtc_base:network_route",
    116     "../rtc_base:sanitizer",
    117     "../rtc_base:socket",
    118     "../rtc_base:stringutils",
    119     "../rtc_base:timeutils",
    120     "../rtc_base:unique_id_generator",
    121     "../rtc_base/network:sent_packet",
    122     "../rtc_base/synchronization:mutex",
    123     "../rtc_base/system:file_wrapper",
    124     "../rtc_base/system:no_unique_address",
    125     "../rtc_base/system:rtc_export",
    126     "../rtc_base/third_party/sigslot",
    127     "../video/config:encoder_config",
    128     "//third_party/abseil-cpp/absl/base:core_headers",
    129   ]
    130 }
    131 
    132 rtc_library("adapted_video_track_source") {
    133   sources = [
    134     "base/adapted_video_track_source.cc",
    135     "base/adapted_video_track_source.h",
    136   ]
    137   deps = [
    138     ":video_adapter",
    139     ":video_broadcaster",
    140     "../api:media_stream_interface",
    141     "../api:scoped_refptr",
    142     "../api:video_track_source_constraints",
    143     "../api/video:recordable_encoded_frame",
    144     "../api/video:video_frame",
    145     "../api/video:video_rtp_headers",
    146     "../rtc_base:checks",
    147     "../rtc_base:macromagic",
    148     "../rtc_base:timeutils",
    149     "../rtc_base/synchronization:mutex",
    150     "../rtc_base/system:rtc_export",
    151   ]
    152 }
    153 
    154 rtc_source_set("audio_source") {
    155   sources = [ "base/audio_source.h" ]
    156   if (build_with_mozilla) {
    157     sources -= [ "base/audio_source.h" ]
    158   }
    159 }
    160 
    161 rtc_library("video_adapter") {
    162   sources = [
    163     "base/video_adapter.cc",
    164     "base/video_adapter.h",
    165   ]
    166   deps = [
    167     ":video_common",
    168     "../api/video:resolution",
    169     "../api/video:video_frame",
    170     "../common_video",
    171     "../rtc_base:checks",
    172     "../rtc_base:logging",
    173     "../rtc_base:macromagic",
    174     "../rtc_base:stringutils",
    175     "../rtc_base:timeutils",
    176     "../rtc_base/synchronization:mutex",
    177     "../rtc_base/system:rtc_export",
    178   ]
    179 }
    180 
    181 rtc_library("video_source_base") {
    182   sources = [
    183     "base/video_source_base.cc",
    184     "base/video_source_base.h",
    185   ]
    186   deps = [
    187     "../api:sequence_checker",
    188     "../api/video:video_frame",
    189     "../rtc_base:checks",
    190     "../rtc_base:macromagic",
    191     "../rtc_base/system:no_unique_address",
    192     "//third_party/abseil-cpp/absl/algorithm:container",
    193   ]
    194 }
    195 
    196 rtc_library("video_broadcaster") {
    197   sources = [
    198     "base/video_broadcaster.cc",
    199     "base/video_broadcaster.h",  # Used downstream
    200   ]
    201   deps = [
    202     ":video_common",
    203     ":video_source_base",
    204     "../api:media_stream_interface",
    205     "../api:scoped_refptr",
    206     "../api:sequence_checker",
    207     "../api:video_track_source_constraints",
    208     "../api/video:video_frame",
    209     "../api/video:video_rtp_headers",
    210     "../rtc_base:checks",
    211     "../rtc_base:logging",
    212     "../rtc_base:macromagic",
    213     "../rtc_base/synchronization:mutex",
    214   ]
    215 }
    216 
    217 rtc_library("video_common") {
    218   sources = [
    219     "base/video_common.cc",
    220     "base/video_common.h",
    221   ]
    222   deps = [
    223     "../api:array_view",
    224     "../rtc_base:checks",
    225     "../rtc_base:stringutils",
    226     "../rtc_base:timeutils",
    227     "../rtc_base/system:rtc_export",
    228     "//third_party/abseil-cpp/absl/base:core_headers",
    229   ]
    230 }
    231 
    232 rtc_library("media_engine") {
    233   sources = [
    234     "base/media_engine.cc",
    235     "base/media_engine.h",
    236   ]
    237   deps = [
    238     ":codec",
    239     ":media_channel",
    240     ":media_channel_impl",
    241     ":rid_description",
    242     ":rtc_media_config",
    243     ":stream_params",
    244     ":video_common",
    245     "../api:array_view",
    246     "../api:audio_options_api",
    247     "../api:field_trials_view",
    248     "../api:rtc_error",
    249     "../api:rtp_headers",
    250     "../api:rtp_parameters",
    251     "../api:rtp_transceiver_direction",
    252     "../api:scoped_refptr",
    253     "../api/audio:audio_device",
    254     "../api/audio_codecs:audio_codecs_api",
    255     "../api/crypto:options",
    256     "../api/environment",
    257     "../api/video:video_bitrate_allocation",
    258     "../api/video:video_bitrate_allocator_factory",
    259     "../api/video:video_codec_constants",
    260     "../api/video_codecs:scalability_mode",
    261     "../call:call_interfaces",
    262     "../rtc_base:checks",
    263     "../rtc_base:stringutils",
    264     "../rtc_base/system:file_wrapper",
    265     "//third_party/abseil-cpp/absl/algorithm:container",
    266   ]
    267   if (build_with_mozilla) {
    268     sources -= [
    269       "base/media_engine.cc",
    270       "base/media_engine.h",
    271     ]
    272     deps -= [
    273       ":media_channel_impl",
    274     ]
    275   }
    276 }
    277 
    278 rtc_library("media_channel_impl") {
    279 if (!build_with_mozilla) {
    280   sources = [
    281     "base/media_channel_impl.cc",
    282     "base/media_channel_impl.h",
    283   ]
    284   deps = [
    285     ":codec",
    286     ":media_channel",
    287     ":rtp_utils",
    288     ":stream_params",
    289     "../api:array_view",
    290     "../api:audio_options_api",
    291     "../api:call_api",
    292     "../api:frame_transformer_interface",
    293     "../api:media_stream_interface",
    294     "../api:rtc_error",
    295     "../api:rtp_headers",
    296     "../api:rtp_parameters",
    297     "../api:rtp_sender_interface",
    298     "../api:scoped_refptr",
    299     "../api:sequence_checker",
    300     "../api:transport_api",
    301     "../api/crypto:frame_decryptor_interface",
    302     "../api/crypto:frame_encryptor_interface",
    303     "../api/task_queue",
    304     "../api/task_queue:pending_task_safety_flag",
    305     "../api/transport/rtp:rtp_source",
    306     "../api/units:time_delta",
    307     "../api/video:recordable_encoded_frame",
    308     "../api/video:video_frame",
    309     "../api/video:video_rtp_headers",
    310     "../api/video_codecs:scalability_mode",
    311     "../api/video_codecs:video_codecs_api",
    312     "../common_video",
    313     "../modules/rtp_rtcp:rtp_rtcp_format",
    314     "../rtc_base:async_packet_socket",
    315     "../rtc_base:checks",
    316     "../rtc_base:copy_on_write_buffer",
    317     "../rtc_base:dscp",
    318     "../rtc_base:logging",
    319     "../rtc_base:macromagic",
    320     "../rtc_base:network_route",
    321     "../rtc_base:socket",
    322     "../rtc_base/network:sent_packet",
    323     "//third_party/abseil-cpp/absl/functional:any_invocable",
    324     "//third_party/abseil-cpp/absl/strings:string_view",
    325   ]
    326 }
    327 }
    328 
    329 rtc_source_set("media_channel") {
    330   sources = [ "base/media_channel.h" ]
    331   deps = [
    332     ":audio_source",
    333     ":codec",
    334     ":media_constants",
    335     ":rtp_utils",
    336     ":stream_params",
    337     "../api:audio_options_api",
    338     "../api:call_api",
    339     "../api:frame_transformer_interface",
    340     "../api:media_stream_interface",
    341     "../api:rtc_error",
    342     "../api:rtp_headers",
    343     "../api:rtp_parameters",
    344     "../api:rtp_sender_interface",
    345     "../api:scoped_refptr",
    346     "../api/audio:audio_processing_statistics",
    347     "../api/audio_codecs:audio_codecs_api",
    348     "../api/crypto:frame_decryptor_interface",
    349     "../api/crypto:frame_encryptor_interface",
    350     "../api/task_queue:pending_task_safety_flag",
    351     "../api/transport:datagram_transport_interface",
    352     "../api/transport/rtp:rtp_source",
    353     "../api/units:data_rate",
    354     "../api/units:time_delta",
    355     "../api/units:timestamp",
    356     "../api/video:encoded_image",
    357     "../api/video:recordable_encoded_frame",
    358     "../api/video:video_frame",
    359     "../api/video:video_rtp_headers",
    360     "../api/video_codecs:scalability_mode",
    361     "../api/video_codecs:video_codecs_api",
    362     "../common_video",
    363     "../modules/rtp_rtcp:rtp_rtcp_format",
    364     "../rtc_base:async_packet_socket",
    365     "../rtc_base:buffer",
    366     "../rtc_base:checks",
    367     "../rtc_base:copy_on_write_buffer",
    368     "../rtc_base:dscp",
    369     "../rtc_base:logging",
    370     "../rtc_base:network_route",
    371     "../rtc_base:socket",
    372     "../rtc_base:stringutils",
    373     "../rtc_base/network:sent_packet",
    374     "../video/config:encoder_config",
    375     "//third_party/abseil-cpp/absl/functional:any_invocable",
    376     "//third_party/abseil-cpp/absl/strings",
    377     "//third_party/abseil-cpp/absl/strings:string_view",
    378   ]
    379 }
    380 
    381 rtc_library("codec") {
    382   sources = [
    383     "base/codec.cc",
    384     "base/codec.h",
    385 
    386     # Because Codec::Matches uses a function from codec_comparators,
    387     # there's a mutual dependency between these two files.
    388     "base/codec_comparators.cc",
    389     "base/codec_comparators.h",
    390   ]
    391   deps = [
    392     ":media_constants",
    393     "../api:rtp_parameters",
    394     "../api/audio_codecs:audio_codecs_api",
    395     "../api/video_codecs:scalability_mode",
    396     "../api/video_codecs:video_codecs_api",
    397     "../rtc_base:checks",
    398     "../rtc_base:logging",
    399     "../rtc_base:stringutils",
    400     "../rtc_base/system:rtc_export",
    401     "//third_party/abseil-cpp/absl/algorithm:container",
    402     "//third_party/abseil-cpp/absl/base:core_headers",
    403     "//third_party/abseil-cpp/absl/container:inlined_vector",
    404     "//third_party/abseil-cpp/absl/functional:any_invocable",
    405     "//third_party/abseil-cpp/absl/strings",
    406     "//third_party/abseil-cpp/absl/strings:str_format",
    407     "//third_party/abseil-cpp/absl/strings:string_view",
    408   ]
    409 }
    410 
    411 rtc_library("codec_list") {
    412   sources = [
    413     "base/codec_list.cc",
    414     "base/codec_list.h",
    415   ]
    416   deps = [
    417     ":codec",
    418     ":media_constants",
    419     "../api:rtc_error",
    420     "../rtc_base:checks",
    421     "../rtc_base:logging",
    422     "../rtc_base:stringutils",
    423   ]
    424 }
    425 
    426 # MOZILLA Bug 1931241 - how much of this do we need?
    427 rtc_library("rtp_utils") {
    428 if (!build_with_mozilla) {
    429   sources = [
    430     "base/rtp_utils.cc",
    431     "base/rtp_utils.h",
    432   ]
    433   deps = [
    434     ":turn_utils",
    435     "../api:array_view",
    436     "../modules/rtp_rtcp:rtp_rtcp_format",
    437     "../rtc_base:async_packet_socket",
    438     "../rtc_base:byte_order",
    439     "../rtc_base:checks",
    440     "../rtc_base:digest",
    441     "../rtc_base/system:rtc_export",
    442     "//third_party/abseil-cpp/absl/strings:string_view",
    443   ]
    444 }
    445 }
    446 
    447 rtc_library("stream_params") {
    448 if (!build_with_mozilla) {
    449   sources = [
    450     "base/stream_params.cc",
    451     "base/stream_params.h",
    452   ]
    453   deps = [
    454     ":rid_description",
    455     "../api:array_view",
    456     "../rtc_base:checks",
    457     "../rtc_base:stringutils",
    458     "../rtc_base:unique_id_generator",
    459     "//third_party/abseil-cpp/absl/algorithm:container",
    460   ]
    461 }
    462 }
    463 
    464 rtc_library("media_constants") {
    465   sources = [
    466     "base/media_constants.cc",
    467     "base/media_constants.h",
    468   ]
    469   deps = [ "../rtc_base/system:rtc_export" ]
    470 }
    471 
    472 rtc_library("turn_utils") {
    473   sources = [
    474     "base/turn_utils.cc",
    475     "base/turn_utils.h",
    476   ]
    477   deps = [
    478     "../api/transport:stun_types",
    479     "../rtc_base:byte_order",
    480     "../rtc_base/system:rtc_export",
    481   ]
    482 }
    483 
    484 rtc_library("rid_description") {
    485   sources = [
    486     "base/rid_description.cc",
    487     "base/rid_description.h",
    488   ]
    489   deps = [ ":codec" ]
    490 }
    491 
    492 rtc_library("rtc_simulcast_encoder_adapter") {
    493   visibility = [ "*" ]
    494   defines = []
    495   libs = []
    496   sources = [
    497     "engine/simulcast_encoder_adapter.cc",
    498     "engine/simulcast_encoder_adapter.h",
    499   ]
    500   deps = [
    501     ":rtc_sdp_video_format_utils",
    502     ":video_common",
    503     "../api:array_view",
    504     "../api:fec_controller_api",
    505     "../api:field_trials_view",
    506     "../api:scoped_refptr",
    507     "../api:sequence_checker",
    508     "../api/environment",
    509     "../api/units:data_rate",
    510     "../api/units:timestamp",
    511     "../api/video:encoded_image",
    512     "../api/video:video_bitrate_allocation",
    513     "../api/video:video_bitrate_allocator",
    514     "../api/video:video_codec_constants",
    515     "../api/video:video_frame",
    516     "../api/video:video_frame_type",
    517     "../api/video:video_rtp_headers",
    518     "../api/video_codecs:rtc_software_fallback_wrappers",
    519     "../api/video_codecs:scalability_mode",
    520     "../api/video_codecs:video_codecs_api",
    521     "../common_video",
    522     "../media:media_constants",
    523     "../modules/video_coding:video_codec_interface",
    524     "../modules/video_coding:video_coding_utility",
    525     "../rtc_base:checks",
    526     "../rtc_base:logging",
    527     "../rtc_base:stringutils",
    528     "../rtc_base/experiments:encoder_info_settings",
    529     "../rtc_base/experiments:rate_control_settings",
    530     "../rtc_base/system:no_unique_address",
    531     "../rtc_base/system:rtc_export",
    532     "../system_wrappers",
    533     "//third_party/abseil-cpp/absl/algorithm:container",
    534     "//third_party/abseil-cpp/absl/base:nullability",
    535   ]
    536 }
    537 
    538 rtc_library("rtc_internal_video_codecs") {
    539   visibility = [ "*" ]
    540   allow_poison = [ "software_video_codecs" ]
    541   defines = []
    542   libs = []
    543   deps = [
    544     ":codec",
    545     ":media_constants",
    546     ":rtc_simulcast_encoder_adapter",
    547     "../api/environment",
    548     "../api/video:encoded_image",
    549     "../api/video:video_bitrate_allocation",
    550     "../api/video:video_frame",
    551     "../api/video:video_rtp_headers",
    552     "../api/video_codecs:rtc_software_fallback_wrappers",
    553     "../api/video_codecs:scalability_mode",
    554     "../api/video_codecs:video_codecs_api",
    555     "../api/video_codecs:video_encoder_factory_template",
    556     "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
    557     "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
    558     "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
    559     "../call:call_interfaces",
    560     "../modules/video_coding:video_codec_interface",
    561     "../modules/video_coding:webrtc_h264",
    562     "../modules/video_coding:webrtc_vp8",
    563     "../modules/video_coding:webrtc_vp9",
    564     "../rtc_base:checks",
    565     "../rtc_base:logging",
    566     "../rtc_base/system:rtc_export",
    567     "../test:fake_video_codecs",
    568     "//third_party/abseil-cpp/absl/container:inlined_vector",
    569     "//third_party/abseil-cpp/absl/strings",
    570   ]
    571   if (build_with_mozilla) {
    572     deps -= [
    573       "../test:fake_video_codecs",
    574     ]
    575   }
    576 
    577   if (enable_libaom) {
    578     defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
    579     deps += [
    580       "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
    581     ]
    582   }
    583 
    584   if (rtc_include_dav1d_in_internal_decoder_factory) {
    585     deps += [ "../modules/video_coding/codecs/av1:dav1d_decoder" ]
    586   }
    587   sources = [
    588     "engine/fake_video_codec_factory.cc",
    589     "engine/fake_video_codec_factory.h",
    590     "engine/internal_decoder_factory.cc",
    591     "engine/internal_decoder_factory.h",
    592     "engine/internal_encoder_factory.cc",
    593     "engine/internal_encoder_factory.h",
    594   ]
    595   if (build_with_mozilla) {
    596     sources -= [
    597       "engine/fake_video_codec_factory.cc",
    598       "engine/fake_video_codec_factory.h",
    599       "engine/internal_encoder_factory.cc", # See Bug 1820869.
    600     ]
    601   }
    602 }
    603 
    604 rtc_library("rtc_audio_video") {
    605   visibility = [ "*" ]
    606   allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
    607   defines = []
    608   libs = []
    609   deps = [
    610     ":audio_source",
    611     ":codec",
    612     ":media_channel",
    613     ":media_channel_impl",
    614     ":media_constants",
    615     ":media_engine",
    616     ":rid_description",
    617     ":rtc_media_config",
    618     ":rtp_utils",
    619     ":stream_params",
    620     "../api:array_view",
    621     "../api:audio_options_api",
    622     "../api:call_api",
    623     "../api:field_trials_view",
    624     "../api:frame_transformer_interface",
    625     "../api:make_ref_counted",
    626     "../api:media_stream_interface",
    627     "../api:priority",
    628     "../api:rtc_error",
    629     "../api:rtp_headers",
    630     "../api:rtp_parameters",
    631     "../api:rtp_sender_interface",
    632     "../api:rtp_transceiver_direction",
    633     "../api:scoped_refptr",
    634     "../api:sequence_checker",
    635     "../api/audio:audio_device",
    636     "../api/audio:audio_frame_api",
    637     "../api/audio:audio_frame_processor",
    638     "../api/audio:audio_mixer_api",
    639     "../api/audio:audio_processing",
    640     "../api/audio:audio_processing_statistics",
    641     "../api/audio_codecs:audio_codecs_api",
    642     "../api/crypto:frame_decryptor_interface",
    643     "../api/crypto:frame_encryptor_interface",
    644     "../api/crypto:options",
    645     "../api/environment",
    646     "../api/task_queue",
    647     "../api/task_queue:pending_task_safety_flag",
    648     "../api/transport:bitrate_settings",
    649     "../api/transport/rtp:rtp_source",
    650     "../api/units:data_rate",
    651     "../api/units:time_delta",
    652     "../api/units:timestamp",
    653     "../api/video:recordable_encoded_frame",
    654     "../api/video:video_bitrate_allocator_factory",
    655     "../api/video:video_frame",
    656     "../api/video:video_stream_encoder",
    657     "../api/video_codecs:scalability_mode",
    658     "../api/video_codecs:video_codecs_api",
    659     "../call",
    660     "../call:call_interfaces",
    661     "../call:payload_type",
    662     "../call:payload_type_picker",
    663     "../call:receive_stream_interface",
    664     "../call:rtp_interfaces",
    665     "../call:video_receive_stream_api",
    666     "../call:video_send_stream_api",
    667     "../common_video:frame_counts",
    668     "../modules/async_audio_processing",
    669     "../modules/audio_mixer:audio_mixer_impl",
    670     "../modules/rtp_rtcp",
    671     "../modules/rtp_rtcp:rtp_rtcp_format",
    672     "../modules/video_coding/svc:scalability_mode_util",
    673     "../rtc_base:checks",
    674     "../rtc_base:dscp",
    675     "../rtc_base:event_tracer",
    676     "../rtc_base:logging",
    677     "../rtc_base:macromagic",
    678     "../rtc_base:network_route",
    679     "../rtc_base:race_checker",
    680     "../rtc_base:socket",
    681     "../rtc_base:stringutils",
    682     "../rtc_base:timeutils",
    683     "../rtc_base/experiments:field_trial_parser",
    684     "../rtc_base/network:sent_packet",
    685     "../rtc_base/synchronization:mutex",
    686     "../rtc_base/system:file_wrapper",
    687     "../rtc_base/system:no_unique_address",
    688     "../system_wrappers",
    689     "../system_wrappers:metrics",
    690     "../video/config:encoder_config",
    691     "//third_party/abseil-cpp/absl/algorithm",
    692     "//third_party/abseil-cpp/absl/algorithm:container",
    693     "//third_party/abseil-cpp/absl/functional:any_invocable",
    694     "//third_party/abseil-cpp/absl/functional:bind_front",
    695     "//third_party/abseil-cpp/absl/strings",
    696     "//third_party/abseil-cpp/absl/strings:string_view",
    697   ]
    698 
    699   sources = [
    700     "engine/adm_helpers.cc",
    701     "engine/adm_helpers.h",
    702     "engine/webrtc_media_engine.cc",
    703     "engine/webrtc_media_engine.h",
    704     "engine/webrtc_video_engine.cc",
    705     "engine/webrtc_video_engine.h",
    706     "engine/webrtc_voice_engine.cc",
    707     "engine/webrtc_voice_engine.h",
    708   ]
    709   if (build_with_mozilla) {
    710     sources -= [
    711       "engine/webrtc_video_engine.cc",
    712       "engine/webrtc_voice_engine.cc",
    713     ]
    714   }
    715 
    716   public_configs = []
    717   if (!build_with_chromium) {
    718     public_configs += [ ":rtc_media_defines_config" ]
    719     deps += [ "../modules/video_capture:video_capture_internal_impl" ]
    720   }
    721 
    722   if (rtc_include_internal_audio_device) {
    723     deps += [ "../api/audio:create_audio_device_module" ]
    724   }
    725 
    726   if (rtc_enable_protobuf) {
    727     deps += [
    728       "../modules/audio_coding:ana_config_proto",
    729       "../modules/audio_processing/aec_dump:aec_dump_impl",
    730     ]
    731   } else {
    732     deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
    733   }
    734 }
    735 
    736 rtc_source_set("rtc_data_sctp_transport_internal") {
    737   sources = [ "sctp/sctp_transport_internal.h" ]
    738   deps = [
    739     ":media_channel",
    740     "../api:libjingle_peerconnection_api",
    741     "../api:priority",
    742     "../api:rtc_error",
    743     "../api/transport:datagram_transport_interface",
    744     "../p2p:dtls_transport_internal",
    745     "../p2p:packet_transport_internal",
    746     "../rtc_base:copy_on_write_buffer",
    747     "../rtc_base:threading",
    748   ]
    749 }
    750 
    751 if (rtc_build_dcsctp) {
    752   rtc_library("rtc_data_dcsctp_transport") {
    753     sources = [
    754       "sctp/dcsctp_transport.cc",
    755       "sctp/dcsctp_transport.h",
    756     ]
    757     deps = [
    758       ":media_channel",
    759       ":rtc_data_sctp_transport_internal",
    760       "../api:array_view",
    761       "../api:dtls_transport_interface",
    762       "../api:field_trials_view",
    763       "../api:libjingle_peerconnection_api",
    764       "../api:priority",
    765       "../api:rtc_error",
    766       "../api:sequence_checker",
    767       "../api/environment",
    768       "../api/task_queue",
    769       "../api/task_queue:pending_task_safety_flag",
    770       "../api/transport:datagram_transport_interface",
    771       "../net/dcsctp/public:factory",
    772       "../net/dcsctp/public:socket",
    773       "../net/dcsctp/public:types",
    774       "../net/dcsctp/public:utils",
    775       "../net/dcsctp/timer:task_queue_timeout",
    776       "../p2p:dtls_transport_internal",
    777       "../p2p:packet_transport_internal",
    778       "../rtc_base:async_packet_socket",
    779       "../rtc_base:checks",
    780       "../rtc_base:copy_on_write_buffer",
    781       "../rtc_base:event_tracer",
    782       "../rtc_base:logging",
    783       "../rtc_base:macromagic",
    784       "../rtc_base:random",
    785       "../rtc_base:socket",
    786       "../rtc_base:stringutils",
    787       "../rtc_base:threading",
    788       "../rtc_base/containers:flat_map",
    789       "../rtc_base/network:received_packet",
    790       "../rtc_base/third_party/sigslot",
    791       "../system_wrappers",
    792       "//third_party/abseil-cpp/absl/strings",
    793     ]
    794   }
    795 }
    796 
    797 rtc_library("rtc_data_sctp_transport_factory") {
    798   defines = []
    799   sources = [
    800     "sctp/sctp_transport_factory.cc",
    801     "sctp/sctp_transport_factory.h",
    802   ]
    803   deps = [
    804     ":rtc_data_sctp_transport_internal",
    805     "../api/environment",
    806     "../api/transport:sctp_transport_factory_interface",
    807     "../p2p:dtls_transport_internal",
    808     "../rtc_base:threading",
    809     "../rtc_base/system:unused",
    810   ]
    811 
    812   if (rtc_enable_sctp) {
    813     assert(rtc_build_dcsctp, "An SCTP backend is required to enable SCTP")
    814   }
    815 
    816   if (rtc_build_dcsctp) {
    817     defines += [ "WEBRTC_HAVE_DCSCTP" ]
    818     deps += [
    819       ":rtc_data_dcsctp_transport",
    820       "../system_wrappers",
    821     ]
    822   }
    823 }
    824 
    825 rtc_source_set("rtc_media") {
    826   visibility = [ "*" ]
    827   allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
    828   deps = [ ":rtc_audio_video" ]
    829 }
    830 
    831 if (rtc_include_tests) {
    832   rtc_library("rtc_media_tests_utils") {
    833     testonly = true
    834 
    835     defines = []
    836     deps = [
    837       ":audio_source",
    838       ":codec",
    839       ":media_channel",
    840       ":media_channel_impl",
    841       ":media_constants",
    842       ":media_engine",
    843       ":rtc_audio_video",
    844       ":rtc_internal_video_codecs",
    845       ":rtc_media",
    846       ":rtc_media_config",
    847       ":rtc_simulcast_encoder_adapter",
    848       ":rtp_utils",
    849       ":stream_params",
    850       ":video_common",
    851       "../api:array_view",
    852       "../api:audio_options_api",
    853       "../api:call_api",
    854       "../api:fec_controller_api",
    855       "../api:field_trials_view",
    856       "../api:frame_transformer_interface",
    857       "../api:make_ref_counted",
    858       "../api:rtc_error",
    859       "../api:rtp_headers",
    860       "../api:rtp_parameters",
    861       "../api:rtp_sender_interface",
    862       "../api:scoped_refptr",
    863       "../api/adaptation:resource_adaptation_api",
    864       "../api/audio:audio_device",
    865       "../api/audio:audio_frame_api",
    866       "../api/audio:audio_mixer_api",
    867       "../api/audio:audio_processing",
    868       "../api/audio_codecs:audio_codecs_api",
    869       "../api/crypto:frame_decryptor_interface",
    870       "../api/crypto:frame_encryptor_interface",
    871       "../api/crypto:options",
    872       "../api/environment",
    873       "../api/task_queue",
    874       "../api/task_queue:pending_task_safety_flag",
    875       "../api/transport:bitrate_settings",
    876       "../api/transport/rtp:rtp_source",
    877       "../api/units:time_delta",
    878       "../api/units:timestamp",
    879       "../api/video:encoded_image",
    880       "../api/video:recordable_encoded_frame",
    881       "../api/video:video_bitrate_allocation",
    882       "../api/video:video_bitrate_allocator_factory",
    883       "../api/video:video_frame",
    884       "../api/video:video_frame_type",
    885       "../api/video:video_rtp_headers",
    886       "../api/video_codecs:scalability_mode",
    887       "../api/video_codecs:video_codecs_api",
    888       "../call:call_interfaces",
    889       "../call:fake_payload_type_suggester",
    890       "../call:mock_rtp_interfaces",
    891       "../call:payload_type",
    892       "../call:payload_type_picker",
    893       "../call:rtp_interfaces",
    894       "../call:video_receive_stream_api",
    895       "../call:video_send_stream_api",
    896       "../common_video",
    897       "../modules/audio_processing",
    898       "../modules/rtp_rtcp",
    899       "../modules/rtp_rtcp:rtp_rtcp_format",
    900       "../modules/video_coding:video_codec_interface",
    901       "../modules/video_coding:video_coding_utility",
    902       "../modules/video_coding/svc:scalability_mode_util",
    903       "../rtc_base:async_packet_socket",
    904       "../rtc_base:buffer",
    905       "../rtc_base:byte_order",
    906       "../rtc_base:checks",
    907       "../rtc_base:copy_on_write_buffer",
    908       "../rtc_base:dscp",
    909       "../rtc_base:gunit_helpers",
    910       "../rtc_base:logging",
    911       "../rtc_base:macromagic",
    912       "../rtc_base:network_route",
    913       "../rtc_base:rtc_event",
    914       "../rtc_base:socket",
    915       "../rtc_base:stringutils",
    916       "../rtc_base:threading",
    917       "../rtc_base:timeutils",
    918       "../rtc_base/network:sent_packet",
    919       "../rtc_base/synchronization:mutex",
    920       "../rtc_base/system:file_wrapper",
    921       "../rtc_base/third_party/sigslot",
    922       "../test:create_test_field_trials",
    923       "../test:test_support",
    924       "../video/config:encoder_config",
    925       "../video/config:streams_config",
    926       "//testing/gtest",
    927       "//third_party/abseil-cpp/absl/algorithm:container",
    928       "//third_party/abseil-cpp/absl/base:nullability",
    929       "//third_party/abseil-cpp/absl/functional:any_invocable",
    930       "//third_party/abseil-cpp/absl/strings",
    931       "//third_party/abseil-cpp/absl/strings:string_view",
    932     ]
    933     sources = [
    934       "base/fake_frame_source.cc",
    935       "base/fake_frame_source.h",
    936       "base/fake_media_engine.cc",
    937       "base/fake_media_engine.h",
    938       "base/fake_network_interface.h",
    939       "base/fake_rtp.cc",
    940       "base/fake_rtp.h",
    941       "base/fake_video_renderer.cc",
    942       "base/fake_video_renderer.h",
    943       "base/test_utils.cc",
    944       "base/test_utils.h",
    945       "engine/fake_webrtc_call.cc",
    946       "engine/fake_webrtc_call.h",
    947       "engine/fake_webrtc_video_engine.cc",
    948       "engine/fake_webrtc_video_engine.h",
    949     ]
    950   }
    951 
    952   if (!build_with_chromium) {
    953     rtc_media_unittests_resources = [
    954       "../resources/media/captured-320x240-2s-48.frames",
    955       "../resources/media/faces.1280x720_P420.yuv",
    956       "../resources/media/faces_I400.jpg",
    957       "../resources/media/faces_I411.jpg",
    958       "../resources/media/faces_I420.jpg",
    959       "../resources/media/faces_I422.jpg",
    960       "../resources/media/faces_I444.jpg",
    961     ]
    962 
    963     if (is_ios) {
    964       bundle_data("rtc_media_unittests_bundle_data") {
    965         testonly = true
    966         sources = rtc_media_unittests_resources
    967         outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
    968       }
    969     }
    970 
    971     rtc_test("rtc_media_unittests") {
    972       testonly = true
    973 
    974       defines = []
    975       deps = [
    976         ":audio_source",
    977         ":codec",
    978         ":codec_list",
    979         ":media_channel",
    980         ":media_constants",
    981         ":media_engine",
    982         ":rid_description",
    983         ":rtc_audio_video",
    984         ":rtc_internal_video_codecs",
    985         ":rtc_media_base",
    986         ":rtc_media_config",
    987         ":rtc_media_tests_utils",
    988         ":rtc_sdp_video_format_utils",
    989         ":rtc_simulcast_encoder_adapter",
    990         ":rtp_utils",
    991         ":stream_params",
    992         ":turn_utils",
    993         ":video_common",
    994         "../api:array_view",
    995         "../api:audio_options_api",
    996         "../api:call_api",
    997         "../api:create_simulcast_test_fixture_api",
    998         "../api:fec_controller_api",
    999         "../api:field_trials",
   1000         "../api:field_trials_view",
   1001         "../api:make_ref_counted",
   1002         "../api:mock_encoder_selector",
   1003         "../api:mock_video_bitrate_allocator",
   1004         "../api:mock_video_bitrate_allocator_factory",
   1005         "../api:mock_video_codec_factory",
   1006         "../api:mock_video_decoder",
   1007         "../api:priority",
   1008         "../api:ref_count",
   1009         "../api:rtc_error",
   1010         "../api:rtp_headers",
   1011         "../api:rtp_parameters",
   1012         "../api:rtp_transceiver_direction",
   1013         "../api:scoped_refptr",
   1014         "../api:simulcast_test_fixture_api",
   1015         "../api:transport_api",
   1016         "../api:video_track_source_constraints",
   1017         "../api/audio:audio_device",
   1018         "../api/audio:audio_processing",
   1019         "../api/audio:builtin_audio_processing_builder",
   1020         "../api/audio_codecs:audio_codecs_api",
   1021         "../api/audio_codecs:builtin_audio_decoder_factory",
   1022         "../api/audio_codecs:builtin_audio_encoder_factory",
   1023         "../api/crypto:options",
   1024         "../api/environment",
   1025         "../api/environment:environment_factory",
   1026         "../api/test/video:function_video_factory",
   1027         "../api/transport:bitrate_settings",
   1028         "../api/transport:datagram_transport_interface",
   1029         "../api/transport/rtp:rtp_source",
   1030         "../api/units:data_rate",
   1031         "../api/units:time_delta",
   1032         "../api/units:timestamp",
   1033         "../api/video:builtin_video_bitrate_allocator_factory",
   1034         "../api/video:encoded_image",
   1035         "../api/video:recordable_encoded_frame",
   1036         "../api/video:resolution",
   1037         "../api/video:video_bitrate_allocation",
   1038         "../api/video:video_bitrate_allocator",
   1039         "../api/video:video_bitrate_allocator_factory",
   1040         "../api/video:video_codec_constants",
   1041         "../api/video:video_frame",
   1042         "../api/video:video_frame_type",
   1043         "../api/video:video_rtp_headers",
   1044         "../api/video_codecs:scalability_mode",
   1045         "../api/video_codecs:video_codecs_api",
   1046         "../api/video_codecs:video_decoder_factory_template",
   1047         "../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
   1048         "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
   1049         "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
   1050         "../api/video_codecs:video_decoder_factory_template_open_h264_adapter",
   1051         "../api/video_codecs:video_encoder_factory_template",
   1052         "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
   1053         "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
   1054         "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
   1055         "../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
   1056         "../call:call_interfaces",
   1057         "../call:payload_type_picker",
   1058         "../call:video_receive_stream_api",
   1059         "../call:video_send_stream_api",
   1060         "../common_video",
   1061         "../modules/audio_device:mock_audio_device",
   1062         "../modules/audio_mixer:audio_mixer_impl",
   1063         "../modules/audio_processing:mocks",
   1064         "../modules/rtp_rtcp:rtp_rtcp_format",
   1065         "../modules/video_coding:simulcast_test_fixture_impl",
   1066         "../modules/video_coding:video_codec_interface",
   1067         "../modules/video_coding:video_coding_utility",
   1068         "../modules/video_coding:webrtc_h264",
   1069         "../modules/video_coding:webrtc_vp8",
   1070         "../modules/video_coding/svc:scalability_mode_util",
   1071         "../net/dcsctp/public:types",
   1072         "../p2p:p2p_test_utils",
   1073         "../rtc_base:async_packet_socket",
   1074         "../rtc_base:byte_order",
   1075         "../rtc_base:checks",
   1076         "../rtc_base:copy_on_write_buffer",
   1077         "../rtc_base:dscp",
   1078         "../rtc_base:safe_conversions",
   1079         "../rtc_base:socket",
   1080         "../rtc_base:threading",
   1081         "../rtc_base:timeutils",
   1082         "../rtc_base:unique_id_generator",
   1083         "../rtc_base/experiments:min_video_bitrate_experiment",
   1084         "../rtc_base/system:file_wrapper",
   1085         "../system_wrappers",
   1086         "../test:audio_codec_mocks",
   1087         "../test:create_test_environment",
   1088         "../test:create_test_field_trials",
   1089         "../test:fake_video_codecs",
   1090         "../test:rtp_test_utils",
   1091         "../test:test_main",
   1092         "../test:test_support",
   1093         "../test:video_test_common",
   1094         "../test/time_controller",
   1095         "../video/config:encoder_config",
   1096         "../video/config:streams_config",
   1097         "//third_party/abseil-cpp/absl/algorithm:container",
   1098         "//third_party/abseil-cpp/absl/container:inlined_vector",
   1099         "//third_party/abseil-cpp/absl/strings",
   1100         "//third_party/abseil-cpp/absl/strings:string_view",
   1101       ]
   1102 
   1103       if (enable_libaom) {
   1104         defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
   1105       }
   1106 
   1107       sources = [
   1108         "base/codec_comparators_unittest.cc",
   1109         "base/codec_list_unittest.cc",
   1110         "base/codec_unittest.cc",
   1111         "base/media_engine_unittest.cc",
   1112         "base/rtp_utils_unittest.cc",
   1113         "base/sdp_video_format_utils_unittest.cc",
   1114         "base/stream_params_unittest.cc",
   1115         "base/turn_utils_unittest.cc",
   1116         "base/video_adapter_unittest.cc",
   1117         "base/video_broadcaster_unittest.cc",
   1118         "base/video_common_unittest.cc",
   1119         "engine/internal_decoder_factory_unittest.cc",
   1120         "engine/internal_encoder_factory_unittest.cc",
   1121         "engine/simulcast_encoder_adapter_unittest.cc",
   1122         "engine/webrtc_media_engine_unittest.cc",
   1123         "engine/webrtc_video_engine_unittest.cc",
   1124       ]
   1125 
   1126       # TODO(kthelgason): Reenable this test on iOS.
   1127       # See bugs.webrtc.org/5569
   1128       if (!is_ios) {
   1129         sources += [ "engine/webrtc_voice_engine_unittest.cc" ]
   1130       }
   1131 
   1132       if (rtc_opus_support_120ms_ptime) {
   1133         defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=1" ]
   1134       } else {
   1135         defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
   1136       }
   1137 
   1138       data = rtc_media_unittests_resources
   1139 
   1140       if (is_android) {
   1141         shard_timeout = 900
   1142       }
   1143 
   1144       if (is_ios) {
   1145         deps += [ ":rtc_media_unittests_bundle_data" ]
   1146       }
   1147 
   1148       if (rtc_build_dcsctp) {
   1149         sources += [ "sctp/dcsctp_transport_unittest.cc" ]
   1150         deps += [
   1151           ":rtc_data_dcsctp_transport",
   1152           "../net/dcsctp/public:factory",
   1153           "../net/dcsctp/public:mocks",
   1154           "../net/dcsctp/public:socket",
   1155         ]
   1156       }
   1157     }
   1158   }
   1159 }