Cleanup webrtc::Environment propagation through java wrappers

Force and thus guarantee VideoDecoder created through java wrappers get access to the webrtc::Environment

Bug: webrtc:15791
Change-Id: I3f145937c0b914c8e34b24e1ecc55da756551069
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/338441
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41745}
diff --git a/sdk/android/api/org/webrtc/Dav1dDecoder.java b/sdk/android/api/org/webrtc/Dav1dDecoder.java
index ecb16bc..2a79988 100644
--- a/sdk/android/api/org/webrtc/Dav1dDecoder.java
+++ b/sdk/android/api/org/webrtc/Dav1dDecoder.java
@@ -12,7 +12,7 @@
 
 public class Dav1dDecoder extends WrappedNativeVideoDecoder {
   @Override
-  public long createNativeVideoDecoder() {
+  public long createNative(long webrtcEnvRef) {
     return nativeCreateDecoder();
   }
 
diff --git a/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java b/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java
index 54ad0aa..b3846f2 100644
--- a/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java
+++ b/sdk/android/api/org/webrtc/LibvpxVp8Decoder.java
@@ -12,7 +12,7 @@
 
 public class LibvpxVp8Decoder extends WrappedNativeVideoDecoder {
   @Override
-  public long createNativeVideoDecoder() {
+  public long createNative(long webrtcEnvRef) {
     return nativeCreateDecoder();
   }
 
diff --git a/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java b/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java
index 90a2443..34718cf 100644
--- a/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java
+++ b/sdk/android/api/org/webrtc/LibvpxVp9Decoder.java
@@ -12,7 +12,7 @@
 
 public class LibvpxVp9Decoder extends WrappedNativeVideoDecoder {
   @Override
-  public long createNativeVideoDecoder() {
+  public long createNative(long webrtcEnvRef) {
     return nativeCreateDecoder();
   }
 
diff --git a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
index ac815d3..1b1cd44 100644
--- a/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
+++ b/sdk/android/api/org/webrtc/SoftwareVideoDecoderFactory.java
@@ -31,11 +31,6 @@
     }
     return new WrappedNativeVideoDecoder() {
       @Override
-      public long createNativeVideoDecoder() {
-        return nativeCreateDecoder(nativeFactory, info);
-      }
-
-      @Override
       public long createNative(long webrtcEnvRef) {
         return nativeCreate(nativeFactory, webrtcEnvRef, info);
       }
@@ -49,8 +44,6 @@
 
   private static native long nativeCreateFactory();
 
-  private static native long nativeCreateDecoder(long factory, VideoCodecInfo videoCodecInfo);
-
   private static native boolean nativeIsSupported(long factory, VideoCodecInfo info);
 
   private static native long nativeCreate(
diff --git a/sdk/android/api/org/webrtc/VideoDecoder.java b/sdk/android/api/org/webrtc/VideoDecoder.java
index f44672d..195daf5 100644
--- a/sdk/android/api/org/webrtc/VideoDecoder.java
+++ b/sdk/android/api/org/webrtc/VideoDecoder.java
@@ -70,12 +70,6 @@
    */
   @CalledByNative
   default long createNative(long webrtcEnvRef) {
-    return createNativeVideoDecoder();
-  }
-
-  @CalledByNative
-  @Deprecated
-  default long createNativeVideoDecoder() {
     return 0;
   }
 
diff --git a/sdk/android/api/org/webrtc/VideoDecoderFallback.java b/sdk/android/api/org/webrtc/VideoDecoderFallback.java
index dc2e2ee..1e7bae9 100644
--- a/sdk/android/api/org/webrtc/VideoDecoderFallback.java
+++ b/sdk/android/api/org/webrtc/VideoDecoderFallback.java
@@ -23,17 +23,10 @@
   }
 
   @Override
-  public long createNativeVideoDecoder() {
-    return nativeCreateDecoder(fallback, primary);
-  }
-
-  @Override
   public long createNative(long webrtcEnvRef) {
     return nativeCreate(webrtcEnvRef, fallback, primary);
   }
 
-  private static native long nativeCreateDecoder(VideoDecoder fallback, VideoDecoder primary);
-
   private static native long nativeCreate(
       long webrtcEnvRef, VideoDecoder fallback, VideoDecoder primary);
 }
diff --git a/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java b/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
index ac9886e..d762e75 100644
--- a/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
+++ b/sdk/android/api/org/webrtc/WrappedNativeVideoDecoder.java
@@ -14,9 +14,7 @@
  * Wraps a native webrtc::VideoDecoder.
  */
 public abstract class WrappedNativeVideoDecoder implements VideoDecoder {
-  // TODO: bugs.webrtc.org/15791 - uncomment when implemented by all
-  // derived classes instead of the createNativeVideoDecoder
-  // @Override public abstract long createNative(long webrtcEnvRef);
+  @Override public abstract long createNative(long webrtcEnvRef);
 
   @Override
   public final VideoCodecStatus initDecode(Settings settings, Callback decodeCallback) {
diff --git a/sdk/android/src/jni/software_video_decoder_factory.cc b/sdk/android/src/jni/software_video_decoder_factory.cc
index 46b67b8..6e711e8 100644
--- a/sdk/android/src/jni/software_video_decoder_factory.cc
+++ b/sdk/android/src/jni/software_video_decoder_factory.cc
@@ -27,22 +27,6 @@
       CreateBuiltinVideoDecoderFactory().release());
 }
 
-static jlong JNI_SoftwareVideoDecoderFactory_CreateDecoder(
-    JNIEnv* env,
-    jlong j_factory,
-    const webrtc::JavaParamRef<jobject>& j_video_codec_info) {
-  auto* const native_factory =
-      reinterpret_cast<webrtc::VideoDecoderFactory*>(j_factory);
-  const auto video_format =
-      webrtc::jni::VideoCodecInfoToSdpVideoFormat(env, j_video_codec_info);
-
-  auto decoder = native_factory->CreateVideoDecoder(video_format);
-  if (decoder == nullptr) {
-    return 0;
-  }
-  return webrtc::NativeToJavaPointer(decoder.release());
-}
-
 jboolean JNI_SoftwareVideoDecoderFactory_IsSupported(
     JNIEnv* env,
     jlong j_factory,
diff --git a/sdk/android/src/jni/video_decoder_fallback.cc b/sdk/android/src/jni/video_decoder_fallback.cc
index 8b521c8f..2688c59 100644
--- a/sdk/android/src/jni/video_decoder_fallback.cc
+++ b/sdk/android/src/jni/video_decoder_fallback.cc
@@ -18,23 +18,6 @@
 namespace webrtc {
 namespace jni {
 
-static jlong JNI_VideoDecoderFallback_CreateDecoder(
-    JNIEnv* jni,
-    const JavaParamRef<jobject>& j_fallback_decoder,
-    const JavaParamRef<jobject>& j_primary_decoder) {
-  std::unique_ptr<VideoDecoder> fallback_decoder =
-      JavaToNativeVideoDecoder(jni, j_fallback_decoder);
-  std::unique_ptr<VideoDecoder> primary_decoder =
-      JavaToNativeVideoDecoder(jni, j_primary_decoder);
-
-  VideoDecoder* nativeWrapper =
-      CreateVideoDecoderSoftwareFallbackWrapper(std::move(fallback_decoder),
-                                                std::move(primary_decoder))
-          .release();
-
-  return jlongFromPointer(nativeWrapper);
-}
-
 static jlong JNI_VideoDecoderFallback_Create(
     JNIEnv* jni,
     jlong j_webrtc_env_ref,
diff --git a/sdk/android/src/jni/video_decoder_wrapper.cc b/sdk/android/src/jni/video_decoder_wrapper.cc
index c969618..eaeeb2d 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_wrapper.cc
@@ -271,20 +271,6 @@
 
 std::unique_ptr<VideoDecoder> JavaToNativeVideoDecoder(
     JNIEnv* jni,
-    const JavaRef<jobject>& j_decoder) {
-  const jlong native_decoder =
-      Java_VideoDecoder_createNativeVideoDecoder(jni, j_decoder);
-  VideoDecoder* decoder;
-  if (native_decoder == 0) {
-    decoder = new VideoDecoderWrapper(jni, j_decoder);
-  } else {
-    decoder = reinterpret_cast<VideoDecoder*>(native_decoder);
-  }
-  return std::unique_ptr<VideoDecoder>(decoder);
-}
-
-std::unique_ptr<VideoDecoder> JavaToNativeVideoDecoder(
-    JNIEnv* jni,
     const JavaRef<jobject>& j_decoder,
     jlong webrtcEnvRef) {
   if (jlong native_decoder =
diff --git a/sdk/android/src/jni/video_decoder_wrapper.h b/sdk/android/src/jni/video_decoder_wrapper.h
index 80638a7..5e397f1 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.h
+++ b/sdk/android/src/jni/video_decoder_wrapper.h
@@ -116,12 +116,6 @@
 /* If the j_decoder is a wrapped native decoder, unwrap it. If it is not,
  * wrap it in a VideoDecoderWrapper.
  */
-// TODO: bugs.webrtc.org/15791 - delete variant without the webrtcEnvRef
-// parameter when unused.
-std::unique_ptr<VideoDecoder> JavaToNativeVideoDecoder(
-    JNIEnv* jni,
-    const JavaRef<jobject>& j_decoder);
-
 std::unique_ptr<VideoDecoder> JavaToNativeVideoDecoder(
     JNIEnv* jni,
     const JavaRef<jobject>& j_decoder,