From 1641ca3dd396c716fee97cfa4a3e8648e0ac8693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20Kalliom=C3=A4ki?= Date: Wed, 4 Apr 2018 15:59:31 +0200 Subject: [PATCH] Split out video targets from //sdk/android:base_java. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:9048 Change-Id: Icda0fabf41610f99254d244e0b11d321eee345f7 Reviewed-on: https://webrtc-review.googlesource.com/65120 Reviewed-by: Magnus Jedvert Commit-Queue: Sami Kalliomäki Cr-Commit-Position: refs/heads/master@{#22752} --- examples/BUILD.gn | 6 + examples/androidnativeapi/BUILD.gn | 3 +- sdk/android/BUILD.gn | 204 ++++++++++++++++----- sdk/android/api/org/webrtc/VideoFrame.java | 2 + sdk/android/src/java/org/webrtc/Empty.java | 17 ++ 5 files changed, 181 insertions(+), 51 deletions(-) create mode 100644 sdk/android/src/java/org/webrtc/Empty.java diff --git a/examples/BUILD.gn b/examples/BUILD.gn index aba2a37df5..b88b734a9e 100644 --- a/examples/BUILD.gn +++ b/examples/BUILD.gn @@ -118,10 +118,16 @@ if (is_android) { "../rtc_base:base_java", "../sdk/android:audio_java", "../sdk/android:base_java", + "../sdk/android:camera_java", + "../sdk/android:filevideo_java", "../sdk/android:hwcodecs_java", "../sdk/android:libjingle_peerconnection_java", "../sdk/android:libjingle_peerconnection_metrics_default_java", + "../sdk/android:peerconnection_java", + "../sdk/android:screencapturer_java", + "../sdk/android:surfaceviewrenderer_java", "../sdk/android:swcodecs_java", + "../sdk/android:video_api_java", "androidapp/third_party/autobanh:autobanh_java", "//third_party/jsr-305:jsr_305_javalib", ] diff --git a/examples/androidnativeapi/BUILD.gn b/examples/androidnativeapi/BUILD.gn index 62f1645add..5093194c82 100644 --- a/examples/androidnativeapi/BUILD.gn +++ b/examples/androidnativeapi/BUILD.gn @@ -12,7 +12,8 @@ rtc_android_apk("androidnativeapi") { deps = [ ":resources", - "//sdk/android:base_java", + "//sdk/android:surfaceviewrenderer_java", + "//sdk/android:video_api_java", ] shared_libraries = [ ":examples_androidnativeapi_jni" ] diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 6df1e61737..400850274d 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -730,9 +730,16 @@ dist_jar("libwebrtc") { deps = [ ":audio_java", ":base_java", + ":camera_java", + ":filevideo_java", ":hwcodecs_java", ":libjingle_peerconnection_java", ":libjingle_peerconnection_metrics_default_java", + ":peerconnection_java", + ":screencapturer_java", + ":surfaceviewrenderer_java", + ":video_api_java", + ":video_java", "../../modules/audio_device:audio_device_java", "../../rtc_base:base_java", ] @@ -745,71 +752,54 @@ dist_jar("libwebrtc") { # 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", + "src/java/org/webrtc/CalledByNative.java", + "src/java/org/webrtc/CalledByNativeUnchecked.java", + "src/java/org/webrtc/Histogram.java", + "src/java/org/webrtc/JniCommon.java", + "src/java/org/webrtc/JniHelper.java", + "src/java/org/webrtc/JNINamespace.java", + "src/java/org/webrtc/NativeClassQualifiedName.java", + "src/java/org/webrtc/WebRtcClassLoader.java", + ] + + deps = [ + "//rtc_base:base_java", + ] +} + +rtc_android_library("video_api_java") { + java_files = [ "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/VideoRenderer.java", # TODO(sakal): Remove "api/org/webrtc/VideoSink.java", + ] + + # TODO(sakal): These should be moved to video_java but cannot because of dependencies. + java_files += [ + "api/org/webrtc/EglBase.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/SurfaceTextureHelper.java", "api/org/webrtc/YuvConverter.java", "api/org/webrtc/YuvHelper.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", ] deps = [ + ":base_java", "//rtc_base:base_java", ] } @@ -832,6 +822,89 @@ rtc_android_library("audio_java") { ] } +rtc_android_library("video_java") { + java_files = [ + "api/org/webrtc/EglRenderer.java", + "api/org/webrtc/GlRectDrawer.java", + "api/org/webrtc/VideoDecoderFallback.java", + "api/org/webrtc/VideoEncoderFallback.java", + "api/org/webrtc/VideoFrameDrawer.java", + "src/java/org/webrtc/AndroidVideoTrackSourceObserver.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", + ] + + deps = [ + ":base_java", + ":video_api_java", + "//rtc_base:base_java", + ] +} + +rtc_android_library("camera_java") { + java_files = [ + "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", + "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/NV21Buffer.java", + ] + + deps = [ + ":base_java", + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] +} + +rtc_android_library("screencapturer_java") { + java_files = [ "api/org/webrtc/ScreenCapturerAndroid.java" ] + + deps = [ + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] +} + +rtc_android_library("surfaceviewrenderer_java") { + java_files = [ + "api/org/webrtc/SurfaceEglRenderer.java", + "api/org/webrtc/SurfaceViewRenderer.java", + ] + + deps = [ + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] +} + +rtc_android_library("filevideo_java") { + java_files = [ + "api/org/webrtc/VideoFileRenderer.java", + "api/org/webrtc/FileVideoCapturer.java", + ] + + deps = [ + ":base_java", + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] +} + if (rtc_use_builtin_sw_codecs) { rtc_android_library("swcodecs_java") { java_files = [ @@ -845,6 +918,8 @@ if (rtc_use_builtin_sw_codecs) { deps = [ ":base_java", + ":video_api_java", + ":video_java", "//rtc_base:base_java", ] } @@ -859,10 +934,14 @@ rtc_android_library("hwcodecs_java") { "src/java/org/webrtc/HardwareVideoDecoder.java", "src/java/org/webrtc/HardwareVideoEncoder.java", "src/java/org/webrtc/MediaCodecUtils.java", + "src/java/org/webrtc/NV12Buffer.java", + "src/java/org/webrtc/VideoCodecType.java", ] deps = [ ":base_java", + ":video_api_java", + ":video_java", "//rtc_base:base_java", ] @@ -876,14 +955,13 @@ rtc_android_library("hwcodecs_java") { } } -rtc_android_library("libjingle_peerconnection_java") { +rtc_android_library("peerconnection_java") { java_files = [ + "api/org/webrtc/AudioProcessingFactory.java", "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", @@ -919,13 +997,38 @@ rtc_android_library("libjingle_peerconnection_java") { deps = [ ":audio_java", ":base_java", + ":video_api_java", + ":video_java", # TODO(sakal): Remove dependency. + "//rtc_base:base_java", + ] +} + +# Old target that pulls in everything. This will be going away in the future, +# clients should depend on individual video_java etc. targets instead. +rtc_android_library("libjingle_peerconnection_java") { + java_files = [ "src/java/org/webrtc/Empty.java" ] + + deps = [ + ":base_java", + ":camera_java", + ":filevideo_java", ":hwcodecs_java", + ":peerconnection_java", + ":screencapturer_java", + ":surfaceviewrenderer_java", + ":video_api_java", + ":video_java", "//modules/audio_device:audio_device_java", "//rtc_base:base_java", ] if (rtc_use_builtin_sw_codecs) { deps += [ ":swcodecs_java" ] + + java_files += [ + "api/org/webrtc/DefaultVideoDecoderFactory.java", + "api/org/webrtc/DefaultVideoEncoderFactory.java", + ] } } @@ -975,6 +1078,7 @@ if (rtc_include_tests) { ":base_java", ":libjingle_peerconnection_java", ":libjingle_peerconnection_metrics_default_java", + ":video_api_java", "//base:base_java", "//base:base_java_test_support", "//rtc_base:base_java", diff --git a/sdk/android/api/org/webrtc/VideoFrame.java b/sdk/android/api/org/webrtc/VideoFrame.java index 30304a3f51..2c21b6e271 100644 --- a/sdk/android/api/org/webrtc/VideoFrame.java +++ b/sdk/android/api/org/webrtc/VideoFrame.java @@ -183,6 +183,8 @@ public class VideoFrame { buffer.release(); } + // TODO(sakal): This file should be strictly an interface. This method should be moved somewhere + // else. public static VideoFrame.Buffer cropAndScaleI420(final I420Buffer buffer, int cropX, int cropY, int cropWidth, int cropHeight, int scaleWidth, int scaleHeight) { if (cropWidth == scaleWidth && cropHeight == scaleHeight) { diff --git a/sdk/android/src/java/org/webrtc/Empty.java b/sdk/android/src/java/org/webrtc/Empty.java new file mode 100644 index 0000000000..fe9481e182 --- /dev/null +++ b/sdk/android/src/java/org/webrtc/Empty.java @@ -0,0 +1,17 @@ +/* + * Copyright 2018 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. + */ + +package org.webrtc; + +/** + * Empty class for use in libjingle_peerconnection_java because all targets require at least one + * Java file. + */ +class Empty {}