diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 1532acfa64..ff3f55197b 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -513,6 +513,15 @@ if (is_android) { ] } + rtc_android_library("dav1d_java") { + visibility = [ "*" ] + sources = [ "api/org/webrtc/Dav1dDecoder.java" ] + deps = [ + ":dav1d_av1_jni", + ":video_java", + ] + } + rtc_android_library("swcodecs_java") { visibility = [ "*" ] sources = [ @@ -861,7 +870,7 @@ if (current_os == "linux" || is_android) { rtc_library("libaom_av1_jni") { visibility = [ "*" ] allow_poison = [ "software_video_codecs" ] - sources = [ "src/jni/av1_codec.cc" ] + sources = [ "src/jni/libaom_av1_codec.cc" ] deps = [ ":base_jni", ":generated_libaom_av1_jni", @@ -871,6 +880,18 @@ if (current_os == "linux" || is_android) { ] } + rtc_library("dav1d_av1_jni") { + visibility = [ "*" ] + allow_poison = [ "software_video_codecs" ] + sources = [ "src/jni/dav1d_codec.cc" ] + deps = [ + ":base_jni", + ":generated_dav1d_jni", + ":video_jni", + "../../modules/video_coding/codecs/av1:dav1d_decoder", + ] + } + rtc_library("swcodecs_jni") { visibility = [ "*" ] allow_poison = [ "software_video_codecs" ] @@ -1321,6 +1342,13 @@ if (current_os == "linux" || is_android) { jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" } + generate_jni("generated_dav1d_jni") { + sources = [ "api/org/webrtc/Dav1dDecoder.java" ] + + namespace = "webrtc::jni" + jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + generate_jni("generated_peerconnection_jni") { sources = [ "api/org/webrtc/AddIceObserver.java", diff --git a/sdk/android/api/org/webrtc/Dav1dDecoder.java b/sdk/android/api/org/webrtc/Dav1dDecoder.java new file mode 100644 index 0000000000..ecb16bc3a1 --- /dev/null +++ b/sdk/android/api/org/webrtc/Dav1dDecoder.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2021 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; + +public class Dav1dDecoder extends WrappedNativeVideoDecoder { + @Override + public long createNativeVideoDecoder() { + return nativeCreateDecoder(); + } + + static native long nativeCreateDecoder(); +} diff --git a/sdk/android/src/jni/dav1d_codec.cc b/sdk/android/src/jni/dav1d_codec.cc new file mode 100644 index 0000000000..1246d88c0b --- /dev/null +++ b/sdk/android/src/jni/dav1d_codec.cc @@ -0,0 +1,25 @@ +/* + * Copyright 2021 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. + */ + +#include + +#include "modules/video_coding/codecs/av1/dav1d_decoder.h" +#include "sdk/android/generated_dav1d_jni/Dav1dDecoder_jni.h" +#include "sdk/android/src/jni/jni_helpers.h" + +namespace webrtc { +namespace jni { + +static jlong JNI_Dav1dDecoder_CreateDecoder(JNIEnv* jni) { + return jlongFromPointer(webrtc::CreateDav1dDecoder().release()); +} + +} // namespace jni +} // namespace webrtc diff --git a/sdk/android/src/jni/av1_codec.cc b/sdk/android/src/jni/libaom_av1_codec.cc similarity index 100% rename from sdk/android/src/jni/av1_codec.cc rename to sdk/android/src/jni/libaom_av1_codec.cc