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