diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index a511a09249..fff8dc3785 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -470,18 +470,44 @@ if (is_android) { ] } + rtc_android_library("libvpx_vp8_java") { + visibility = [ "*" ] + java_files = [ + "api/org/webrtc/LibvpxVp8Decoder.java", + "api/org/webrtc/LibvpxVp8Encoder.java", + ] + deps = [ + ":base_java", + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] + } + + rtc_android_library("libvpx_vp9_java") { + visibility = [ "*" ] + java_files = [ + "api/org/webrtc/LibvpxVp9Decoder.java", + "api/org/webrtc/LibvpxVp9Encoder.java", + ] + deps = [ + ":base_java", + ":video_api_java", + ":video_java", + "//rtc_base:base_java", + ] + } + 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", + ":libvpx_vp8_java", + ":libvpx_vp9_java", ":video_api_java", ":video_java", "//rtc_base:base_java", @@ -603,9 +629,12 @@ if (is_android) { ":base_jni", ":generated_video_jni", ":native_api_jni", + + # TODO(bugs.webrtc.org/7925): Remove. :swcodecs_jni isn't a true + # dependency of this target. It should be linked in explicitly where + # needed. + ":swcodecs_jni", ":videoframe_jni", - ":vp8_jni", # TODO(bugs.webrtc.org/7925): Remove. - ":vp9_jni", # TODO(bugs.webrtc.org/7925): Remove. "../..:webrtc_common", "../../api:libjingle_peerconnection_api", "../../api/video:encoded_image", @@ -729,6 +758,52 @@ if (is_android) { ] } + rtc_static_library("default_video_codec_factory_jni") { + deps = [ + ":swcodecs_jni", + ":video_jni", + ] + } + + rtc_static_library("libvpx_vp8_jni") { + visibility = [ "*" ] + allow_poison = [ "software_video_codecs" ] + sources = [ + "src/jni/vp8codec.cc", + ] + + # TODO(bugs.webrtc.org/7925): add a depenency on :video_jni once :video_jni + # does not depend on us. + deps = [ + ":base_jni", + ":generated_libvpx_vp8_jni", + "../../modules/video_coding:webrtc_vp8", + ] + } + + rtc_static_library("libvpx_vp9_jni") { + visibility = [ "*" ] + allow_poison = [ "software_video_codecs" ] + sources = [ + "src/jni/vp9codec.cc", + ] + + # TODO(bugs.webrtc.org/7925): add a depenency on :video_jni once :video_jni + # does not depend on us. + deps = [ + ":base_jni", + ":generated_libvpx_vp9_jni", + "../../modules/video_coding:webrtc_vp9", + ] + } + + rtc_static_library("swcodecs_jni") { + deps = [ + ":libvpx_vp8_jni", + ":libvpx_vp9_jni", + ] + } + ###################### # Native API targets # ###################### @@ -974,30 +1049,6 @@ if (is_android) { ] } - rtc_static_library("vp8_jni") { - sources = [ - "src/jni/vp8codec.cc", - ] - - deps = [ - ":base_jni", - ":generated_vp8_jni", - "../../modules/video_coding:webrtc_vp8", - ] - } - - rtc_static_library("vp9_jni") { - sources = [ - "src/jni/vp9codec.cc", - ] - - deps = [ - ":base_jni", - ":generated_vp9_jni", - "../../modules/video_coding:webrtc_vp9", - ] - } - rtc_static_library("logging_jni") { visibility = [ "*" ] sources = [ @@ -1186,10 +1237,10 @@ if (is_android) { jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" } - generate_jni("generated_vp8_jni") { + generate_jni("generated_libvpx_vp8_jni") { sources = [ - "src/java/org/webrtc/VP8Decoder.java", - "src/java/org/webrtc/VP8Encoder.java", + "api/org/webrtc/LibvpxVp8Decoder.java", + "api/org/webrtc/LibvpxVp8Encoder.java", ] jni_package = "" @@ -1197,10 +1248,10 @@ if (is_android) { jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" } - generate_jni("generated_vp9_jni") { + generate_jni("generated_libvpx_vp9_jni") { sources = [ - "src/java/org/webrtc/VP9Decoder.java", - "src/java/org/webrtc/VP9Encoder.java", + "api/org/webrtc/LibvpxVp9Decoder.java", + "api/org/webrtc/LibvpxVp9Encoder.java", ] jni_package = "" diff --git a/sdk/android/src/java/org/webrtc/VP8Decoder.java b/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java similarity index 89% rename from sdk/android/src/java/org/webrtc/VP8Decoder.java rename to sdk/android/api/org/webrtc/LibvpxVp8Decoder.java index ab29c349c7..54ad0aa137 100644 --- a/sdk/android/src/java/org/webrtc/VP8Decoder.java +++ b/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java @@ -10,7 +10,7 @@ package org.webrtc; -class VP8Decoder extends WrappedNativeVideoDecoder { +public class LibvpxVp8Decoder extends WrappedNativeVideoDecoder { @Override public long createNativeVideoDecoder() { return nativeCreateDecoder(); diff --git a/sdk/android/src/java/org/webrtc/VP8Encoder.java b/sdk/android/api/org/webrtc/LibvpxVp8Encoder.java similarity index 90% rename from sdk/android/src/java/org/webrtc/VP8Encoder.java rename to sdk/android/api/org/webrtc/LibvpxVp8Encoder.java index c2f8f50417..4be9e52c14 100644 --- a/sdk/android/src/java/org/webrtc/VP8Encoder.java +++ b/sdk/android/api/org/webrtc/LibvpxVp8Encoder.java @@ -10,7 +10,7 @@ package org.webrtc; -class VP8Encoder extends WrappedNativeVideoEncoder { +public class LibvpxVp8Encoder extends WrappedNativeVideoEncoder { @Override public long createNativeVideoEncoder() { return nativeCreateEncoder(); diff --git a/sdk/android/src/java/org/webrtc/VP9Decoder.java b/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java similarity index 90% rename from sdk/android/src/java/org/webrtc/VP9Decoder.java rename to sdk/android/api/org/webrtc/LibvpxVp9Decoder.java index b6fee2d362..90a24433a3 100644 --- a/sdk/android/src/java/org/webrtc/VP9Decoder.java +++ b/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java @@ -10,7 +10,7 @@ package org.webrtc; -class VP9Decoder extends WrappedNativeVideoDecoder { +public class LibvpxVp9Decoder extends WrappedNativeVideoDecoder { @Override public long createNativeVideoDecoder() { return nativeCreateDecoder(); diff --git a/sdk/android/src/java/org/webrtc/VP9Encoder.java b/sdk/android/api/org/webrtc/LibvpxVp9Encoder.java similarity index 91% rename from sdk/android/src/java/org/webrtc/VP9Encoder.java rename to sdk/android/api/org/webrtc/LibvpxVp9Encoder.java index bc705bd9c6..1211ae93fb 100644 --- a/sdk/android/src/java/org/webrtc/VP9Encoder.java +++ b/sdk/android/api/org/webrtc/LibvpxVp9Encoder.java @@ -10,7 +10,7 @@ package org.webrtc; -class VP9Encoder extends WrappedNativeVideoEncoder { +public class LibvpxVp9Encoder extends WrappedNativeVideoEncoder { @Override public long createNativeVideoEncoder() { return nativeCreateEncoder(); diff --git a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java index 86dfb7a2c6..f421f16b1a 100644 --- a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java +++ b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java @@ -27,10 +27,10 @@ public class SoftwareVideoDecoderFactory implements VideoDecoderFactory { @Override public VideoDecoder createDecoder(VideoCodecInfo codecType) { if (codecType.getName().equalsIgnoreCase("VP8")) { - return new VP8Decoder(); + return new LibvpxVp8Decoder(); } - if (codecType.getName().equalsIgnoreCase("VP9") && VP9Decoder.nativeIsSupported()) { - return new VP9Decoder(); + if (codecType.getName().equalsIgnoreCase("VP9") && LibvpxVp9Decoder.nativeIsSupported()) { + return new LibvpxVp9Decoder(); } return null; @@ -45,7 +45,7 @@ public class SoftwareVideoDecoderFactory implements VideoDecoderFactory { List codecs = new ArrayList(); codecs.add(new VideoCodecInfo("VP8", new HashMap<>())); - if (VP9Decoder.nativeIsSupported()) { + if (LibvpxVp9Decoder.nativeIsSupported()) { codecs.add(new VideoCodecInfo("VP9", new HashMap<>())); } diff --git a/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java b/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java index a2ddf36c38..3c36c4d56a 100644 --- a/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java +++ b/sdk/android/api/org/webrtc/SoftwareVideoEncoderFactory.java @@ -20,10 +20,10 @@ public class SoftwareVideoEncoderFactory implements VideoEncoderFactory { @Override public VideoEncoder createEncoder(VideoCodecInfo info) { if (info.name.equalsIgnoreCase("VP8")) { - return new VP8Encoder(); + return new LibvpxVp8Encoder(); } - if (info.name.equalsIgnoreCase("VP9") && VP9Encoder.nativeIsSupported()) { - return new VP9Encoder(); + if (info.name.equalsIgnoreCase("VP9") && LibvpxVp9Encoder.nativeIsSupported()) { + return new LibvpxVp9Encoder(); } return null; @@ -38,7 +38,7 @@ public class SoftwareVideoEncoderFactory implements VideoEncoderFactory { List codecs = new ArrayList(); codecs.add(new VideoCodecInfo("VP8", new HashMap<>())); - if (VP9Encoder.nativeIsSupported()) { + if (LibvpxVp9Encoder.nativeIsSupported()) { codecs.add(new VideoCodecInfo("VP9", new HashMap<>())); } diff --git a/sdk/android/src/jni/vp8codec.cc b/sdk/android/src/jni/vp8codec.cc index 295a03a610..2756b102fa 100644 --- a/sdk/android/src/jni/vp8codec.cc +++ b/sdk/android/src/jni/vp8codec.cc @@ -11,20 +11,20 @@ #include #include "modules/video_coding/codecs/vp8/include/vp8.h" -#include "sdk/android/generated_vp8_jni/jni/VP8Decoder_jni.h" -#include "sdk/android/generated_vp8_jni/jni/VP8Encoder_jni.h" +#include "sdk/android/generated_libvpx_vp8_jni/jni/LibvpxVp8Decoder_jni.h" +#include "sdk/android/generated_libvpx_vp8_jni/jni/LibvpxVp8Encoder_jni.h" #include "sdk/android/src/jni/jni_helpers.h" namespace webrtc { namespace jni { -static jlong JNI_VP8Encoder_CreateEncoder(JNIEnv* jni, - const JavaParamRef&) { +static jlong JNI_LibvpxVp8Encoder_CreateEncoder(JNIEnv* jni, + const JavaParamRef&) { return jlongFromPointer(VP8Encoder::Create().release()); } -static jlong JNI_VP8Decoder_CreateDecoder(JNIEnv* jni, - const JavaParamRef&) { +static jlong JNI_LibvpxVp8Decoder_CreateDecoder(JNIEnv* jni, + const JavaParamRef&) { return jlongFromPointer(VP8Decoder::Create().release()); } diff --git a/sdk/android/src/jni/vp9codec.cc b/sdk/android/src/jni/vp9codec.cc index ca712e6d86..92f9754d56 100644 --- a/sdk/android/src/jni/vp9codec.cc +++ b/sdk/android/src/jni/vp9codec.cc @@ -11,30 +11,30 @@ #include #include "modules/video_coding/codecs/vp9/include/vp9.h" -#include "sdk/android/generated_vp9_jni/jni/VP9Decoder_jni.h" -#include "sdk/android/generated_vp9_jni/jni/VP9Encoder_jni.h" +#include "sdk/android/generated_libvpx_vp9_jni/jni/LibvpxVp9Decoder_jni.h" +#include "sdk/android/generated_libvpx_vp9_jni/jni/LibvpxVp9Encoder_jni.h" #include "sdk/android/src/jni/jni_helpers.h" namespace webrtc { namespace jni { -static jlong JNI_VP9Encoder_CreateEncoder(JNIEnv* jni, - const JavaParamRef& w) { +static jlong JNI_LibvpxVp9Encoder_CreateEncoder(JNIEnv* jni, + const JavaParamRef& w) { return jlongFromPointer(VP9Encoder::Create().release()); } -static jboolean JNI_VP9Encoder_IsSupported(JNIEnv* jni, - const JavaParamRef&) { +static jboolean JNI_LibvpxVp9Encoder_IsSupported(JNIEnv* jni, + const JavaParamRef&) { return !SupportedVP9Codecs().empty(); } -static jlong JNI_VP9Decoder_CreateDecoder(JNIEnv* jni, - const JavaParamRef& w) { +static jlong JNI_LibvpxVp9Decoder_CreateDecoder(JNIEnv* jni, + const JavaParamRef& w) { return jlongFromPointer(VP9Decoder::Create().release()); } -static jboolean JNI_VP9Decoder_IsSupported(JNIEnv* jni, - const JavaParamRef&) { +static jboolean JNI_LibvpxVp9Decoder_IsSupported(JNIEnv* jni, + const JavaParamRef&) { return !SupportedVP9Codecs().empty(); }