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 9if (is_android) { 10 import("//build/config/android/config.gni") 11 import("//build/config/android/rules.gni") 12 import("../../webrtc.gni") 13 14 group("android") { 15 if (!build_with_chromium && is_android) { 16 public_deps = [ 17 ":libjingle_peerconnection_jni", 18 ":libjingle_peerconnection_so", 19 ":libwebrtc", 20 ":native_api", 21 ] 22 } 23 } 24 25 ##################### 26 # Aggregate targets # 27 ##################### 28 29 dist_jar("libwebrtc") { 30 _target_dir_name = get_label_info(":$target_name", "dir") 31 output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar" 32 direct_deps_only = true 33 use_unprocessed_jars = true 34 requires_android = true 35 no_build_hooks = true 36 37 deps = [ 38 ":audio_api_java", 39 ":base_java", 40 ":builtin_audio_codecs_java", 41 ":camera_java", 42 ":default_video_codec_factory_java", 43 ":filevideo_java", 44 ":hwcodecs_java", 45 ":java_audio_device_module_java", 46 ":libaom_av1_encoder_java", 47 ":libjingle_peerconnection_java", 48 ":libjingle_peerconnection_metrics_default_java", 49 ":libvpx_vp8_java", 50 ":libvpx_vp9_java", 51 ":logging_java", 52 ":peerconnection_java", 53 ":screencapturer_java", 54 ":surfaceviewrenderer_java", 55 ":swcodecs_java", 56 ":video_api_java", 57 ":video_java", 58 "../../modules/audio_device:audio_device_java", 59 "../../rtc_base:base_java", 60 ] 61 } 62 63 # The native API is currently experimental and may change without notice. 64 group("native_api") { 65 deps = [ 66 ":native_api_audio_device_module", 67 ":native_api_base", 68 ":native_api_codecs", 69 ":native_api_jni", 70 ":native_api_network_monitor", 71 ":native_api_peerconnection", 72 ":native_api_stacktrace", 73 ":native_api_video", 74 ] 75 } 76 77 # Old target that pulls in everything. This will be going away in the future, 78 # clients should depend on individual video_java etc. targets instead. 79 rtc_android_library("libjingle_peerconnection_java") { 80 sources = [ "src/java/org/webrtc/Empty.java" ] 81 82 deps = [ 83 ":audio_api_java", 84 ":base_java", 85 ":camera_java", 86 ":filevideo_java", 87 ":hwcodecs_java", 88 ":java_audio_device_module_java", 89 ":peerconnection_java", 90 ":screencapturer_java", 91 ":surfaceviewrenderer_java", 92 ":video_api_java", 93 ":video_java", 94 "//modules/audio_device:audio_device_java", 95 "//rtc_base:base_java", 96 ] 97 } 98 99 rtc_android_library("libjingle_peerconnection_metrics_default_java") { 100 sources = [ "api/org/webrtc/Metrics.java" ] 101 102 deps = [ 103 ":base_java", 104 ":libjingle_peerconnection_java", 105 "../../rtc_base:base_java", 106 ] 107 } 108 109 rtc_library("libjingle_peerconnection_jni") { 110 visibility = [ "*" ] 111 allow_poison = [ 112 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. 113 "software_video_codecs", # TODO(bugs.webrtc.org/7925): Remove. 114 ] 115 public_deps = [ # no-presubmit-check TODO(webrtc:8603) 116 ":audio_jni", 117 ":base_jni", 118 ":builtin_audio_codecs_jni", 119 ":default_video_codec_factory_jni", 120 ":java_audio_device_module_jni", 121 ":peerconnection_jni", 122 ":video_jni", 123 "../../api:create_peerconnection_factory", 124 ] 125 } 126 127 rtc_shared_library("libjingle_peerconnection_so") { 128 sources = [ "src/jni/jni_onload.cc" ] 129 130 suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ] 131 configs += [ "//build/config/android:hide_all_but_jni" ] 132 ldflags = [ 133 "-lEGL", 134 "-Wl,--build-id", 135 ] 136 137 deps = [ 138 ":libjingle_peerconnection_jni", 139 ":libjingle_peerconnection_metrics_default_jni", 140 ":native_api_jni", 141 ":video_egl_jni", 142 "../../pc:libjingle_peerconnection", 143 "../../rtc_base", 144 ] 145 output_extension = "so" 146 } 147 148 ####################### 149 # Public Java modules # 150 ####################### 151 152 # Core targets. 153 154 # TODO(sakal): Extract files from this target to releveant subtargets, video, audio etc. 155 rtc_android_library("base_java") { 156 sources = [ 157 "api/org/webrtc/Predicate.java", 158 "api/org/webrtc/RefCounted.java", 159 "src/java/org/webrtc/CalledByNative.java", 160 "src/java/org/webrtc/CalledByNativeUnchecked.java", 161 "src/java/org/webrtc/Histogram.java", 162 "src/java/org/webrtc/JniCommon.java", 163 "src/java/org/webrtc/JniHelper.java", 164 "src/java/org/webrtc/RefCountDelegate.java", 165 "src/java/org/webrtc/WebRtcClassLoader.java", 166 ] 167 168 deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] 169 } 170 171 rtc_android_library("audio_api_java") { 172 visibility = [ "*" ] 173 sources = [ 174 "api/org/webrtc/AudioDecoderFactoryFactory.java", 175 "api/org/webrtc/AudioEncoderFactoryFactory.java", 176 "api/org/webrtc/audio/AudioDeviceModule.java", 177 ] 178 179 deps = [ 180 ":base_java", 181 "//rtc_base:base_java", 182 ] 183 } 184 185 rtc_android_library("video_api_java") { 186 visibility = [ "*" ] 187 sources = [ 188 "api/org/webrtc/CapturerObserver.java", 189 "api/org/webrtc/EncodedImage.java", 190 "api/org/webrtc/VideoCodecInfo.java", 191 "api/org/webrtc/VideoCodecStatus.java", 192 "api/org/webrtc/VideoDecoder.java", 193 "api/org/webrtc/VideoDecoderFactory.java", 194 "api/org/webrtc/VideoEncoder.java", 195 "api/org/webrtc/VideoEncoderFactory.java", 196 "api/org/webrtc/VideoFrame.java", 197 "api/org/webrtc/VideoSink.java", 198 ] 199 200 deps = [ 201 ":base_java", 202 "//rtc_base:base_java", 203 "//third_party/androidx:androidx_annotation_annotation_java", 204 ] 205 srcjar_deps = [ "//api/video:video_frame_enums" ] 206 } 207 208 rtc_android_library("video_java") { 209 visibility = [ "*" ] 210 sources = [ 211 "api/org/webrtc/EglBase.java", 212 "api/org/webrtc/EglBase10.java", 213 "api/org/webrtc/EglBase14.java", 214 "api/org/webrtc/EglRenderer.java", 215 "api/org/webrtc/GlRectDrawer.java", 216 "api/org/webrtc/GlShader.java", 217 "api/org/webrtc/GlTextureFrameBuffer.java", 218 "api/org/webrtc/GlUtil.java", 219 "api/org/webrtc/JavaI420Buffer.java", 220 "api/org/webrtc/RendererCommon.java", 221 "api/org/webrtc/SurfaceTextureHelper.java", 222 "api/org/webrtc/TextureBufferImpl.java", 223 "api/org/webrtc/TimestampAligner.java", 224 "api/org/webrtc/VideoCapturer.java", 225 "api/org/webrtc/VideoDecoderFallback.java", 226 "api/org/webrtc/VideoEncoderFallback.java", 227 "api/org/webrtc/VideoFrameDrawer.java", 228 "api/org/webrtc/WrappedNativeVideoDecoder.java", 229 "api/org/webrtc/WrappedNativeVideoEncoder.java", 230 "api/org/webrtc/YuvConverter.java", 231 "api/org/webrtc/YuvHelper.java", 232 "src/java/org/webrtc/EglBase10Impl.java", 233 "src/java/org/webrtc/EglBase14Impl.java", 234 "src/java/org/webrtc/GlGenericDrawer.java", 235 "src/java/org/webrtc/H264Utils.java", 236 "src/java/org/webrtc/NV21Buffer.java", 237 "src/java/org/webrtc/VideoCodecMimeType.java", 238 "src/java/org/webrtc/VideoDecoderWrapper.java", 239 "src/java/org/webrtc/VideoEncoderWrapper.java", 240 "src/java/org/webrtc/WrappedNativeI420Buffer.java", 241 ] 242 243 deps = [ 244 ":base_java", 245 ":video_api_java", 246 "//rtc_base:base_java", 247 "//third_party/androidx:androidx_annotation_annotation_java", 248 ] 249 } 250 251 rtc_android_library("peerconnection_java") { 252 visibility = [ "*" ] 253 sources = [ 254 "api/org/webrtc/AddIceObserver.java", 255 "api/org/webrtc/AudioProcessingFactory.java", 256 "api/org/webrtc/AudioSource.java", 257 "api/org/webrtc/AudioTrack.java", 258 "api/org/webrtc/CallSessionFileRotatingLogSink.java", 259 "api/org/webrtc/CandidatePairChangeEvent.java", 260 "api/org/webrtc/CryptoOptions.java", 261 "api/org/webrtc/DataChannel.java", 262 "api/org/webrtc/DtmfSender.java", 263 "api/org/webrtc/FecControllerFactoryFactoryInterface.java", 264 "api/org/webrtc/FrameDecryptor.java", 265 "api/org/webrtc/FrameEncryptor.java", 266 "api/org/webrtc/IceCandidate.java", 267 "api/org/webrtc/IceCandidateErrorEvent.java", 268 "api/org/webrtc/MediaConstraints.java", 269 "api/org/webrtc/MediaSource.java", 270 "api/org/webrtc/MediaStream.java", 271 "api/org/webrtc/MediaStreamTrack.java", 272 "api/org/webrtc/NativeLibraryLoader.java", 273 "api/org/webrtc/NativePeerConnectionFactory.java", 274 "api/org/webrtc/NetEqFactoryFactory.java", 275 "api/org/webrtc/NetworkChangeDetector.java", 276 "api/org/webrtc/NetworkChangeDetectorFactory.java", 277 "api/org/webrtc/NetworkControllerFactoryFactory.java", 278 279 # TODO(sakal): Break dependencies and move to base_java. 280 "api/org/webrtc/NetworkMonitor.java", 281 "api/org/webrtc/NetworkMonitorAutoDetect.java", 282 "api/org/webrtc/NetworkStatePredictorFactoryFactory.java", 283 "api/org/webrtc/PeerConnection.java", 284 "api/org/webrtc/PeerConnectionDependencies.java", 285 "api/org/webrtc/PeerConnectionFactory.java", 286 "api/org/webrtc/RTCStats.java", 287 "api/org/webrtc/RTCStatsCollectorCallback.java", 288 "api/org/webrtc/RTCStatsReport.java", 289 "api/org/webrtc/RtcCertificatePem.java", 290 "api/org/webrtc/RtpParameters.java", 291 "api/org/webrtc/RtpReceiver.java", 292 "api/org/webrtc/RtpSender.java", 293 "api/org/webrtc/RtpTransceiver.java", 294 "api/org/webrtc/SSLCertificateVerifier.java", 295 "api/org/webrtc/SdpObserver.java", 296 "api/org/webrtc/SessionDescription.java", 297 "api/org/webrtc/StatsObserver.java", 298 "api/org/webrtc/StatsReport.java", 299 "api/org/webrtc/TurnCustomizer.java", 300 "api/org/webrtc/VideoProcessor.java", 301 "api/org/webrtc/VideoSource.java", 302 "api/org/webrtc/VideoTrack.java", 303 "src/java/org/webrtc/NativeAndroidVideoTrackSource.java", 304 "src/java/org/webrtc/NativeCapturerObserver.java", 305 "src/java/org/webrtc/NativeLibrary.java", 306 ] 307 308 deps = [ 309 ":audio_api_java", 310 ":base_java", 311 ":builtin_audio_codecs_java", 312 ":default_video_codec_factory_java", 313 314 #TODO(bugs.webrtc.org/7452): Make injection mandatory and remove this dep. 315 ":java_audio_device_module_java", 316 ":logging_java", 317 ":swcodecs_java", 318 ":video_api_java", 319 ":video_java", 320 "//modules/audio_device:audio_device_java", 321 "//rtc_base:base_java", 322 "//third_party/androidx:androidx_annotation_annotation_java", 323 ] 324 srcjar_deps = [ 325 "//api:priority_enums", 326 "//rtc_base:network_monitor_enums", 327 ] 328 } 329 330 # Modules, in alphabetical order. 331 332 rtc_android_library("camera_java") { 333 visibility = [ "*" ] 334 sources = [ 335 "api/org/webrtc/Camera1Capturer.java", 336 "api/org/webrtc/Camera1Enumerator.java", 337 "api/org/webrtc/Camera2Capturer.java", 338 "api/org/webrtc/Camera2Enumerator.java", 339 "api/org/webrtc/CameraEnumerationAndroid.java", 340 "api/org/webrtc/CameraEnumerator.java", 341 "api/org/webrtc/CameraVideoCapturer.java", 342 "src/java/org/webrtc/Camera1Session.java", 343 "src/java/org/webrtc/Camera2Session.java", 344 "src/java/org/webrtc/CameraCapturer.java", 345 "src/java/org/webrtc/CameraSession.java", 346 ] 347 348 deps = [ 349 ":base_java", 350 ":video_api_java", 351 ":video_java", 352 "//rtc_base:base_java", 353 "//third_party/androidx:androidx_annotation_annotation_java", 354 ] 355 } 356 357 rtc_android_library("default_video_codec_factory_java") { 358 visibility = [ "*" ] 359 sources = [ 360 "api/org/webrtc/DefaultVideoDecoderFactory.java", 361 "api/org/webrtc/DefaultVideoEncoderFactory.java", 362 ] 363 364 deps = [ 365 ":hwcodecs_java", 366 ":swcodecs_java", 367 ":video_api_java", 368 ":video_java", 369 "//third_party/androidx:androidx_annotation_annotation_java", 370 ] 371 } 372 373 rtc_android_library("filevideo_java") { 374 visibility = [ "*" ] 375 sources = [ 376 "api/org/webrtc/FileVideoCapturer.java", 377 "api/org/webrtc/VideoFileRenderer.java", 378 ] 379 380 deps = [ 381 ":base_java", 382 ":video_api_java", 383 ":video_java", 384 "//rtc_base:base_java", 385 ] 386 } 387 388 rtc_android_library("hwcodecs_java") { 389 visibility = [ "*" ] 390 sources = [ 391 "api/org/webrtc/HardwareVideoDecoderFactory.java", 392 "api/org/webrtc/HardwareVideoEncoderFactory.java", 393 "api/org/webrtc/PlatformSoftwareVideoDecoderFactory.java", 394 "src/java/org/webrtc/AndroidVideoDecoder.java", 395 "src/java/org/webrtc/BaseBitrateAdjuster.java", 396 "src/java/org/webrtc/BitrateAdjuster.java", 397 "src/java/org/webrtc/DynamicBitrateAdjuster.java", 398 "src/java/org/webrtc/FramerateBitrateAdjuster.java", 399 "src/java/org/webrtc/HardwareVideoEncoder.java", 400 "src/java/org/webrtc/MediaCodecUtils.java", 401 "src/java/org/webrtc/MediaCodecVideoDecoderFactory.java", 402 "src/java/org/webrtc/MediaCodecWrapper.java", 403 "src/java/org/webrtc/MediaCodecWrapperFactory.java", 404 "src/java/org/webrtc/MediaCodecWrapperFactoryImpl.java", 405 "src/java/org/webrtc/NV12Buffer.java", 406 ] 407 408 deps = [ 409 ":base_java", 410 ":video_api_java", 411 ":video_java", 412 "//rtc_base:base_java", 413 "//third_party/androidx:androidx_annotation_annotation_java", 414 ] 415 } 416 417 rtc_android_library("java_audio_device_module_java") { 418 visibility = [ "*" ] 419 sources = [ 420 "api/org/webrtc/audio/JavaAudioDeviceModule.java", 421 "src/java/org/webrtc/audio/LowLatencyAudioBufferManager.java", 422 "src/java/org/webrtc/audio/VolumeLogger.java", 423 "src/java/org/webrtc/audio/WebRtcAudioEffects.java", 424 "src/java/org/webrtc/audio/WebRtcAudioManager.java", 425 "src/java/org/webrtc/audio/WebRtcAudioRecord.java", 426 "src/java/org/webrtc/audio/WebRtcAudioTrack.java", 427 "src/java/org/webrtc/audio/WebRtcAudioUtils.java", 428 ] 429 430 deps = [ 431 ":audio_api_java", 432 ":base_java", 433 "//rtc_base:base_java", 434 "//third_party/androidx:androidx_annotation_annotation_java", 435 ] 436 } 437 438 rtc_android_library("builtin_audio_codecs_java") { 439 visibility = [ "*" ] 440 sources = [ 441 "api/org/webrtc/BuiltinAudioDecoderFactoryFactory.java", 442 "api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java", 443 ] 444 445 deps = [ ":audio_api_java" ] 446 } 447 448 rtc_android_library("screencapturer_java") { 449 visibility = [ "*" ] 450 sources = [ "api/org/webrtc/ScreenCapturerAndroid.java" ] 451 452 deps = [ 453 ":video_api_java", 454 ":video_java", 455 "//rtc_base:base_java", 456 "//third_party/androidx:androidx_annotation_annotation_java", 457 ] 458 } 459 460 rtc_android_library("surfaceviewrenderer_java") { 461 visibility = [ "*" ] 462 sources = [ 463 "api/org/webrtc/SurfaceEglRenderer.java", 464 "api/org/webrtc/SurfaceViewRenderer.java", 465 ] 466 467 deps = [ 468 ":base_java", 469 ":video_api_java", 470 ":video_java", 471 "//rtc_base:base_java", 472 ] 473 } 474 475 rtc_android_library("libvpx_vp8_java") { 476 visibility = [ "*" ] 477 sources = [ 478 "api/org/webrtc/LibvpxVp8Decoder.java", 479 "api/org/webrtc/LibvpxVp8Encoder.java", 480 ] 481 deps = [ 482 ":base_java", 483 ":video_api_java", 484 ":video_java", 485 "//rtc_base:base_java", 486 ] 487 } 488 489 rtc_android_library("libvpx_vp9_java") { 490 visibility = [ "*" ] 491 sources = [ 492 "api/org/webrtc/LibvpxVp9Decoder.java", 493 "api/org/webrtc/LibvpxVp9Encoder.java", 494 ] 495 deps = [ 496 ":base_java", 497 ":video_api_java", 498 ":video_java", 499 "//rtc_base:base_java", 500 ] 501 } 502 503 rtc_android_library("libaom_av1_encoder_java") { 504 visibility = [ "*" ] 505 sources = [ "api/org/webrtc/LibaomAv1Encoder.java" ] 506 deps = [ 507 ":base_java", 508 ":video_api_java", 509 ":video_java", 510 "//rtc_base:base_java", 511 ] 512 } 513 514 rtc_android_library("dav1d_java") { 515 visibility = [ "*" ] 516 sources = [ "api/org/webrtc/Dav1dDecoder.java" ] 517 deps = [ ":video_java" ] 518 } 519 520 rtc_android_library("swcodecs_java") { 521 visibility = [ "*" ] 522 sources = [ 523 "api/org/webrtc/SoftwareVideoDecoderFactory.java", 524 "api/org/webrtc/SoftwareVideoEncoderFactory.java", 525 ] 526 527 deps = [ 528 ":base_java", 529 ":dav1d_java", 530 ":libvpx_vp8_java", 531 ":libvpx_vp9_java", 532 ":video_api_java", 533 ":video_java", 534 "//rtc_base:base_java", 535 "//third_party/androidx:androidx_annotation_annotation_java", 536 ] 537 } 538} 539 540if (current_os == "linux" || is_android) { 541 ################################ 542 # JNI targets for Java modules # 543 ################################ 544 545 # Mirrors the order of targets in the section above. 546 547 rtc_library("base_jni") { 548 visibility = [ "*" ] 549 sources = [ 550 "src/jni/android_histogram.cc", 551 "src/jni/android_network_monitor.cc", 552 "src/jni/android_network_monitor.h", 553 "src/jni/jni_common.cc", 554 "src/jni/jni_helpers.cc", 555 "src/jni/jni_helpers.h", 556 "src/jni/pc/audio.h", 557 "src/jni/pc/logging.cc", 558 "src/jni/pc/video.h", 559 "src/jni/scoped_java_ref_counted.cc", 560 "src/jni/scoped_java_ref_counted.h", 561 ] 562 563 deps = [ 564 ":generated_base_jni", 565 ":internal_jni", 566 ":native_api_jni", 567 "../../api:field_trials_view", 568 "../../api:libjingle_peerconnection_api", 569 "../../api:scoped_refptr", 570 "../../api:sequence_checker", 571 "../../api/task_queue:pending_task_safety_flag", 572 "../../modules/audio_processing:api", 573 "../../rtc_base", 574 "../../rtc_base:checks", 575 "../../rtc_base:ip_address", 576 "../../rtc_base:logging", 577 "../../rtc_base:macromagic", 578 "../../rtc_base:refcount", 579 "../../rtc_base:stringutils", 580 "../../rtc_base:threading", 581 "../../system_wrappers:field_trial", 582 "../../system_wrappers:metrics", 583 ] 584 absl_deps = [ 585 "//third_party/abseil-cpp/absl/strings", 586 "//third_party/abseil-cpp/absl/types:optional", 587 ] 588 } 589 590 rtc_library("audio_jni") { 591 visibility = [ "*" ] 592 allow_poison = [ "audio_codecs" ] 593 sources = [ "src/jni/pc/audio.cc" ] 594 595 deps = [ 596 ":base_jni", 597 "../../modules/audio_processing", 598 "../../modules/audio_processing:api", 599 ] 600 } 601 602 rtc_library("builtin_audio_codecs_jni") { 603 visibility = [ "*" ] 604 allow_poison = [ "audio_codecs" ] 605 sources = [ 606 "src/jni/builtin_audio_decoder_factory_factory.cc", 607 "src/jni/builtin_audio_encoder_factory_factory.cc", 608 ] 609 610 deps = [ 611 ":base_jni", 612 ":generated_builtin_audio_codecs_jni", 613 ":native_api_jni", 614 "../../api/audio_codecs:builtin_audio_decoder_factory", 615 "../../api/audio_codecs:builtin_audio_encoder_factory", 616 ] 617 } 618 619 rtc_library("video_jni") { 620 visibility = [ "*" ] 621 sources = [ 622 "src/jni/android_video_track_source.cc", 623 "src/jni/android_video_track_source.h", 624 "src/jni/encoded_image.cc", 625 "src/jni/encoded_image.h", 626 "src/jni/h264_utils.cc", 627 "src/jni/java_i420_buffer.cc", 628 "src/jni/native_capturer_observer.cc", 629 "src/jni/native_capturer_observer.h", 630 "src/jni/nv12_buffer.cc", 631 "src/jni/nv21_buffer.cc", 632 "src/jni/pc/video.cc", 633 "src/jni/timestamp_aligner.cc", 634 "src/jni/video_codec_info.cc", 635 "src/jni/video_codec_info.h", 636 "src/jni/video_codec_status.cc", 637 "src/jni/video_codec_status.h", 638 "src/jni/video_decoder_factory_wrapper.cc", 639 "src/jni/video_decoder_factory_wrapper.h", 640 "src/jni/video_decoder_fallback.cc", 641 "src/jni/video_decoder_wrapper.cc", 642 "src/jni/video_decoder_wrapper.h", 643 "src/jni/video_encoder_factory_wrapper.cc", 644 "src/jni/video_encoder_factory_wrapper.h", 645 "src/jni/video_encoder_fallback.cc", 646 "src/jni/video_encoder_wrapper.cc", 647 "src/jni/video_encoder_wrapper.h", 648 "src/jni/video_sink.cc", 649 "src/jni/video_sink.h", 650 "src/jni/video_track.cc", 651 "src/jni/yuv_helper.cc", 652 ] 653 654 deps = [ 655 ":base_jni", 656 ":generated_video_jni", 657 ":native_api_jni", 658 ":videoframe_jni", 659 "../../api:libjingle_peerconnection_api", 660 "../../api:media_stream_interface", 661 "../../api:sequence_checker", 662 "../../api/task_queue", 663 "../../api/video:encoded_image", 664 "../../api/video:render_resolution", 665 "../../api/video:video_frame", 666 "../../api/video:video_frame_type", 667 "../../api/video:video_rtp_headers", 668 "../../api/video_codecs:rtc_software_fallback_wrappers", 669 "../../api/video_codecs:video_codecs_api", 670 "../../common_video", 671 "../../media:rtc_media_base", 672 "../../modules/video_coding:codec_globals_headers", 673 "../../modules/video_coding:video_codec_interface", 674 "../../modules/video_coding:video_coding_utility", 675 "../../modules/video_coding/svc:scalable_video_controller", 676 "../../rtc_base", 677 "../../rtc_base:checks", 678 "../../rtc_base:logging", 679 "../../rtc_base:race_checker", 680 "../../rtc_base:refcount", 681 "../../rtc_base:rtc_task_queue", 682 "../../rtc_base:safe_conversions", 683 "../../rtc_base:threading", 684 "../../rtc_base:timestamp_aligner", 685 "../../rtc_base:timeutils", 686 "../../rtc_base/synchronization:mutex", 687 "//third_party/libyuv", 688 ] 689 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 690 } 691 692 # Sources here require -lEGL linker flag. It is separated from video_jni 693 # target for backwards compatibility. 694 rtc_library("video_egl_jni") { 695 visibility = [ "*" ] 696 sources = [ "src/jni/egl_base_10_impl.cc" ] 697 deps = [ 698 ":generated_video_egl_jni", 699 ":native_api_jni", 700 ] 701 } 702 703 rtc_library("peerconnection_jni") { 704 # Do not depend on this target externally unless you absolute have to. It is 705 # made public because we don't have a proper NDK yet. Header APIs here are not 706 # considered public and are subject to change. 707 visibility = [ "*" ] 708 709 sources = [ 710 "src/jni/pc/add_ice_candidate_observer.cc", 711 "src/jni/pc/add_ice_candidate_observer.h", 712 "src/jni/pc/android_network_monitor.h", 713 "src/jni/pc/audio_track.cc", 714 "src/jni/pc/call_session_file_rotating_log_sink.cc", 715 "src/jni/pc/crypto_options.cc", 716 "src/jni/pc/crypto_options.h", 717 "src/jni/pc/data_channel.cc", 718 "src/jni/pc/data_channel.h", 719 "src/jni/pc/dtmf_sender.cc", 720 "src/jni/pc/ice_candidate.cc", 721 "src/jni/pc/ice_candidate.h", 722 "src/jni/pc/media_constraints.cc", 723 "src/jni/pc/media_constraints.h", 724 "src/jni/pc/media_source.cc", 725 "src/jni/pc/media_stream.cc", 726 "src/jni/pc/media_stream.h", 727 "src/jni/pc/media_stream_track.cc", 728 "src/jni/pc/media_stream_track.h", 729 "src/jni/pc/owned_factory_and_threads.cc", 730 "src/jni/pc/owned_factory_and_threads.h", 731 "src/jni/pc/peer_connection.cc", 732 "src/jni/pc/peer_connection.h", 733 "src/jni/pc/peer_connection_factory.cc", 734 "src/jni/pc/peer_connection_factory.h", 735 "src/jni/pc/rtc_certificate.cc", 736 "src/jni/pc/rtc_certificate.h", 737 "src/jni/pc/rtc_stats_collector_callback_wrapper.cc", 738 "src/jni/pc/rtc_stats_collector_callback_wrapper.h", 739 "src/jni/pc/rtp_parameters.cc", 740 "src/jni/pc/rtp_parameters.h", 741 "src/jni/pc/rtp_receiver.cc", 742 "src/jni/pc/rtp_receiver.h", 743 "src/jni/pc/rtp_sender.cc", 744 "src/jni/pc/rtp_sender.h", 745 "src/jni/pc/rtp_transceiver.cc", 746 "src/jni/pc/rtp_transceiver.h", 747 "src/jni/pc/sdp_observer.cc", 748 "src/jni/pc/sdp_observer.h", 749 "src/jni/pc/session_description.cc", 750 "src/jni/pc/session_description.h", 751 "src/jni/pc/ssl_certificate_verifier_wrapper.cc", 752 "src/jni/pc/ssl_certificate_verifier_wrapper.h", 753 "src/jni/pc/stats_observer.cc", 754 "src/jni/pc/stats_observer.h", 755 "src/jni/pc/turn_customizer.cc", 756 "src/jni/pc/turn_customizer.h", 757 ] 758 759 deps = [ 760 ":base_jni", 761 ":generated_external_classes_jni", 762 ":generated_peerconnection_jni", 763 ":logging_jni", 764 ":native_api_jni", 765 ":native_api_stacktrace", 766 "..:media_constraints", 767 "../../api:callfactory_api", 768 "../../api:dtmf_sender_interface", 769 "../../api:libjingle_peerconnection_api", 770 "../../api:media_stream_interface", 771 "../../api:rtc_event_log_output_file", 772 "../../api:rtp_parameters", 773 "../../api:rtp_sender_interface", 774 "../../api:turn_customizer", 775 "../../api/crypto:options", 776 "../../api/rtc_event_log:rtc_event_log_factory", 777 "../../api/task_queue:default_task_queue_factory", 778 "../../api/video_codecs:video_codecs_api", 779 "../../call:call_interfaces", 780 "../../media:rtc_audio_video", 781 "../../media:rtc_media_base", 782 "../../modules/audio_device", 783 "../../modules/audio_processing:api", 784 "../../modules/utility", 785 "../../pc:media_stream_observer", 786 "../../pc:webrtc_sdp", 787 "../../rtc_base", 788 "../../rtc_base:checks", 789 "../../rtc_base:event_tracer", 790 "../../rtc_base:logging", 791 "../../rtc_base:refcount", 792 "../../rtc_base:rtc_task_queue", 793 "../../rtc_base:safe_conversions", 794 "../../rtc_base:stringutils", 795 "../../rtc_base:threading", 796 "../../system_wrappers:field_trial", 797 ] 798 absl_deps = [ 799 "//third_party/abseil-cpp/absl/memory", 800 "//third_party/abseil-cpp/absl/types:optional", 801 ] 802 } 803 804 # JNI target for java_audio_device_module_java 805 rtc_library("java_audio_device_module_jni") { 806 visibility = [ "*" ] 807 sources = [ "src/jni/audio_device/java_audio_device_module.cc" ] 808 809 deps = [ 810 ":base_jni", 811 ":generated_java_audio_jni", 812 ":java_audio_device_module", 813 ] 814 } 815 816 rtc_library("libjingle_peerconnection_metrics_default_jni") { 817 visibility = [ "*" ] 818 sources = [ "src/jni/android_metrics.cc" ] 819 deps = [ 820 ":base_jni", 821 ":generated_metrics_jni", 822 ":native_api_jni", 823 ":peerconnection_jni", 824 "../../pc:peerconnection", 825 "../../rtc_base:stringutils", 826 "../../system_wrappers:metrics", 827 ] 828 } 829 830 rtc_library("default_video_codec_factory_jni") { 831 visibility = [ "*" ] 832 allow_poison = [ "software_video_codecs" ] 833 deps = [ 834 ":swcodecs_jni", 835 ":video_jni", 836 ] 837 } 838 839 rtc_library("libvpx_vp8_jni") { 840 visibility = [ "*" ] 841 allow_poison = [ "software_video_codecs" ] 842 sources = [ "src/jni/vp8_codec.cc" ] 843 deps = [ 844 ":base_jni", 845 ":generated_libvpx_vp8_jni", 846 ":video_jni", 847 "../../modules/video_coding:webrtc_vp8", 848 ] 849 } 850 851 rtc_library("libvpx_vp9_jni") { 852 visibility = [ "*" ] 853 allow_poison = [ "software_video_codecs" ] 854 sources = [ "src/jni/vp9_codec.cc" ] 855 deps = [ 856 ":base_jni", 857 ":generated_libvpx_vp9_jni", 858 ":video_jni", 859 "../../modules/video_coding:webrtc_vp9", 860 ] 861 } 862 863 rtc_library("libaom_av1_encoder_jni") { 864 visibility = [ "*" ] 865 allow_poison = [ "software_video_codecs" ] 866 sources = [ "src/jni/libaom_av1_encoder.cc" ] 867 deps = [ 868 ":base_jni", 869 ":generated_libaom_av1_encoder_jni", 870 ":video_jni", 871 "../../modules/video_coding/codecs/av1:libaom_av1_encoder", 872 ] 873 } 874 875 rtc_library("dav1d_av1_jni") { 876 visibility = [ "*" ] 877 allow_poison = [ "software_video_codecs" ] 878 sources = [ "src/jni/dav1d_codec.cc" ] 879 deps = [ 880 ":base_jni", 881 ":generated_dav1d_jni", 882 ":video_jni", 883 "../../modules/video_coding/codecs/av1:dav1d_decoder", 884 ] 885 } 886 887 rtc_library("swcodecs_jni") { 888 visibility = [ "*" ] 889 allow_poison = [ "software_video_codecs" ] 890 sources = [ 891 "src/jni/software_video_decoder_factory.cc", 892 "src/jni/software_video_encoder_factory.cc", 893 ] 894 deps = [ 895 ":base_jni", 896 ":generated_swcodecs_jni", 897 ":libvpx_vp8_jni", 898 ":libvpx_vp9_jni", 899 ":native_api_jni", 900 ":video_jni", 901 "../../api/video_codecs:builtin_video_decoder_factory", 902 "../../api/video_codecs:builtin_video_encoder_factory", 903 "../../api/video_codecs:video_codecs_api", 904 ] 905 } 906 907 ###################### 908 # Native API targets # 909 ###################### 910 911 # Core targets. 912 913 # JNI helpers that are also needed from internal JNI code. Cannot depend on any 914 # other JNI targets than internal_jni. 915 rtc_library("native_api_jni") { 916 visibility = [ "*" ] 917 sources = [ 918 "native_api/jni/class_loader.cc", 919 "native_api/jni/java_types.cc", 920 "native_api/jni/jvm.cc", 921 "src/jni/jni_generator_helper.cc", 922 "src/jni/jni_generator_helper.h", 923 ] 924 925 public = [ 926 "native_api/jni/class_loader.h", 927 "native_api/jni/java_types.h", 928 "native_api/jni/jni_int_wrapper.h", 929 "native_api/jni/jvm.h", 930 "native_api/jni/scoped_java_ref.h", 931 ] 932 933 deps = [ 934 ":generated_external_classes_jni", 935 ":generated_native_api_jni", 936 ":internal_jni", 937 "../../api:sequence_checker", 938 "//api:array_view", 939 "//rtc_base:checks", 940 ] 941 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 942 } 943 944 rtc_library("native_api_base") { 945 visibility = [ "*" ] 946 sources = [ 947 "native_api/base/init.cc", 948 "native_api/base/init.h", 949 ] 950 951 deps = [ 952 ":base_jni", 953 ":native_api_jni", 954 "//rtc_base", 955 "//rtc_base:checks", 956 ] 957 } 958 959 # Modules, in alphabetical order. 960 961 rtc_library("native_api_audio_device_module") { 962 visibility = [ "*" ] 963 964 sources = [ 965 "native_api/audio_device_module/audio_device_android.cc", 966 "native_api/audio_device_module/audio_device_android.h", 967 ] 968 969 deps = [ 970 ":base_jni", 971 ":java_audio_device_module", 972 ":opensles_audio_device_module", 973 "../../api:scoped_refptr", 974 "../../modules/audio_device", 975 "../../rtc_base:checks", 976 "../../rtc_base:logging", 977 "../../rtc_base:refcount", 978 "../../system_wrappers", 979 "../../system_wrappers:metrics", 980 ] 981 if (rtc_enable_android_aaudio) { 982 deps += [ ":aaudio_audio_device_module" ] 983 } 984 } 985 986 # API for wrapping Java VideoDecoderFactory/VideoEncoderFactory classes to C++ 987 # objects. 988 rtc_library("native_api_codecs") { 989 visibility = [ "*" ] 990 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 991 sources = [ 992 "native_api/codecs/wrapper.cc", 993 "native_api/codecs/wrapper.h", 994 ] 995 996 deps = [ 997 ":base_jni", 998 ":native_api_jni", 999 ":video_jni", 1000 "//api/video_codecs:video_codecs_api", 1001 "//rtc_base:checks", 1002 ] 1003 } 1004 1005 rtc_library("native_api_network_monitor") { 1006 visibility = [ "*" ] 1007 sources = [ 1008 "native_api/network_monitor/network_monitor.cc", 1009 "native_api/network_monitor/network_monitor.h", 1010 ] 1011 1012 deps = [ 1013 ":base_jni", 1014 "../../rtc_base:threading", 1015 "//rtc_base", 1016 ] 1017 } 1018 1019 # API for creating Java PeerConnectionFactory from C++ equivalents. 1020 rtc_library("native_api_peerconnection") { 1021 visibility = [ "*" ] 1022 sources = [ 1023 "native_api/peerconnection/peer_connection_factory.cc", 1024 "native_api/peerconnection/peer_connection_factory.h", 1025 ] 1026 deps = [ 1027 ":base_jni", 1028 ":peerconnection_jni", 1029 "../../rtc_base:threading", 1030 "//api:libjingle_peerconnection_api", 1031 "//api/video_codecs:video_codecs_api", 1032 "//rtc_base", 1033 ] 1034 } 1035 1036 # API for capturing and printing native stacktraces. 1037 rtc_library("native_api_stacktrace") { 1038 visibility = [ "*" ] 1039 sources = [ 1040 "native_api/stacktrace/stacktrace.cc", 1041 "native_api/stacktrace/stacktrace.h", 1042 ] 1043 1044 deps = [ 1045 "../../rtc_base:criticalsection", 1046 "../../rtc_base:logging", 1047 "../../rtc_base:stringutils", 1048 "../../rtc_base/synchronization:mutex", 1049 ] 1050 absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ] 1051 } 1052 1053 # API for creating C++ wrapper implementations of api/mediastreaminterface.h 1054 # video interfaces from their Java equivalents. 1055 rtc_library("native_api_video") { 1056 visibility = [ "*" ] 1057 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 1058 sources = [ 1059 "native_api/video/video_source.cc", 1060 "native_api/video/video_source.h", 1061 "native_api/video/wrapper.cc", 1062 "native_api/video/wrapper.h", 1063 ] 1064 deps = [ 1065 ":native_api_jni", 1066 ":video_jni", 1067 ":videoframe_jni", 1068 "../../rtc_base:refcount", 1069 "../../rtc_base:threading", 1070 "//api:libjingle_peerconnection_api", 1071 "//api:media_stream_interface", 1072 "//api/video:video_frame", 1073 "//api/video:video_rtp_headers", 1074 "//rtc_base", 1075 ] 1076 } 1077 1078 #################### 1079 # Internal targets # 1080 #################### 1081 1082 rtc_android_library("logging_java") { 1083 sources = [ "src/java/org/webrtc/JNILogging.java" ] 1084 1085 deps = [ 1086 ":base_java", 1087 "//rtc_base:base_java", 1088 ] 1089 } 1090 1091 # Internal code that is needed by native_api_jni. The code cannot be placed in 1092 # base_jni because native_api_jni depends on the code (and base_jni depends on 1093 # native_api_jni). 1094 rtc_library("internal_jni") { 1095 sources = [ 1096 "src/jni/jvm.cc", 1097 "src/jni/jvm.h", 1098 ] 1099 1100 deps = [ "../../rtc_base:checks" ] 1101 } 1102 1103 rtc_library("videoframe_jni") { 1104 sources = [ 1105 "src/jni/video_frame.cc", 1106 "src/jni/video_frame.h", 1107 "src/jni/wrapped_native_i420_buffer.cc", 1108 "src/jni/wrapped_native_i420_buffer.h", 1109 ] 1110 1111 deps = [ 1112 ":base_jni", 1113 ":generated_video_jni", 1114 ":native_api_jni", 1115 "../../api:scoped_refptr", 1116 "../../api/video:video_frame", 1117 "../../api/video:video_rtp_headers", 1118 "../../common_video", 1119 "../../rtc_base", 1120 "../../rtc_base:checks", 1121 "../../rtc_base:refcount", 1122 "../../rtc_base:timeutils", 1123 ] 1124 } 1125 1126 rtc_library("logging_jni") { 1127 visibility = [ "*" ] 1128 sources = [ 1129 "src/jni/logging/log_sink.cc", 1130 "src/jni/logging/log_sink.h", 1131 ] 1132 1133 deps = [ 1134 ":base_jni", 1135 ":generated_logging_jni", 1136 ":native_api_jni", 1137 "../../rtc_base", 1138 "../../rtc_base:logging", 1139 ] 1140 1141 absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] 1142 } 1143 1144 rtc_library("audio_device_module_base") { 1145 visibility = [ "*" ] 1146 1147 sources = [ 1148 "src/jni/audio_device/audio_common.h", 1149 "src/jni/audio_device/audio_device_module.cc", 1150 "src/jni/audio_device/audio_device_module.h", 1151 ] 1152 1153 deps = [ 1154 ":base_jni", 1155 ":generated_audio_device_module_base_jni", 1156 ":native_api_jni", 1157 "../../api:make_ref_counted", 1158 "../../api:sequence_checker", 1159 "../../api/task_queue", 1160 "../../api/task_queue:default_task_queue_factory", 1161 "../../modules/audio_device:audio_device_api", 1162 "../../modules/audio_device:audio_device_buffer", 1163 "../../rtc_base:checks", 1164 "../../rtc_base:logging", 1165 "../../system_wrappers:metrics", 1166 ] 1167 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 1168 } 1169 1170 rtc_library("java_audio_device_module") { 1171 visibility = [ "*" ] 1172 1173 sources = [ 1174 "src/jni/audio_device/audio_record_jni.cc", 1175 "src/jni/audio_device/audio_record_jni.h", 1176 "src/jni/audio_device/audio_track_jni.cc", 1177 "src/jni/audio_device/audio_track_jni.h", 1178 ] 1179 deps = [ 1180 ":audio_device_module_base", 1181 ":base_jni", 1182 ":generated_java_audio_device_module_native_jni", 1183 "../../api:sequence_checker", 1184 "../../modules/audio_device", 1185 "../../modules/audio_device:audio_device_buffer", 1186 "../../rtc_base:checks", 1187 "../../rtc_base:logging", 1188 "../../rtc_base:macromagic", 1189 "../../rtc_base:platform_thread", 1190 "../../rtc_base:timeutils", 1191 "../../system_wrappers:field_trial", 1192 "../../system_wrappers:metrics", 1193 ] 1194 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 1195 } 1196 1197 if (rtc_enable_android_aaudio) { 1198 rtc_library("aaudio_audio_device_module") { 1199 visibility = [ "*" ] 1200 defines = [ "WEBRTC_AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO" ] 1201 sources = [ 1202 "src/jni/audio_device/aaudio_player.cc", 1203 "src/jni/audio_device/aaudio_player.h", 1204 "src/jni/audio_device/aaudio_recorder.cc", 1205 "src/jni/audio_device/aaudio_recorder.h", 1206 "src/jni/audio_device/aaudio_wrapper.cc", 1207 "src/jni/audio_device/aaudio_wrapper.h", 1208 ] 1209 libs = [ "aaudio" ] 1210 deps = [ 1211 ":audio_device_module_base", 1212 ":base_jni", 1213 "../../api:array_view", 1214 "../../api:sequence_checker", 1215 "../../api/task_queue", 1216 "../../modules/audio_device", 1217 "../../modules/audio_device:audio_device_buffer", 1218 "../../rtc_base:checks", 1219 "../../rtc_base:logging", 1220 "../../rtc_base:macromagic", 1221 "../../rtc_base:stringutils", 1222 "../../rtc_base:timeutils", 1223 "../../system_wrappers", 1224 ] 1225 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 1226 } 1227 } 1228 1229 rtc_library("opensles_audio_device_module") { 1230 visibility = [ "*" ] 1231 sources = [ 1232 "src/jni/audio_device/opensles_common.cc", 1233 "src/jni/audio_device/opensles_common.h", 1234 "src/jni/audio_device/opensles_player.cc", 1235 "src/jni/audio_device/opensles_player.h", 1236 "src/jni/audio_device/opensles_recorder.cc", 1237 "src/jni/audio_device/opensles_recorder.h", 1238 ] 1239 libs = [ "OpenSLES" ] 1240 deps = [ 1241 ":audio_device_module_base", 1242 ":base_jni", 1243 "../../api:array_view", 1244 "../../api:refcountedbase", 1245 "../../api:scoped_refptr", 1246 "../../api:sequence_checker", 1247 "../../modules/audio_device", 1248 "../../modules/audio_device:audio_device_buffer", 1249 "../../rtc_base:checks", 1250 "../../rtc_base:logging", 1251 "../../rtc_base:macromagic", 1252 "../../rtc_base:platform_thread", 1253 "../../rtc_base:timeutils", 1254 ] 1255 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 1256 } 1257 1258 ######################### 1259 # Generated JNI targets # 1260 ######################### 1261 1262 generate_jar_jni("generated_external_classes_jni") { 1263 classes = [ 1264 "java/lang/Integer.class", 1265 "java/lang/Double.class", 1266 "java/lang/Long.class", 1267 "java/lang/Iterable.class", 1268 "java/util/Iterator.class", 1269 "java/lang/Boolean.class", 1270 "java/math/BigInteger.class", 1271 "java/util/Map.class", 1272 "java/util/LinkedHashMap.class", 1273 "java/util/ArrayList.class", 1274 "java/lang/Enum.class", 1275 ] 1276 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1277 } 1278 1279 generate_jni("generated_metrics_jni") { 1280 sources = [ "api/org/webrtc/Metrics.java" ] 1281 namespace = "webrtc::jni" 1282 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1283 } 1284 1285 # Generated JNI for public JNI targets, matching order of targets 1286 1287 generate_jni("generated_base_jni") { 1288 sources = [ 1289 "api/org/webrtc/NetworkChangeDetector.java", 1290 "api/org/webrtc/NetworkMonitor.java", 1291 "api/org/webrtc/RefCounted.java", 1292 "src/java/org/webrtc/Histogram.java", 1293 "src/java/org/webrtc/JniCommon.java", 1294 ] 1295 namespace = "webrtc::jni" 1296 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1297 } 1298 1299 generate_jni("generated_video_jni") { 1300 sources = [ 1301 "api/org/webrtc/EncodedImage.java", 1302 "api/org/webrtc/JavaI420Buffer.java", 1303 "api/org/webrtc/TimestampAligner.java", 1304 "api/org/webrtc/VideoCodecInfo.java", 1305 "api/org/webrtc/VideoCodecStatus.java", 1306 "api/org/webrtc/VideoDecoder.java", 1307 "api/org/webrtc/VideoDecoderFactory.java", 1308 "api/org/webrtc/VideoDecoderFallback.java", 1309 "api/org/webrtc/VideoEncoder.java", 1310 "api/org/webrtc/VideoEncoderFactory.java", 1311 "api/org/webrtc/VideoEncoderFallback.java", 1312 "api/org/webrtc/VideoFrame.java", 1313 "api/org/webrtc/VideoSink.java", 1314 "api/org/webrtc/VideoTrack.java", 1315 "api/org/webrtc/YuvHelper.java", 1316 "src/java/org/webrtc/H264Utils.java", 1317 "src/java/org/webrtc/NV12Buffer.java", 1318 "src/java/org/webrtc/NV21Buffer.java", 1319 "src/java/org/webrtc/NativeAndroidVideoTrackSource.java", 1320 "src/java/org/webrtc/NativeCapturerObserver.java", 1321 "src/java/org/webrtc/VideoDecoderWrapper.java", 1322 "src/java/org/webrtc/VideoEncoderWrapper.java", 1323 "src/java/org/webrtc/WrappedNativeI420Buffer.java", 1324 ] 1325 namespace = "webrtc::jni" 1326 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1327 } 1328 1329 generate_jni("generated_video_egl_jni") { 1330 sources = [ "src/java/org/webrtc/EglBase10Impl.java" ] 1331 namespace = "webrtc::jni" 1332 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1333 } 1334 1335 generate_jni("generated_libvpx_vp8_jni") { 1336 sources = [ 1337 "api/org/webrtc/LibvpxVp8Decoder.java", 1338 "api/org/webrtc/LibvpxVp8Encoder.java", 1339 ] 1340 1341 namespace = "webrtc::jni" 1342 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1343 } 1344 1345 generate_jni("generated_libvpx_vp9_jni") { 1346 sources = [ 1347 "api/org/webrtc/LibvpxVp9Decoder.java", 1348 "api/org/webrtc/LibvpxVp9Encoder.java", 1349 ] 1350 1351 namespace = "webrtc::jni" 1352 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1353 } 1354 1355 generate_jni("generated_libaom_av1_encoder_jni") { 1356 sources = [ "api/org/webrtc/LibaomAv1Encoder.java" ] 1357 1358 namespace = "webrtc::jni" 1359 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1360 } 1361 1362 generate_jni("generated_dav1d_jni") { 1363 sources = [ "api/org/webrtc/Dav1dDecoder.java" ] 1364 1365 namespace = "webrtc::jni" 1366 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1367 } 1368 1369 generate_jni("generated_swcodecs_jni") { 1370 sources = [ 1371 "api/org/webrtc/SoftwareVideoDecoderFactory.java", 1372 "api/org/webrtc/SoftwareVideoEncoderFactory.java", 1373 ] 1374 1375 namespace = "webrtc::jni" 1376 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1377 } 1378 1379 generate_jni("generated_peerconnection_jni") { 1380 sources = [ 1381 "api/org/webrtc/AddIceObserver.java", 1382 "api/org/webrtc/AudioTrack.java", 1383 "api/org/webrtc/CallSessionFileRotatingLogSink.java", 1384 "api/org/webrtc/CandidatePairChangeEvent.java", 1385 "api/org/webrtc/CryptoOptions.java", 1386 "api/org/webrtc/DataChannel.java", 1387 "api/org/webrtc/DtmfSender.java", 1388 "api/org/webrtc/IceCandidate.java", 1389 "api/org/webrtc/IceCandidateErrorEvent.java", 1390 "api/org/webrtc/MediaConstraints.java", 1391 "api/org/webrtc/MediaSource.java", 1392 "api/org/webrtc/MediaStream.java", 1393 "api/org/webrtc/MediaStreamTrack.java", 1394 "api/org/webrtc/PeerConnection.java", 1395 "api/org/webrtc/PeerConnectionFactory.java", 1396 "api/org/webrtc/RTCStats.java", 1397 "api/org/webrtc/RTCStatsCollectorCallback.java", 1398 "api/org/webrtc/RTCStatsReport.java", 1399 "api/org/webrtc/RtcCertificatePem.java", 1400 "api/org/webrtc/RtpParameters.java", 1401 "api/org/webrtc/RtpReceiver.java", 1402 "api/org/webrtc/RtpSender.java", 1403 "api/org/webrtc/RtpTransceiver.java", 1404 "api/org/webrtc/SSLCertificateVerifier.java", 1405 "api/org/webrtc/SdpObserver.java", 1406 "api/org/webrtc/SessionDescription.java", 1407 "api/org/webrtc/StatsObserver.java", 1408 "api/org/webrtc/StatsReport.java", 1409 "api/org/webrtc/TurnCustomizer.java", 1410 ] 1411 namespace = "webrtc::jni" 1412 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1413 } 1414 1415 generate_jni("generated_java_audio_jni") { 1416 sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ] 1417 namespace = "webrtc::jni" 1418 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1419 } 1420 1421 generate_jni("generated_builtin_audio_codecs_jni") { 1422 sources = [ 1423 "api/org/webrtc/BuiltinAudioDecoderFactoryFactory.java", 1424 "api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java", 1425 ] 1426 namespace = "webrtc::jni" 1427 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1428 } 1429 1430 # Generated JNI for native API targets 1431 1432 generate_jni("generated_native_api_jni") { 1433 sources = [ 1434 "src/java/org/webrtc/JniHelper.java", 1435 "src/java/org/webrtc/WebRtcClassLoader.java", 1436 ] 1437 namespace = "webrtc::jni" 1438 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1439 } 1440 1441 # Generated JNI for internal targets. 1442 1443 generate_jni("generated_logging_jni") { 1444 sources = [ "src/java/org/webrtc/JNILogging.java" ] 1445 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1446 } 1447 1448 generate_jni("generated_audio_device_module_base_jni") { 1449 sources = [ "src/java/org/webrtc/audio/WebRtcAudioManager.java" ] 1450 namespace = "webrtc::jni" 1451 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1452 } 1453 1454 generate_jni("generated_java_audio_device_module_native_jni") { 1455 sources = [ 1456 "src/java/org/webrtc/audio/WebRtcAudioRecord.java", 1457 "src/java/org/webrtc/audio/WebRtcAudioTrack.java", 1458 ] 1459 namespace = "webrtc::jni" 1460 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1461 } 1462} 1463 1464if (is_android) { 1465 ################ 1466 # Test targets # 1467 ################ 1468 1469 if (rtc_include_tests) { 1470 rtc_instrumentation_test_apk("android_instrumentation_test_apk") { 1471 apk_name = "android_instrumentation_test_apk" 1472 android_manifest = "instrumentationtests/AndroidManifest.xml" 1473 min_sdk_version = 21 1474 target_sdk_version = 21 1475 1476 sources = [ 1477 "instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java", 1478 "instrumentationtests/src/org/webrtc/BuiltinAudioCodecsFactoryFactoryTest.java", 1479 "instrumentationtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java", 1480 "instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java", 1481 "instrumentationtests/src/org/webrtc/Camera2CapturerTest.java", 1482 "instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java", 1483 "instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java", 1484 "instrumentationtests/src/org/webrtc/EglRendererTest.java", 1485 "instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java", 1486 "instrumentationtests/src/org/webrtc/GlRectDrawerTest.java", 1487 "instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java", 1488 "instrumentationtests/src/org/webrtc/LoggableTest.java", 1489 "instrumentationtests/src/org/webrtc/NetworkMonitorTest.java", 1490 "instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java", 1491 "instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java", 1492 "instrumentationtests/src/org/webrtc/PeerConnectionTest.java", 1493 "instrumentationtests/src/org/webrtc/RendererCommonTest.java", 1494 "instrumentationtests/src/org/webrtc/RtcCertificatePemTest.java", 1495 "instrumentationtests/src/org/webrtc/RtpSenderTest.java", 1496 "instrumentationtests/src/org/webrtc/RtpTransceiverTest.java", 1497 "instrumentationtests/src/org/webrtc/SoftwareVideoDecoderFactoryTest.java", 1498 "instrumentationtests/src/org/webrtc/SoftwareVideoEncoderFactoryTest.java", 1499 "instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java", 1500 "instrumentationtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java", 1501 "instrumentationtests/src/org/webrtc/TestConstants.java", 1502 "instrumentationtests/src/org/webrtc/TimestampAlignerTest.java", 1503 "instrumentationtests/src/org/webrtc/VideoFileRendererTest.java", 1504 "instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java", 1505 "instrumentationtests/src/org/webrtc/VideoTrackTest.java", 1506 "instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java", 1507 "instrumentationtests/src/org/webrtc/YuvHelperTest.java", 1508 ] 1509 1510 data = [ "../../sdk/android/instrumentationtests/src/org/webrtc/capturetestvideo.y4m" ] 1511 1512 deps = [ 1513 ":audio_api_java", 1514 ":base_java", 1515 ":builtin_audio_codecs_java", 1516 ":camera_java", 1517 ":default_video_codec_factory_java", 1518 ":filevideo_java", 1519 ":hwcodecs_java", 1520 ":libjingle_peerconnection_java", 1521 ":libjingle_peerconnection_metrics_default_java", 1522 ":peerconnection_java", 1523 ":surfaceviewrenderer_java", 1524 ":swcodecs_java", 1525 ":video_api_java", 1526 ":video_java", 1527 "//base:base_java_test_support", 1528 "//rtc_base:base_java", 1529 "//third_party/android_deps:guava_android_java", 1530 "//third_party/android_support_test_runner:rules_java", 1531 "//third_party/android_support_test_runner:runner_java", 1532 "//third_party/androidx:androidx_annotation_annotation_java", 1533 "//third_party/androidx:androidx_test_runner_java", 1534 "//third_party/google-truth:google_truth_java", 1535 "//third_party/hamcrest:hamcrest_java", 1536 "//third_party/hamcrest:hamcrest_library_java", 1537 "//third_party/junit", 1538 "//third_party/mockito:mockito_java", 1539 ] 1540 1541 shared_libraries = [ 1542 "../../sdk/android:libjingle_peerconnection_instrumentationtests_so", 1543 ] 1544 } 1545 } 1546 1547 rtc_shared_library("libjingle_peerconnection_instrumentationtests_so") { 1548 testonly = true 1549 sources = [ "src/jni/jni_onload.cc" ] 1550 1551 suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ] 1552 configs += [ "//build/config/android:hide_all_but_jni" ] 1553 1554 deps = [ 1555 ":instrumentationtests_jni", 1556 ":libjingle_peerconnection_jni", 1557 ":libjingle_peerconnection_metrics_default_jni", 1558 ":native_api_jni", 1559 "../../pc:libjingle_peerconnection", 1560 "../../rtc_base", 1561 ] 1562 output_extension = "so" 1563 } 1564 1565 rtc_library("instrumentationtests_jni") { 1566 testonly = true 1567 sources = [ 1568 "instrumentationtests/loggable_test.cc", 1569 "instrumentationtests/video_frame_buffer_test.cc", 1570 ] 1571 1572 deps = [ 1573 ":base_jni", 1574 ":native_api_jni", 1575 ":videoframe_jni", 1576 "../../api/video:video_frame", 1577 "../../rtc_base:logging", 1578 ] 1579 } 1580 1581 rtc_library("native_test_jni_onload") { 1582 testonly = true 1583 1584 sources = [ "native_unittests/test_jni_onload.cc" ] 1585 1586 deps = [ 1587 ":base_jni", 1588 ":internal_jni", 1589 ":native_api_base", 1590 ":native_api_jni", 1591 "../../rtc_base:checks", 1592 ] 1593 } 1594 1595 rtc_library("native_unittests") { 1596 testonly = true 1597 1598 sources = [ 1599 "native_unittests/android_network_monitor_unittest.cc", 1600 "native_unittests/application_context_provider.cc", 1601 "native_unittests/application_context_provider.h", 1602 "native_unittests/audio_device/audio_device_unittest.cc", 1603 "native_unittests/codecs/wrapper_unittest.cc", 1604 "native_unittests/java_types_unittest.cc", 1605 "native_unittests/peerconnection/peer_connection_factory_unittest.cc", 1606 "native_unittests/stacktrace/stacktrace_unittest.cc", 1607 "native_unittests/video/video_source_unittest.cc", 1608 ] 1609 1610 data = [ 1611 "../../resources/audio_device/audio_short44.pcm", 1612 "../../resources/audio_device/audio_short48.pcm", 1613 ] 1614 1615 deps = [ 1616 ":audio_device_module_base", 1617 ":audio_jni", 1618 ":base_jni", 1619 ":generated_native_unittests_jni", 1620 ":native_api_audio_device_module", 1621 ":native_api_base", 1622 ":native_api_codecs", 1623 ":native_api_jni", 1624 ":native_api_peerconnection", 1625 ":native_api_stacktrace", 1626 ":native_api_video", 1627 ":native_test_jni_onload", 1628 ":opensles_audio_device_module", 1629 ":video_jni", 1630 "../../api:field_trials_view", 1631 "../../api:scoped_refptr", 1632 "../../api/rtc_event_log:rtc_event_log_factory", 1633 "../../api/task_queue:default_task_queue_factory", 1634 "../../api/video:video_frame", 1635 "../../api/video:video_rtp_headers", 1636 "../../media:rtc_audio_video", 1637 "../../media:rtc_internal_video_codecs", 1638 "../../media:rtc_media_base", 1639 "../../media:rtc_media_engine_defaults", 1640 "../../modules/audio_device", 1641 "../../modules/audio_device:mock_audio_device", 1642 "../../modules/audio_processing:api", 1643 "../../modules/utility", 1644 "../../pc:libjingle_peerconnection", 1645 "../../rtc_base:checks", 1646 "../../rtc_base:ip_address", 1647 "../../rtc_base:logging", 1648 "../../rtc_base:macromagic", 1649 "../../rtc_base:platform_thread", 1650 "../../rtc_base:rtc_base", 1651 "../../rtc_base:rtc_event", 1652 "../../rtc_base:stringutils", 1653 "../../rtc_base:threading", 1654 "../../rtc_base:timeutils", 1655 "../../rtc_base/synchronization:mutex", 1656 "../../rtc_base/system:inline", 1657 "../../system_wrappers", 1658 "../../test:fileutils", 1659 "../../test:scoped_key_value_config", 1660 "../../test:test_support", 1661 "../../testing/gtest", 1662 ] 1663 absl_deps = [ 1664 "//third_party/abseil-cpp/absl/memory", 1665 "//third_party/abseil-cpp/absl/strings", 1666 ] 1667 } 1668 1669 rtc_android_library("native_unittests_java") { 1670 testonly = true 1671 1672 sources = [ 1673 "native_unittests/org/webrtc/ApplicationContextProvider.java", 1674 "native_unittests/org/webrtc/BuildInfo.java", 1675 "native_unittests/org/webrtc/CodecsWrapperTestHelper.java", 1676 "native_unittests/org/webrtc/FakeVideoEncoder.java", 1677 "native_unittests/org/webrtc/JavaTypesTestHelper.java", 1678 "native_unittests/org/webrtc/JavaVideoSourceTestHelper.java", 1679 "native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java", 1680 ] 1681 1682 deps = [ 1683 ":base_java", 1684 ":java_audio_device_module_java", 1685 ":peerconnection_java", 1686 ":video_api_java", 1687 ":video_java", 1688 "../../rtc_base:base_java", 1689 "//third_party/android_support_test_runner:runner_java", 1690 "//third_party/androidx:androidx_test_runner_java", 1691 ] 1692 } 1693 1694 generate_jni("generated_native_unittests_jni") { 1695 testonly = true 1696 1697 sources = [ 1698 "native_unittests/org/webrtc/ApplicationContextProvider.java", 1699 "native_unittests/org/webrtc/BuildInfo.java", 1700 "native_unittests/org/webrtc/CodecsWrapperTestHelper.java", 1701 "native_unittests/org/webrtc/JavaTypesTestHelper.java", 1702 "native_unittests/org/webrtc/JavaVideoSourceTestHelper.java", 1703 "native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java", 1704 ] 1705 namespace = "webrtc::jni" 1706 jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" 1707 } 1708 1709 robolectric_binary("android_sdk_junit_tests") { 1710 sources = [ 1711 "tests/src/org/webrtc/AndroidVideoDecoderTest.java", 1712 "tests/src/org/webrtc/CameraEnumerationTest.java", 1713 "tests/src/org/webrtc/CodecTestHelper.java", 1714 "tests/src/org/webrtc/CryptoOptionsTest.java", 1715 "tests/src/org/webrtc/FakeMediaCodecWrapper.java", 1716 "tests/src/org/webrtc/FramerateBitrateAdjusterTest.java", 1717 "tests/src/org/webrtc/GlGenericDrawerTest.java", 1718 "tests/src/org/webrtc/HardwareVideoEncoderTest.java", 1719 "tests/src/org/webrtc/IceCandidateTest.java", 1720 "tests/src/org/webrtc/RefCountDelegateTest.java", 1721 "tests/src/org/webrtc/ScalingSettingsTest.java", 1722 "tests/src/org/webrtc/audio/LowLatencyAudioBufferManagerTest.java", 1723 ] 1724 1725 deps = [ 1726 ":base_java", 1727 ":camera_java", 1728 ":hwcodecs_java", 1729 ":java_audio_device_module_java", 1730 ":libjingle_peerconnection_java", 1731 ":peerconnection_java", 1732 ":video_api_java", 1733 ":video_java", 1734 "//third_party/android_deps:guava_android_java", 1735 "//third_party/androidx:androidx_annotation_annotation_java", 1736 "//third_party/androidx:androidx_test_runner_java", 1737 "//third_party/google-truth:google_truth_java", 1738 ] 1739 1740 additional_jar_files = [ [ 1741 "tests/resources/robolectric.properties", 1742 "robolectric.properties", 1743 ] ] 1744 } 1745} 1746