webrtc/sdk/android/BUILD.gn
Magnus Jedvert 003211c5da Android: Rename AudioDeviceModule to JavaAudioDeviceModule
The class called AudioDeviceModule today is an implementation of a
future interface. We want to reserve the name AudioDeviceModule for
the actual interface. The implementation class has been renamed to
JavaAudioDeviceModule. 'Java' here refers to the fact that the
implementation is using android.media.AudioRecord as input and
android.media.AudioTrack as output, and this is opposed to native
AudioDeviceModule implementations such as OpenSLES and AAudio.

Bug: webrtc:7452
Change-Id: Ifc243c2e169b12a50128ee3252f06d574aa7b358
Reviewed-on: https://webrtc-review.googlesource.com/65400
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22673}
2018-03-29 10:55:37 +00:00

1162 lines
35 KiB
Text

# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import("../../webrtc.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
group("android") {
if (!build_with_chromium && is_android) {
public_deps = [
":libjingle_peerconnection_datachannelonly_so",
":libjingle_peerconnection_jni",
":libjingle_peerconnection_so",
":libwebrtc",
":native_api",
]
}
}
config("libjingle_peerconnection_jni_warnings_config") {
# The warnings below are enabled by default. Since GN orders compiler flags
# for a target before flags from configs, the only way to disable such
# warnings is by having them in a separate config, loaded from the target.
if (!is_win) {
cflags = [
"-Wno-sign-compare",
"-Wno-unused-variable",
]
}
}
generate_jni("generated_base_jni") {
sources = [
"api/org/webrtc/NetworkMonitor.java",
"api/org/webrtc/NetworkMonitorAutoDetect.java",
"src/java/org/webrtc/Histogram.java",
"src/java/org/webrtc/JniCommon.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jar_jni("generated_external_classes_jni") {
classes = [
"java/lang/Integer.class",
"java/lang/Double.class",
"java/lang/Long.class",
"java/lang/Iterable.class",
"java/util/Iterator.class",
"java/lang/Boolean.class",
"java/math/BigInteger.class",
"java/util/Map.class",
"java/util/LinkedHashMap.class",
"java/util/ArrayList.class",
"java/lang/Enum.class",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
# Internal code that is needed by native_api_jni. The code cannot be placed in
# base_jni because native_api_jni depends on the code (and base_jni depends on
# native_api_jni).
rtc_source_set("internal_jni") {
sources = [
"src/jni/jvm.cc",
"src/jni/jvm.h",
]
deps = [
"../../rtc_base:checks",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
}
rtc_source_set("base_jni") {
visibility = [ "*" ]
sources = [
"src/jni/androidhistogram.cc",
"src/jni/androidnetworkmonitor.cc",
"src/jni/androidnetworkmonitor.h",
"src/jni/class_loader.h",
"src/jni/classreferenceholder.h",
"src/jni/jni_common.cc",
"src/jni/jni_helpers.cc",
"src/jni/jni_helpers.h",
"src/jni/pc/audio.h",
"src/jni/pc/media.h",
"src/jni/pc/video.h",
]
deps = [
":generated_base_jni",
":internal_jni",
":native_api_jni",
"../../api:libjingle_peerconnection_api",
"../../api:optional",
"../../rtc_base:checks",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
"../../system_wrappers:metrics_api",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
}
rtc_static_library("audio_jni") {
sources = [
"src/jni/pc/audio.cc",
]
deps = [
":base_jni",
"../../api/audio_codecs:builtin_audio_decoder_factory",
"../../api/audio_codecs:builtin_audio_encoder_factory",
"../../modules/audio_processing:audio_processing",
"../../rtc_base:rtc_base_approved",
]
}
rtc_source_set("native_api_audio_device_module") {
visibility = [ "*" ]
sources = [
"native_api/audio_device_module/audio_device_android.cc",
"native_api/audio_device_module/audio_device_android.h",
]
deps = [
":audio_device_jni",
":base_jni",
"../../modules/audio_device:audio_device",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"../../system_wrappers",
"../../system_wrappers:metrics_api",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_source_set("audio_device_jni") {
visibility = [ "*" ]
sources = [
"src/jni/audio_device/audio_common.h",
"src/jni/audio_device/audio_device_module.cc",
"src/jni/audio_device/audio_device_module.h",
"src/jni/audio_device/audio_manager.cc",
"src/jni/audio_device/audio_manager.h",
"src/jni/audio_device/audio_record_jni.cc",
"src/jni/audio_device/audio_record_jni.h",
"src/jni/audio_device/audio_track_jni.cc",
"src/jni/audio_device/audio_track_jni.h",
"src/jni/audio_device/build_info.cc",
"src/jni/audio_device/build_info.h",
"src/jni/audio_device/opensles_common.cc",
"src/jni/audio_device/opensles_common.h",
"src/jni/audio_device/opensles_player.cc",
"src/jni/audio_device/opensles_player.h",
"src/jni/audio_device/opensles_recorder.cc",
"src/jni/audio_device/opensles_recorder.h",
]
libs = [ "OpenSLES" ]
if (rtc_enable_android_aaudio) {
defines = [ "AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO" ]
sources += [
"src/jni/audio_device/aaudio_player.cc",
"src/jni/audio_device/aaudio_player.h",
"src/jni/audio_device/aaudio_recorder.cc",
"src/jni/audio_device/aaudio_recorder.h",
"src/jni/audio_device/aaudio_wrapper.cc",
"src/jni/audio_device/aaudio_wrapper.h",
]
libs += [ "aaudio" ]
}
deps = [
":base_jni",
":generated_audio_jni",
":native_api_jni",
"../../api:array_view",
"../../api:optional",
"../../modules/audio_device:audio_device",
"../../modules/audio_device:audio_device_buffer",
"../../modules/utility:utility",
"../../rtc_base:checks",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
"../../system_wrappers",
"../../system_wrappers:metrics_api",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_static_library("null_audio_jni") {
sources = [
"src/jni/pc/null_audio.cc",
]
deps = [
":base_jni",
]
}
generate_jni("generated_audio_jni") {
sources = [
"src/java/org/webrtc/audio/BuildInfo.java",
"src/java/org/webrtc/audio/WebRtcAudioManager.java",
"src/java/org/webrtc/audio/WebRtcAudioRecord.java",
"src/java/org/webrtc/audio/WebRtcAudioTrack.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_video_jni") {
sources = [
"api/org/webrtc/EncodedImage.java",
"api/org/webrtc/MediaCodecVideoDecoder.java",
"api/org/webrtc/MediaCodecVideoEncoder.java",
"api/org/webrtc/SurfaceTextureHelper.java",
"api/org/webrtc/VideoCodecInfo.java",
"api/org/webrtc/VideoCodecStatus.java",
"api/org/webrtc/VideoDecoder.java",
"api/org/webrtc/VideoDecoderFactory.java",
"api/org/webrtc/VideoDecoderFallback.java",
"api/org/webrtc/VideoEncoder.java",
"api/org/webrtc/VideoEncoderFactory.java",
"api/org/webrtc/VideoEncoderFallback.java",
"api/org/webrtc/VideoFrame.java",
"api/org/webrtc/VideoRenderer.java",
"api/org/webrtc/VideoSink.java",
"api/org/webrtc/VideoSource.java",
"api/org/webrtc/VideoTrack.java",
"api/org/webrtc/YuvHelper.java",
"src/java/org/webrtc/AndroidVideoTrackSourceObserver.java",
"src/java/org/webrtc/EglBase14.java",
"src/java/org/webrtc/NV12Buffer.java",
"src/java/org/webrtc/NV21Buffer.java",
"src/java/org/webrtc/VideoDecoderWrapper.java",
"src/java/org/webrtc/VideoEncoderWrapper.java",
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
]
if (rtc_use_builtin_sw_codecs) {
sources += [ "api/org/webrtc/HardwareVideoEncoderFactory.java" ] # TODO(andersc): This currently depends on SoftwareVideoEncoderFactory
}
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_static_library("video_jni") {
sources = []
deps = []
sources += [
"src/jni/androidvideotracksource.cc",
"src/jni/androidvideotracksource.h",
"src/jni/encodedimage.cc",
"src/jni/encodedimage.h",
"src/jni/jni_generator_helper.h",
"src/jni/nv12buffer.cc",
"src/jni/nv21buffer.cc",
"src/jni/pc/video.cc",
"src/jni/surfacetexturehelper.cc",
"src/jni/surfacetexturehelper.h",
"src/jni/video_renderer.cc",
"src/jni/videocodecinfo.cc",
"src/jni/videocodecinfo.h",
"src/jni/videocodecstatus.cc",
"src/jni/videocodecstatus.h",
"src/jni/videodecoderfactorywrapper.cc",
"src/jni/videodecoderfactorywrapper.h",
"src/jni/videodecoderfallback.cc",
"src/jni/videodecoderwrapper.cc",
"src/jni/videodecoderwrapper.h",
"src/jni/videoencoderfactorywrapper.cc",
"src/jni/videoencoderfactorywrapper.h",
"src/jni/videoencoderfallback.cc",
"src/jni/videoencoderwrapper.cc",
"src/jni/videoencoderwrapper.h",
"src/jni/videoframe.cc",
"src/jni/videoframe.h",
"src/jni/videosink.cc",
"src/jni/videosink.h",
"src/jni/videotrack.cc",
"src/jni/wrapped_native_i420_buffer.cc",
"src/jni/wrapped_native_i420_buffer.h",
"src/jni/wrappednativecodec.cc",
"src/jni/wrappednativecodec.h",
"src/jni/yuvhelper.cc",
]
configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
# TODO(jschuh): Bug 1348: fix this warning.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
if (is_win) {
cflags += [
"/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
"/wd4389", # signed/unsigned mismatch.
]
}
if (rtc_use_builtin_sw_codecs) {
sources += [
"src/jni/androidmediacodeccommon.h",
"src/jni/androidmediadecoder.cc",
"src/jni/androidmediadecoder_jni.h",
"src/jni/androidmediaencoder.cc",
"src/jni/androidmediaencoder_jni.h",
"src/jni/hardwarevideoencoderfactory.cc",
]
deps += [
":vp8_jni",
":vp9_jni",
"../../media:rtc_internal_video_codecs",
]
}
deps += [
":base_jni",
":generated_video_jni",
":native_api_jni",
"../..:webrtc_common",
"../../api:libjingle_peerconnection_api",
"../../api:video_frame_api",
"../../api/video_codecs:video_codecs_api",
"../../common_video:common_video",
"../../media:rtc_audio_video",
"../../media:rtc_h264_profile_id",
"../../media:rtc_media_base",
"../../media:rtc_software_fallback_wrappers",
"../../modules:module_api",
"../../modules/utility:utility",
"../../modules/video_coding:codec_globals_headers",
"../../modules/video_coding:video_codec_interface",
"../../modules/video_coding:video_coding_utility",
"../../rtc_base:checks",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:sequenced_task_checker",
"../../rtc_base:weak_ptr",
"../../rtc_base/memory:aligned_malloc",
"../../system_wrappers:field_trial_api",
"//third_party/libyuv",
]
}
rtc_static_library("null_video_jni") {
sources = [
"src/jni/pc/null_video.cc",
]
deps = [
":base_jni",
]
}
generate_jni("generated_vp8_jni") {
sources = [
"src/java/org/webrtc/VP8Decoder.java",
"src/java/org/webrtc/VP8Encoder.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_static_library("vp8_jni") {
sources = [
"src/jni/vp8codec.cc",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
deps = [
":base_jni",
":generated_vp8_jni",
"../../modules/video_coding:webrtc_vp8",
]
}
generate_jni("generated_vp9_jni") {
sources = [
"src/java/org/webrtc/VP9Decoder.java",
"src/java/org/webrtc/VP9Encoder.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_static_library("vp9_jni") {
sources = [
"src/jni/vp9codec.cc",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
deps = [
":base_jni",
":generated_vp9_jni",
"../../modules/video_coding:webrtc_vp9",
]
}
rtc_static_library("media_jni") {
sources = [
"src/jni/pc/media.cc",
]
deps = [
":base_jni",
"../../api:callfactory_api",
"../../api/video_codecs:video_codecs_api",
"../../call:call_interfaces",
"../../logging:rtc_event_log_api",
"../../media:rtc_audio_video",
"../../modules/audio_device:audio_device",
"../../modules/audio_processing:audio_processing",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
}
rtc_static_library("null_media_jni") {
sources = [
"src/jni/pc/null_media.cc",
]
deps = [
":base_jni",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
}
generate_jni("generated_peerconnection_jni") {
sources = [
"api/org/webrtc/AudioTrack.java",
"api/org/webrtc/CallSessionFileRotatingLogSink.java",
"api/org/webrtc/DataChannel.java",
"api/org/webrtc/DtmfSender.java",
"api/org/webrtc/IceCandidate.java",
"api/org/webrtc/MediaConstraints.java",
"api/org/webrtc/MediaSource.java",
"api/org/webrtc/MediaStream.java",
"api/org/webrtc/MediaStreamTrack.java",
"api/org/webrtc/PeerConnection.java",
"api/org/webrtc/PeerConnectionFactory.java",
"api/org/webrtc/RTCStats.java",
"api/org/webrtc/RTCStatsCollectorCallback.java",
"api/org/webrtc/RTCStatsReport.java",
"api/org/webrtc/RtpParameters.java",
"api/org/webrtc/RtpReceiver.java",
"api/org/webrtc/RtpSender.java",
"api/org/webrtc/RtpTransceiver.java",
"api/org/webrtc/SdpObserver.java",
"api/org/webrtc/SessionDescription.java",
"api/org/webrtc/StatsObserver.java",
"api/org/webrtc/StatsReport.java",
"api/org/webrtc/TurnCustomizer.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_static_library("peerconnection_jni") {
# Do not depend on this target externally unless you absolute have to. It is
# made public because we don't have a proper NDK yet. Header APIs here are not
# considered public and are subject to change.
visibility = [ "*" ]
sources = [
"src/jni/androidnetworkmonitor_jni.h",
"src/jni/pc/androidnetworkmonitor.h",
"src/jni/pc/audiotrack.cc",
"src/jni/pc/callsessionfilerotatinglogsink.cc",
"src/jni/pc/datachannel.cc",
"src/jni/pc/datachannel.h",
"src/jni/pc/dtmfsender.cc",
"src/jni/pc/icecandidate.cc",
"src/jni/pc/icecandidate.h",
"src/jni/pc/logging.cc",
"src/jni/pc/mediaconstraints.cc",
"src/jni/pc/mediaconstraints.h",
"src/jni/pc/mediasource.cc",
"src/jni/pc/mediastream.cc",
"src/jni/pc/mediastream.h",
"src/jni/pc/mediastreamtrack.cc",
"src/jni/pc/mediastreamtrack.h",
"src/jni/pc/ownedfactoryandthreads.cc",
"src/jni/pc/ownedfactoryandthreads.h",
"src/jni/pc/peerconnection.cc",
"src/jni/pc/peerconnection.h",
"src/jni/pc/peerconnectionfactory.cc",
"src/jni/pc/peerconnectionfactory.h",
"src/jni/pc/rtcstatscollectorcallbackwrapper.cc",
"src/jni/pc/rtcstatscollectorcallbackwrapper.h",
"src/jni/pc/rtpparameters.cc",
"src/jni/pc/rtpparameters.h",
"src/jni/pc/rtpreceiver.cc",
"src/jni/pc/rtpreceiver.h",
"src/jni/pc/rtpsender.cc",
"src/jni/pc/rtpsender.h",
"src/jni/pc/rtptransceiver.cc",
"src/jni/pc/rtptransceiver.h",
"src/jni/pc/sdpobserver.cc",
"src/jni/pc/sdpobserver.h",
"src/jni/pc/sessiondescription.cc",
"src/jni/pc/sessiondescription.h",
"src/jni/pc/statsobserver.cc",
"src/jni/pc/statsobserver.h",
"src/jni/pc/turncustomizer.cc",
"src/jni/pc/turncustomizer.h",
]
configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
# TODO(jschuh): Bug 1348: fix this warning.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
if (is_win) {
cflags += [
"/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
"/wd4389", # signed/unsigned mismatch.
]
}
deps = [
":audio_device_jni",
":base_jni",
":generated_external_classes_jni",
":generated_peerconnection_jni",
":native_api_jni",
"../..:webrtc_common",
"../../api:libjingle_peerconnection_api",
"../../api/video_codecs:video_codecs_api",
"../../logging:rtc_event_log_api",
"../../logging:rtc_event_log_impl_base",
"../../media:rtc_data",
"../../media:rtc_media_base",
"../../modules/audio_device:audio_device",
"../../modules/utility:utility",
"../../pc:peerconnection",
"../../rtc_base:checks",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:stringutils",
"../../system_wrappers:field_trial_api",
]
}
rtc_static_library("libjingle_peerconnection_jni") {
visibility = [ "*" ]
public_deps = [
":audio_jni",
":base_jni",
":media_jni",
":peerconnection_jni",
":video_jni",
"../../pc:create_pc_factory",
]
}
generate_jni("generated_metrics_jni") {
sources = [
"api/org/webrtc/Metrics.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_static_library("libjingle_peerconnection_metrics_default_jni") {
visibility = [ "*" ]
sources = [
"src/jni/androidmetrics.cc",
]
configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
deps = [
":base_jni",
":generated_metrics_jni",
":native_api_jni",
":peerconnection_jni",
"../../pc:peerconnection",
"../../system_wrappers:field_trial_default",
"../../system_wrappers:metrics_api",
"../../system_wrappers:metrics_default",
"../../system_wrappers:runtime_enabled_features_default",
]
}
# The modular build targets can be used to build WebRTC with different
# functionalities. The users can choose either the real implemenation or the
# null implementation of the audio/video modules based on their requirments.
rtc_shared_library("libjingle_peerconnection_datachannelonly_so") {
sources = [
"src/jni/jni_onload.cc",
]
suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
deps = [
":base_jni",
":libjingle_peerconnection_metrics_default_jni",
":null_audio_jni",
":null_media_jni",
":null_video_jni",
":peerconnection_jni",
"../../pc:peerconnection",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
]
output_extension = "so"
}
rtc_shared_library("libjingle_peerconnection_so") {
sources = [
"src/jni/jni_onload.cc",
]
suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
deps = [
":libjingle_peerconnection_jni",
":libjingle_peerconnection_metrics_default_jni",
"../../pc:libjingle_peerconnection",
"../../rtc_base:rtc_base",
]
output_extension = "so"
}
dist_jar("libwebrtc") {
_target_dir_name = get_label_info(":$target_name", "dir")
output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar"
direct_deps_only = true
use_unprocessed_jars = true
requires_android = true
no_build_hooks = true
deps = [
":base_java",
":hwcodecs_java",
":libjingle_peerconnection_java",
":libjingle_peerconnection_metrics_default_java",
"../../modules/audio_device:audio_device_java",
"../../rtc_base:base_java",
]
if (rtc_use_builtin_sw_codecs) {
deps += [ ":swcodecs_java" ]
}
}
# TODO(sakal): Extract files from this target to releveant subtargets, video, audio etc.
rtc_android_library("base_java") {
java_files = [
"api/org/webrtc/AudioProcessingFactory.java",
"api/org/webrtc/Camera1Capturer.java",
"api/org/webrtc/Camera1Enumerator.java",
"api/org/webrtc/Camera2Capturer.java",
"api/org/webrtc/Camera2Enumerator.java",
"api/org/webrtc/CameraEnumerationAndroid.java",
"api/org/webrtc/CameraEnumerator.java",
"api/org/webrtc/CameraVideoCapturer.java",
"api/org/webrtc/EglBase.java",
"api/org/webrtc/EglRenderer.java",
"api/org/webrtc/EncodedImage.java",
"api/org/webrtc/FileVideoCapturer.java",
"api/org/webrtc/GlRectDrawer.java",
"api/org/webrtc/GlShader.java",
"api/org/webrtc/GlTextureFrameBuffer.java",
"api/org/webrtc/GlUtil.java",
"api/org/webrtc/JavaI420Buffer.java",
"api/org/webrtc/RendererCommon.java",
"api/org/webrtc/ScreenCapturerAndroid.java",
"api/org/webrtc/SurfaceEglRenderer.java",
"api/org/webrtc/SurfaceTextureHelper.java",
"api/org/webrtc/SurfaceViewRenderer.java",
"api/org/webrtc/VideoCapturer.java",
"api/org/webrtc/VideoCodecInfo.java",
"api/org/webrtc/VideoCodecStatus.java",
"api/org/webrtc/VideoDecoder.java",
"api/org/webrtc/VideoDecoderFactory.java",
"api/org/webrtc/VideoDecoderFallback.java",
"api/org/webrtc/VideoEncoder.java",
"api/org/webrtc/VideoEncoderFactory.java",
"api/org/webrtc/VideoEncoderFallback.java",
"api/org/webrtc/VideoFileRenderer.java",
"api/org/webrtc/VideoFrame.java",
"api/org/webrtc/VideoFrameDrawer.java",
"api/org/webrtc/VideoRenderer.java",
"api/org/webrtc/VideoSink.java",
"api/org/webrtc/YuvConverter.java",
"api/org/webrtc/YuvHelper.java",
"api/org/webrtc/audio/JavaAudioDeviceModule.java",
"src/java/org/webrtc/AndroidVideoTrackSourceObserver.java",
"src/java/org/webrtc/CalledByNative.java",
"src/java/org/webrtc/CalledByNativeUnchecked.java",
"src/java/org/webrtc/JNINamespace.java",
"src/java/org/webrtc/Camera1Session.java",
"src/java/org/webrtc/Camera2Session.java",
"src/java/org/webrtc/CameraCapturer.java",
"src/java/org/webrtc/CameraSession.java",
"src/java/org/webrtc/WebRtcClassLoader.java",
"src/java/org/webrtc/JniHelper.java",
"src/java/org/webrtc/EglBase10.java",
"src/java/org/webrtc/EglBase14.java",
"src/java/org/webrtc/Histogram.java",
"src/java/org/webrtc/JniCommon.java",
"src/java/org/webrtc/NativeClassQualifiedName.java",
"src/java/org/webrtc/NV12Buffer.java",
"src/java/org/webrtc/NV21Buffer.java",
"src/java/org/webrtc/TextureBufferImpl.java",
"src/java/org/webrtc/VideoCodecType.java",
"src/java/org/webrtc/VideoDecoderWrapper.java",
"src/java/org/webrtc/VideoEncoderWrapper.java",
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
"src/java/org/webrtc/audio/BuildInfo.java",
"src/java/org/webrtc/audio/WebRtcAudioEffects.java",
"src/java/org/webrtc/audio/WebRtcAudioManager.java",
"src/java/org/webrtc/audio/WebRtcAudioRecord.java",
"src/java/org/webrtc/audio/WebRtcAudioTrack.java",
"src/java/org/webrtc/audio/WebRtcAudioUtils.java",
]
deps = [
"//rtc_base:base_java",
]
}
if (rtc_use_builtin_sw_codecs) {
rtc_android_library("swcodecs_java") {
java_files = [
"api/org/webrtc/SoftwareVideoDecoderFactory.java",
"api/org/webrtc/SoftwareVideoEncoderFactory.java",
"src/java/org/webrtc/VP8Encoder.java",
"src/java/org/webrtc/VP8Decoder.java",
"src/java/org/webrtc/VP9Encoder.java",
"src/java/org/webrtc/VP9Decoder.java",
]
deps = [
":base_java",
"//rtc_base:base_java",
]
}
}
rtc_android_library("hwcodecs_java") {
java_files = [
"src/java/org/webrtc/BaseBitrateAdjuster.java",
"src/java/org/webrtc/BitrateAdjuster.java",
"src/java/org/webrtc/DynamicBitrateAdjuster.java",
"src/java/org/webrtc/FramerateBitrateAdjuster.java",
"src/java/org/webrtc/HardwareVideoDecoder.java",
"src/java/org/webrtc/HardwareVideoEncoder.java",
"src/java/org/webrtc/MediaCodecUtils.java",
]
deps = [
":base_java",
"//rtc_base:base_java",
]
if (rtc_use_builtin_sw_codecs) {
java_files += [
"api/org/webrtc/HardwareVideoDecoderFactory.java", # TODO(andersc): make this not depend on SoftwareVideoDecoderFactory
"api/org/webrtc/HardwareVideoEncoderFactory.java", # TODO(andersc): make this not depend on SoftwareVideoEncoderFactory
]
deps += [ ":swcodecs_java" ]
}
}
rtc_android_library("libjingle_peerconnection_java") {
java_files = [
"api/org/webrtc/AudioSource.java",
"api/org/webrtc/AudioTrack.java",
"api/org/webrtc/CallSessionFileRotatingLogSink.java",
"api/org/webrtc/DataChannel.java",
"api/org/webrtc/DefaultVideoDecoderFactory.java",
"api/org/webrtc/DefaultVideoEncoderFactory.java",
"api/org/webrtc/DtmfSender.java",
"api/org/webrtc/FecControllerFactoryFactoryInterface.java",
"api/org/webrtc/IceCandidate.java",
"api/org/webrtc/MediaCodecVideoDecoder.java",
"api/org/webrtc/MediaCodecVideoEncoder.java",
"api/org/webrtc/MediaConstraints.java",
"api/org/webrtc/MediaSource.java",
"api/org/webrtc/MediaStream.java",
"api/org/webrtc/MediaStreamTrack.java",
"api/org/webrtc/NativeLibraryLoader.java",
"api/org/webrtc/NativePeerConnectionFactory.java",
"api/org/webrtc/NetworkMonitor.java", # TODDO(sakal): Break dependencies and move to base_java.
"api/org/webrtc/NetworkMonitorAutoDetect.java", # TODDO(sakal): Break dependencies and move to base_java.
"api/org/webrtc/PeerConnection.java",
"api/org/webrtc/PeerConnectionFactory.java",
"api/org/webrtc/RTCStats.java",
"api/org/webrtc/RTCStatsCollectorCallback.java",
"api/org/webrtc/RTCStatsReport.java",
"api/org/webrtc/RtpParameters.java",
"api/org/webrtc/RtpReceiver.java",
"api/org/webrtc/RtpSender.java",
"api/org/webrtc/RtpTransceiver.java",
"api/org/webrtc/SdpObserver.java",
"api/org/webrtc/SessionDescription.java",
"api/org/webrtc/StatsObserver.java",
"api/org/webrtc/StatsReport.java",
"api/org/webrtc/TurnCustomizer.java",
"api/org/webrtc/VideoSource.java",
"api/org/webrtc/VideoTrack.java",
"src/java/org/webrtc/NativeLibrary.java",
]
deps = [
":base_java",
":hwcodecs_java",
"//modules/audio_device:audio_device_java",
"//rtc_base:base_java",
]
if (rtc_use_builtin_sw_codecs) {
deps += [ ":swcodecs_java" ]
}
}
rtc_android_library("libjingle_peerconnection_metrics_default_java") {
java_files = [ "api/org/webrtc/Metrics.java" ]
deps = [
":base_java",
":libjingle_peerconnection_java",
"../../rtc_base:base_java",
]
}
if (rtc_include_tests) {
rtc_instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
apk_name = "libjingle_peerconnection_android_unittest"
android_manifest = "instrumentationtests/AndroidManifest.xml"
java_files = [
"instrumentationtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
"instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
"instrumentationtests/src/org/webrtc/Camera2CapturerTest.java",
"instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
"instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java",
"instrumentationtests/src/org/webrtc/EglRendererTest.java",
"instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java",
"instrumentationtests/src/org/webrtc/GlRectDrawerTest.java",
"instrumentationtests/src/org/webrtc/HardwareVideoDecoderTest.java",
"instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java",
"instrumentationtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
"instrumentationtests/src/org/webrtc/NetworkMonitorTest.java",
"instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java",
"instrumentationtests/src/org/webrtc/PeerConnectionTest.java",
"instrumentationtests/src/org/webrtc/RendererCommonTest.java",
"instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java",
"instrumentationtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
"instrumentationtests/src/org/webrtc/VideoFileRendererTest.java",
"instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java",
"instrumentationtests/src/org/webrtc/YuvHelperTest.java",
]
data = [
"../../sdk/android/instrumentationtests/src/org/webrtc/capturetestvideo.y4m",
]
deps = [
":base_java",
":libjingle_peerconnection_java",
":libjingle_peerconnection_metrics_default_java",
"//base:base_java",
"//base:base_java_test_support",
"//rtc_base:base_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
]
shared_libraries = [ "../../sdk/android:libjingle_peerconnection_so" ]
}
}
# The native API is currently experimental and may change without notice.
group("native_api") {
deps = [
":native_api_audio_device_module",
":native_api_base",
":native_api_codecs",
":native_api_jni",
":native_api_peerconnection",
":native_api_video",
]
}
rtc_static_library("native_api_base") {
visibility = [ "*" ]
sources = [
"native_api/base/init.cc",
"native_api/base/init.h",
"native_api/base/networkmonitor.cc",
"native_api/base/networkmonitor.h",
]
deps = [
":base_jni",
":native_api_jni",
"//rtc_base:checks",
"//rtc_base:rtc_base",
]
}
generate_jni("generated_native_api_jni") {
sources = [
"src/java/org/webrtc/JniHelper.java",
"src/java/org/webrtc/WebRtcClassLoader.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
# JNI helpers that are also needed from internal JNI code. Cannot depend on any
# other JNI targets than internal_jni.
rtc_static_library("native_api_jni") {
visibility = [ "*" ]
sources = [
"native_api/jni/class_loader.cc",
"native_api/jni/class_loader.h",
"native_api/jni/java_types.cc",
"native_api/jni/java_types.h",
"native_api/jni/jvm.cc",
"native_api/jni/jvm.h",
"native_api/jni/scoped_java_ref.h",
"src/jni/jni_generator_helper.cc",
"src/jni/jni_generator_helper.h",
]
public = [
"native_api/jni/class_loader.h",
"native_api/jni/java_types.h",
"native_api/jni/jvm.h",
"native_api/jni/scoped_java_ref.h",
]
deps = [
":generated_external_classes_jni",
":generated_native_api_jni",
":internal_jni",
"//api:optional",
"//rtc_base:checks",
"//rtc_base:rtc_base_approved",
]
}
# API for wrapping Java VideoDecoderFactory/VideoEncoderFactory classes to C++
# objects.
rtc_static_library("native_api_codecs") {
visibility = [ "*" ]
sources = [
"native_api/codecs/wrapper.cc",
"native_api/codecs/wrapper.h",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
deps = [
":base_jni",
":video_jni",
"//api/video_codecs:video_codecs_api",
"//rtc_base:checks",
"//rtc_base:rtc_base_approved",
]
}
# API for creating Java PeerConnectionFactory from C++ equivalents.
rtc_static_library("native_api_peerconnection") {
visibility = [ "*" ]
sources = [
"native_api/peerconnection/peerconnectionfactory.cc",
"native_api/peerconnection/peerconnectionfactory.h",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
deps = [
":base_jni",
":peerconnection_jni",
"//api:libjingle_peerconnection_api",
"//api/video_codecs:video_codecs_api",
"//rtc_base:rtc_base",
]
}
# API for creating C++ wrapper implementations of api/mediastreaminterface.h
# video interfaces from their Java equivalents.
rtc_static_library("native_api_video") {
visibility = [ "*" ]
sources = [
"native_api/video/wrapper.cc",
"native_api/video/wrapper.h",
]
deps = [
":native_api_jni",
":video_jni",
"//api:libjingle_peerconnection_api",
"//api:video_frame_api",
"//rtc_base:rtc_base_approved",
]
}
generate_jni("generated_native_unittests_jni") {
testonly = true
sources = [
"native_unittests/org/webrtc/JavaTypesTestHelper.java",
"native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java",
]
jni_package = ""
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_android_library("native_unittests_java") {
testonly = true
java_files = [
"native_unittests/org/webrtc/JavaTypesTestHelper.java",
"native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java",
]
deps = [
":libjingle_peerconnection_java",
]
}
rtc_source_set("native_unittests") {
testonly = true
sources = [
"native_unittests/java_types_unittest.cc",
"native_unittests/peerconnection/peerconnectionfactory_unittest.cc",
"native_unittests/test_jni_onload.cc",
]
if (is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [
"//build/config/clang:extra_warnings",
"//build/config/clang:find_bad_constructs",
]
}
deps = [
":audio_jni",
":generated_native_unittests_jni",
":media_jni",
":native_api_base",
":native_api_jni",
":native_api_peerconnection",
":native_unittests_java",
":video_jni",
"//api/audio_codecs:builtin_audio_decoder_factory",
"//api/audio_codecs:builtin_audio_encoder_factory",
"//media:rtc_audio_video",
"//media:rtc_internal_video_codecs",
"//media:rtc_media_base",
"//modules/audio_processing:audio_processing",
"//modules/utility:utility",
"//pc:libjingle_peerconnection",
"//rtc_base:checks",
"//rtc_base:rtc_base_approved",
"//test:test_support",
"//testing/gtest",
]
}