Replace JavaParamRef -> JavaRef

JavaParamRef used to be different, but now is an alias for JavaRef.

Bug: chromium:40173007
Change-Id: I82a54bd36550bf37c97f395de8b9d1c2e7ed2a0d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/430420
Auto-Submit: Andrew Grieve <agrieve@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#46385}
diff --git a/examples/androidvoip/jni/android_voip_client.cc b/examples/androidvoip/jni/android_voip_client.cc
index 5a218e5..2c1fd43 100644
--- a/examples/androidvoip/jni/android_voip_client.cc
+++ b/examples/androidvoip/jni/android_voip_client.cc
@@ -138,14 +138,14 @@
 
 AndroidVoipClient::AndroidVoipClient(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_voip_client)
+    const jni_zero::JavaRef<jobject>& j_voip_client)
     : webrtc_env_(webrtc::CreateEnvironment()),
       voip_thread_(webrtc::Thread::CreateWithSocketServer()),
       j_voip_client_(env, j_voip_client) {}
 
 void AndroidVoipClient::Init(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& application_context) {
+    const jni_zero::JavaRef<jobject>& application_context) {
   webrtc::VoipEngineConfig config;
   config.encoder_factory = webrtc::CreateBuiltinAudioEncoderFactory();
   config.decoder_factory = webrtc::CreateBuiltinAudioDecoderFactory();
@@ -190,8 +190,8 @@
 
 AndroidVoipClient* AndroidVoipClient::Create(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& application_context,
-    const jni_zero::JavaParamRef<jobject>& j_voip_client) {
+    const jni_zero::JavaRef<jobject>& application_context,
+    const jni_zero::JavaRef<jobject>& j_voip_client) {
   // Using `new` to access a non-public constructor.
   auto voip_client =
       absl::WrapUnique(new AndroidVoipClient(env, j_voip_client));
@@ -249,7 +249,7 @@
 
 void AndroidVoipClient::SetEncoder(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jstring>& j_encoder_string) {
+    const jni_zero::JavaRef<jstring>& j_encoder_string) {
   const std::string& chosen_encoder =
       webrtc::JavaToNativeString(env, j_encoder_string);
   voip_thread_->PostTask(
@@ -278,7 +278,7 @@
 
 void AndroidVoipClient::SetDecoders(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_decoder_strings) {
+    const jni_zero::JavaRef<jobject>& j_decoder_strings) {
   const std::vector<std::string>& chosen_decoders =
       webrtc::JavaListToNativeVector<std::string, jstring>(
           env, j_decoder_strings, &webrtc::JavaToNativeString);
@@ -296,7 +296,7 @@
 
 void AndroidVoipClient::SetLocalAddress(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jstring>& j_ip_address_string,
+    const jni_zero::JavaRef<jstring>& j_ip_address_string,
     jint j_port_number_int) {
   const std::string& ip_address =
       webrtc::JavaToNativeString(env, j_ip_address_string);
@@ -315,7 +315,7 @@
 
 void AndroidVoipClient::SetRemoteAddress(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jstring>& j_ip_address_string,
+    const jni_zero::JavaRef<jstring>& j_ip_address_string,
     jint j_port_number_int) {
   const std::string& ip_address =
       webrtc::JavaToNativeString(env, j_ip_address_string);
@@ -559,8 +559,8 @@
 
 static jlong JNI_VoipClient_CreateClient(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& application_context,
-    const jni_zero::JavaParamRef<jobject>& j_voip_client) {
+    const jni_zero::JavaRef<jobject>& application_context,
+    const jni_zero::JavaRef<jobject>& j_voip_client) {
   return webrtc::NativeToJavaPointer(
       AndroidVoipClient::Create(env, application_context, j_voip_client));
 }
diff --git a/examples/androidvoip/jni/android_voip_client.h b/examples/androidvoip/jni/android_voip_client.h
index fbc8dd0..7d9e499 100644
--- a/examples/androidvoip/jni/android_voip_client.h
+++ b/examples/androidvoip/jni/android_voip_client.h
@@ -54,8 +54,8 @@
   // they are done with it (this class provides a Delete() method).
   static AndroidVoipClient* Create(
       JNIEnv* env,
-      const jni_zero::JavaParamRef<jobject>& application_context,
-      const jni_zero::JavaParamRef<jobject>& j_voip_client);
+      const jni_zero::JavaRef<jobject>& application_context,
+      const jni_zero::JavaRef<jobject>& j_voip_client);
 
   ~AndroidVoipClient() override;
 
@@ -71,24 +71,22 @@
 
   // Sets the encoder used by the VoIP API.
   void SetEncoder(JNIEnv* env,
-                  const jni_zero::JavaParamRef<jstring>& j_encoder_string);
+                  const jni_zero::JavaRef<jstring>& j_encoder_string);
 
   // Sets the decoders used by the VoIP API.
   void SetDecoders(JNIEnv* env,
-                   const jni_zero::JavaParamRef<jobject>& j_decoder_strings);
+                   const jni_zero::JavaRef<jobject>& j_decoder_strings);
 
   // Sets two local/remote addresses, one for RTP packets, and another for
   // RTCP packets. The RTP address will have IP address j_ip_address_string
   // and port number j_port_number_int, the RTCP address will have IP address
   // j_ip_address_string and port number j_port_number_int+1.
-  void SetLocalAddress(
-      JNIEnv* env,
-      const jni_zero::JavaParamRef<jstring>& j_ip_address_string,
-      jint j_port_number_int);
-  void SetRemoteAddress(
-      JNIEnv* env,
-      const jni_zero::JavaParamRef<jstring>& j_ip_address_string,
-      jint j_port_number_int);
+  void SetLocalAddress(JNIEnv* env,
+                       const jni_zero::JavaRef<jstring>& j_ip_address_string,
+                       jint j_port_number_int);
+  void SetRemoteAddress(JNIEnv* env,
+                        const jni_zero::JavaRef<jstring>& j_ip_address_string,
+                        jint j_port_number_int);
 
   // Starts a VoIP session, then calls a callback method with a boolean
   // value indicating if the session has started successfully. The VoIP
@@ -135,10 +133,9 @@
 
  private:
   AndroidVoipClient(JNIEnv* env,
-                    const jni_zero::JavaParamRef<jobject>& j_voip_client);
+                    const jni_zero::JavaRef<jobject>& j_voip_client);
 
-  void Init(JNIEnv* env,
-            const jni_zero::JavaParamRef<jobject>& application_context);
+  void Init(JNIEnv* env, const jni_zero::JavaRef<jobject>& application_context);
 
   // Overloaded methods having native C++ variables as arguments.
   void SetEncoder(const std::string& encoder);
diff --git a/sdk/android/native_api/audio_device_module/audio_device_android.cc b/sdk/android/native_api/audio_device_module/audio_device_android.cc
index db82261..af3c800 100644
--- a/sdk/android/native_api/audio_device_module/audio_device_android.cc
+++ b/sdk/android/native_api/audio_device_module/audio_device_android.cc
@@ -46,7 +46,7 @@
                                AudioParameters* input_parameters,
                                AudioParameters* output_parameters) {
   const auto j_context =
-      jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context);
+      jni_zero::JavaRef<jobject>::CreateLeaky(env, application_context);
   const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager =
       jni::GetAudioManager(env, j_context);
   const int input_sample_rate = jni::GetDefaultSampleRate(env, j_audio_manager);
@@ -88,7 +88,7 @@
   RTC_DLOG(LS_INFO) << __FUNCTION__;
   // Get default audio input/output parameters.
   const auto j_context =
-      jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context);
+      jni_zero::JavaRef<jobject>::CreateLeaky(env, application_context);
   const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager =
       jni::GetAudioManager(env, j_context);
   AudioParameters input_parameters;
@@ -118,7 +118,7 @@
   RTC_DLOG(LS_INFO) << __FUNCTION__;
   // Get default audio input/output parameters.
   const auto j_context =
-      jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context);
+      jni_zero::JavaRef<jobject>::CreateLeaky(env, application_context);
   const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager =
       jni::GetAudioManager(env, j_context);
   AudioParameters input_parameters;
@@ -175,7 +175,7 @@
   RTC_DLOG(LS_INFO) << __FUNCTION__;
   // Get default audio input/output parameters.
   const auto j_context =
-      jni_zero::JavaParamRef<jobject>::CreateLeaky(env, application_context);
+      jni_zero::JavaRef<jobject>::CreateLeaky(env, application_context);
   const jni_zero::ScopedJavaLocalRef<jobject> j_audio_manager =
       jni::GetAudioManager(env, j_context);
   AudioParameters input_parameters;
diff --git a/sdk/android/native_api/jni/java_types.cc b/sdk/android/native_api/jni/java_types.cc
index a29f139..e257669 100644
--- a/sdk/android/native_api/jni/java_types.cc
+++ b/sdk/android/native_api/jni/java_types.cc
@@ -392,7 +392,7 @@
   if (!list.is_null()) {
     for (const jni_zero::JavaRef<jobject>& str : Iterable(jni, list)) {
       converted_list.push_back(
-          JavaToStdString(jni, jni_zero::JavaParamRef<jstring>::CreateLeaky(
+          JavaToStdString(jni, jni_zero::JavaRef<jstring>::CreateLeaky(
                                    jni, static_cast<jstring>(str.obj()))));
     }
   }
diff --git a/sdk/android/native_api/jni/java_types.h b/sdk/android/native_api/jni/java_types.h
index d6ab54f..9f6c017 100644
--- a/sdk/android/native_api/jni/java_types.h
+++ b/sdk/android/native_api/jni/java_types.h
@@ -357,7 +357,7 @@
 // Deprecated. Use scoped jobjects instead.
 inline std::string JavaToStdString(JNIEnv* jni, jstring j_string) {
   return JavaToStdString(
-      jni, jni_zero::JavaParamRef<jstring>::CreateLeaky(jni, j_string));
+      jni, jni_zero::JavaRef<jstring>::CreateLeaky(jni, j_string));
 }
 
 // Deprecated. Use JavaListToNativeVector<std::string, jstring> instead.
@@ -379,7 +379,7 @@
 inline std::map<std::string, std::string> JavaToStdMapStrings(JNIEnv* jni,
                                                               jobject j_map) {
   return JavaToStdMapStrings(
-      jni, jni_zero::JavaParamRef<jobject>::CreateLeaky(jni, j_map));
+      jni, jni_zero::JavaRef<jobject>::CreateLeaky(jni, j_map));
 }
 
 }  // namespace webrtc
diff --git a/sdk/android/native_api/jni/scoped_java_ref.h b/sdk/android/native_api/jni/scoped_java_ref.h
index 27baa50..fc25b85 100644
--- a/sdk/android/native_api/jni/scoped_java_ref.h
+++ b/sdk/android/native_api/jni/scoped_java_ref.h
@@ -19,7 +19,8 @@
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
-using jni_zero::JavaParamRef;
+template <typename T>
+using JavaParamRef = jni_zero::JavaRef<T>;
 using jni_zero::JavaRef;
 using jni_zero::ScopedJavaGlobalRef;
 using jni_zero::ScopedJavaLocalRef;
diff --git a/sdk/android/src/jni/android_histogram.cc b/sdk/android/src/jni/android_histogram.cc
index 0e85e60..043313a 100644
--- a/sdk/android/src/jni/android_histogram.cc
+++ b/sdk/android/src/jni/android_histogram.cc
@@ -24,7 +24,7 @@
 
 static jlong JNI_Histogram_CreateCounts(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_name,
+    const jni_zero::JavaRef<jstring>& j_name,
     jint min,
     jint max,
     jint buckets) {
@@ -35,7 +35,7 @@
 
 static jlong JNI_Histogram_CreateEnumeration(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_name,
+    const jni_zero::JavaRef<jstring>& j_name,
     jint max) {
   std::string name = JavaToStdString(jni, j_name);
   return jlongFromPointer(metrics::HistogramFactoryGetEnumeration(name, max));
diff --git a/sdk/android/src/jni/audio_device/audio_record_jni.cc b/sdk/android/src/jni/audio_device/audio_record_jni.cc
index 772fc46..82b47b7 100644
--- a/sdk/android/src/jni/audio_device/audio_record_jni.cc
+++ b/sdk/android/src/jni/audio_device/audio_record_jni.cc
@@ -244,8 +244,8 @@
 
 void AudioRecordJni::CacheDirectBufferAddress(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_caller,
-    const jni_zero::JavaParamRef<jobject>& byte_buffer) {
+    const jni_zero::JavaRef<jobject>& j_caller,
+    const jni_zero::JavaRef<jobject>& byte_buffer) {
   RTC_LOG(LS_INFO) << "OnCacheDirectBufferAddress";
   RTC_DCHECK(thread_checker_.IsCurrent());
   RTC_DCHECK(!direct_buffer_address_);
@@ -257,11 +257,10 @@
 
 // This method is called on a high-priority thread from Java. The name of
 // the thread is 'AudioRecordThread'.
-void AudioRecordJni::DataIsRecorded(
-    JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_caller,
-    int length,
-    int64_t capture_timestamp_ns) {
+void AudioRecordJni::DataIsRecorded(JNIEnv* env,
+                                    const jni_zero::JavaRef<jobject>& j_caller,
+                                    int length,
+                                    int64_t capture_timestamp_ns) {
   RTC_DCHECK(thread_checker_java_.IsCurrent());
   if (!audio_device_buffer_) {
     RTC_LOG(LS_ERROR) << "AttachAudioBuffer has not been called";
diff --git a/sdk/android/src/jni/audio_device/audio_record_jni.h b/sdk/android/src/jni/audio_device/audio_record_jni.h
index 06a6123..2e85c8c 100644
--- a/sdk/android/src/jni/audio_device/audio_record_jni.h
+++ b/sdk/android/src/jni/audio_device/audio_record_jni.h
@@ -82,10 +82,9 @@
   // is also stored in `direct_buffer_capacity_in_bytes_`.
   // This method will be called by the WebRtcAudioRecord constructor, i.e.,
   // on the same thread that this object is created on.
-  void CacheDirectBufferAddress(
-      JNIEnv* env,
-      const jni_zero::JavaParamRef<jobject>& j_caller,
-      const jni_zero::JavaParamRef<jobject>& byte_buffer);
+  void CacheDirectBufferAddress(JNIEnv* env,
+                                const jni_zero::JavaRef<jobject>& j_caller,
+                                const jni_zero::JavaRef<jobject>& byte_buffer);
 
   // Called periodically by the Java based WebRtcAudioRecord object when
   // recording has started. Each call indicates that there are `length` new
@@ -94,7 +93,7 @@
   // This method is called on a high-priority thread from Java. The name of
   // the thread is 'AudioRecordThread'.
   void DataIsRecorded(JNIEnv* env,
-                      const jni_zero::JavaParamRef<jobject>& j_caller,
+                      const jni_zero::JavaRef<jobject>& j_caller,
                       int length,
                       int64_t capture_timestamp_ns);
 
diff --git a/sdk/android/src/jni/audio_device/audio_track_jni.cc b/sdk/android/src/jni/audio_device/audio_track_jni.cc
index 59d6d75..ce8f295 100644
--- a/sdk/android/src/jni/audio_device/audio_track_jni.cc
+++ b/sdk/android/src/jni/audio_device/audio_track_jni.cc
@@ -240,7 +240,7 @@
 
 void AudioTrackJni::CacheDirectBufferAddress(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& byte_buffer) {
+    const jni_zero::JavaRef<jobject>& byte_buffer) {
   RTC_LOG(LS_INFO) << "OnCacheDirectBufferAddress";
   RTC_DCHECK(thread_checker_.IsCurrent());
   RTC_DCHECK(!direct_buffer_address_);
diff --git a/sdk/android/src/jni/audio_device/audio_track_jni.h b/sdk/android/src/jni/audio_device/audio_track_jni.h
index 8044182..cd4b87c 100644
--- a/sdk/android/src/jni/audio_device/audio_track_jni.h
+++ b/sdk/android/src/jni/audio_device/audio_track_jni.h
@@ -77,9 +77,8 @@
   // `byte_buffer` in `direct_buffer_address_`. The size of the buffer
   // is also stored in `direct_buffer_capacity_in_bytes_`.
   // Called on the same thread as the creating thread.
-  void CacheDirectBufferAddress(
-      JNIEnv* env,
-      const jni_zero::JavaParamRef<jobject>& byte_buffer);
+  void CacheDirectBufferAddress(JNIEnv* env,
+                                const jni_zero::JavaRef<jobject>& byte_buffer);
   // Called periodically by the Java based WebRtcAudioTrack object when
   // playout has started. Each call indicates that `length` new bytes should
   // be written to the memory area `direct_buffer_address_` for playout.
diff --git a/sdk/android/src/jni/audio_device/java_audio_device_module.cc b/sdk/android/src/jni/audio_device/java_audio_device_module.cc
index 80e4ec9..472921b 100644
--- a/sdk/android/src/jni/audio_device/java_audio_device_module.cc
+++ b/sdk/android/src/jni/audio_device/java_audio_device_module.cc
@@ -29,10 +29,10 @@
 
 static jlong JNI_JavaAudioDeviceModule_CreateAudioDeviceModule(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_context,
-    const jni_zero::JavaParamRef<jobject>& j_audio_manager,
-    const jni_zero::JavaParamRef<jobject>& j_webrtc_audio_record,
-    const jni_zero::JavaParamRef<jobject>& j_webrtc_audio_track,
+    const jni_zero::JavaRef<jobject>& j_context,
+    const jni_zero::JavaRef<jobject>& j_audio_manager,
+    const jni_zero::JavaRef<jobject>& j_webrtc_audio_record,
+    const jni_zero::JavaRef<jobject>& j_webrtc_audio_track,
     jlong webrtcEnvRef,
     int input_sample_rate,
     int output_sample_rate,
diff --git a/sdk/android/src/jni/environment.cc b/sdk/android/src/jni/environment.cc
index fab50eb..a93afe7 100644
--- a/sdk/android/src/jni/environment.cc
+++ b/sdk/android/src/jni/environment.cc
@@ -27,9 +27,8 @@
   delete reinterpret_cast<Environment*>(webrtcEnv);
 }
 
-jlong JNI_Environment_Create(
-    JNIEnv* env,
-    const jni_zero::JavaParamRef<jstring>& fieldTrials) {
+jlong JNI_Environment_Create(JNIEnv* env,
+                             const jni_zero::JavaRef<jstring>& fieldTrials) {
   std::unique_ptr<FieldTrialsView> field_trials;
   if (!IsNull(env, fieldTrials)) {
     field_trials =
diff --git a/sdk/android/src/jni/h264_utils.cc b/sdk/android/src/jni/h264_utils.cc
index 5823317..c0177ac 100644
--- a/sdk/android/src/jni/h264_utils.cc
+++ b/sdk/android/src/jni/h264_utils.cc
@@ -20,8 +20,8 @@
 
 static jboolean JNI_H264Utils_IsSameH264Profile(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& params1,
-    const jni_zero::JavaParamRef<jobject>& params2) {
+    const jni_zero::JavaRef<jobject>& params1,
+    const jni_zero::JavaRef<jobject>& params2) {
   return H264IsSameProfile(JavaToNativeStringMap(env, params1),
                            JavaToNativeStringMap(env, params2));
 }
diff --git a/sdk/android/src/jni/java_i420_buffer.cc b/sdk/android/src/jni/java_i420_buffer.cc
index b903492..e1c232a 100644
--- a/sdk/android/src/jni/java_i420_buffer.cc
+++ b/sdk/android/src/jni/java_i420_buffer.cc
@@ -22,21 +22,21 @@
 
 static void JNI_JavaI420Buffer_CropAndScaleI420(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_src_y,
+    const jni_zero::JavaRef<jobject>& j_src_y,
     jint src_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_src_u,
+    const jni_zero::JavaRef<jobject>& j_src_u,
     jint src_stride_u,
-    const jni_zero::JavaParamRef<jobject>& j_src_v,
+    const jni_zero::JavaRef<jobject>& j_src_v,
     jint src_stride_v,
     jint crop_x,
     jint crop_y,
     jint crop_width,
     jint crop_height,
-    const jni_zero::JavaParamRef<jobject>& j_dst_y,
+    const jni_zero::JavaRef<jobject>& j_dst_y,
     jint dst_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_dst_u,
+    const jni_zero::JavaRef<jobject>& j_dst_u,
     jint dst_stride_u,
-    const jni_zero::JavaParamRef<jobject>& j_dst_v,
+    const jni_zero::JavaRef<jobject>& j_dst_v,
     jint dst_stride_v,
     jint scale_width,
     jint scale_height) {
diff --git a/sdk/android/src/jni/jni_common.cc b/sdk/android/src/jni/jni_common.cc
index 7794f4e..d2ea7cb 100644
--- a/sdk/android/src/jni/jni_common.cc
+++ b/sdk/android/src/jni/jni_common.cc
@@ -37,7 +37,7 @@
 
 static void JNI_JniCommon_FreeByteBuffer(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& byte_buffer) {
+    const jni_zero::JavaRef<jobject>& byte_buffer) {
   void* data = jni->GetDirectBufferAddress(byte_buffer.obj());
   ::operator delete(data);
 }
diff --git a/sdk/android/src/jni/nv12_buffer.cc b/sdk/android/src/jni/nv12_buffer.cc
index ae62874..f460e9c 100644
--- a/sdk/android/src/jni/nv12_buffer.cc
+++ b/sdk/android/src/jni/nv12_buffer.cc
@@ -29,16 +29,16 @@
     jint crop_height,
     jint scale_width,
     jint scale_height,
-    const jni_zero::JavaParamRef<jobject>& j_src,
+    const jni_zero::JavaRef<jobject>& j_src,
     jint src_width,
     jint src_height,
     jint src_stride,
     jint src_slice_height,
-    const jni_zero::JavaParamRef<jobject>& j_dst_y,
+    const jni_zero::JavaRef<jobject>& j_dst_y,
     jint dst_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_dst_u,
+    const jni_zero::JavaRef<jobject>& j_dst_u,
     jint dst_stride_u,
-    const jni_zero::JavaParamRef<jobject>& j_dst_v,
+    const jni_zero::JavaRef<jobject>& j_dst_v,
     jint dst_stride_v) {
   const int src_stride_y = src_stride;
   const int src_stride_uv = src_stride;
diff --git a/sdk/android/src/jni/nv21_buffer.cc b/sdk/android/src/jni/nv21_buffer.cc
index 5fb9a4e..658ac83 100644
--- a/sdk/android/src/jni/nv21_buffer.cc
+++ b/sdk/android/src/jni/nv21_buffer.cc
@@ -28,14 +28,14 @@
     jint crop_height,
     jint scale_width,
     jint scale_height,
-    const jni_zero::JavaParamRef<jbyteArray>& j_src,
+    const jni_zero::JavaRef<jbyteArray>& j_src,
     jint src_width,
     jint src_height,
-    const jni_zero::JavaParamRef<jobject>& j_dst_y,
+    const jni_zero::JavaRef<jobject>& j_dst_y,
     jint dst_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_dst_u,
+    const jni_zero::JavaRef<jobject>& j_dst_u,
     jint dst_stride_u,
-    const jni_zero::JavaParamRef<jobject>& j_dst_v,
+    const jni_zero::JavaRef<jobject>& j_dst_v,
     jint dst_stride_v) {
   const int src_stride_y = src_width;
   const int src_stride_uv = src_width;
diff --git a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
index 17ba0e6..489f396 100644
--- a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
+++ b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
@@ -28,7 +28,7 @@
 
 static jlong JNI_CallSessionFileRotatingLogSink_AddSink(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_dirPath,
+    const jni_zero::JavaRef<jstring>& j_dirPath,
     jint j_maxFileSize,
     jint j_severity) {
   std::string dir_path = JavaToStdString(jni, j_dirPath);
@@ -56,7 +56,7 @@
 static jni_zero::ScopedJavaLocalRef<jbyteArray>
 JNI_CallSessionFileRotatingLogSink_GetLogData(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_dirPath) {
+    const jni_zero::JavaRef<jstring>& j_dirPath) {
   std::string dir_path = JavaToStdString(jni, j_dirPath);
   CallSessionFileRotatingStreamReader file_reader(dir_path);
   size_t log_size = file_reader.GetSize();
diff --git a/sdk/android/src/jni/pc/data_channel.cc b/sdk/android/src/jni/pc/data_channel.cc
index 4380bc9..e3f17ac 100644
--- a/sdk/android/src/jni/pc/data_channel.cc
+++ b/sdk/android/src/jni/pc/data_channel.cc
@@ -73,9 +73,8 @@
   Java_Observer_onMessage(env, j_observer_global_, j_buffer);
 }
 
-DataChannelInterface* ExtractNativeDC(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc) {
+DataChannelInterface* ExtractNativeDC(JNIEnv* jni,
+                                      const jni_zero::JavaRef<jobject>& j_dc) {
   return reinterpret_cast<DataChannelInterface*>(
       Java_DataChannel_getNativeDataChannel(jni, j_dc));
 }
@@ -106,8 +105,8 @@
 
 static jlong JNI_DataChannel_RegisterObserver(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc,
-    const jni_zero::JavaParamRef<jobject>& j_observer) {
+    const jni_zero::JavaRef<jobject>& j_dc,
+    const jni_zero::JavaRef<jobject>& j_observer) {
   auto observer = std::make_unique<DataChannelObserverJni>(jni, j_observer);
   ExtractNativeDC(jni, j_dc)->RegisterObserver(observer.get());
   return jlongFromPointer(observer.release());
@@ -115,7 +114,7 @@
 
 static void JNI_DataChannel_UnregisterObserver(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc,
+    const jni_zero::JavaRef<jobject>& j_dc,
     jlong native_observer) {
   ExtractNativeDC(jni, j_dc)->UnregisterObserver();
   delete reinterpret_cast<DataChannelObserverJni*>(native_observer);
@@ -123,12 +122,12 @@
 
 static jni_zero::ScopedJavaLocalRef<jstring> JNI_DataChannel_Label(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc) {
+    const jni_zero::JavaRef<jobject>& j_dc) {
   return NativeToJavaString(jni, ExtractNativeDC(jni, j_dc)->label());
 }
 
 static jint JNI_DataChannel_Id(JNIEnv* jni,
-                               const jni_zero::JavaParamRef<jobject>& j_dc) {
+                               const jni_zero::JavaRef<jobject>& j_dc) {
   int id = ExtractNativeDC(jni, j_dc)->id();
   RTC_CHECK_LE(id, std::numeric_limits<int32_t>::max())
       << "id overflowed jint!";
@@ -137,13 +136,13 @@
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_DataChannel_State(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc) {
+    const jni_zero::JavaRef<jobject>& j_dc) {
   return Java_State_fromNativeIndex(jni, ExtractNativeDC(jni, j_dc)->state());
 }
 
 static jlong JNI_DataChannel_BufferedAmount(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc) {
+    const jni_zero::JavaRef<jobject>& j_dc) {
   uint64_t buffered_amount = ExtractNativeDC(jni, j_dc)->buffered_amount();
   RTC_CHECK_LE(buffered_amount, std::numeric_limits<int64_t>::max())
       << "buffered_amount overflowed jlong!";
@@ -151,15 +150,14 @@
 }
 
 static void JNI_DataChannel_Close(JNIEnv* jni,
-                                  const jni_zero::JavaParamRef<jobject>& j_dc) {
+                                  const jni_zero::JavaRef<jobject>& j_dc) {
   ExtractNativeDC(jni, j_dc)->Close();
 }
 
-static jboolean JNI_DataChannel_Send(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_dc,
-    const jni_zero::JavaParamRef<jbyteArray>& data,
-    jboolean binary) {
+static jboolean JNI_DataChannel_Send(JNIEnv* jni,
+                                     const jni_zero::JavaRef<jobject>& j_dc,
+                                     const jni_zero::JavaRef<jbyteArray>& data,
+                                     jboolean binary) {
   std::vector<int8_t> buffer = JavaToNativeByteArray(jni, data);
   bool ret = ExtractNativeDC(jni, j_dc)->Send(
       DataBuffer(CopyOnWriteBuffer(buffer.data(), buffer.size()), binary));
diff --git a/sdk/android/src/jni/pc/dtmf_sender.cc b/sdk/android/src/jni/pc/dtmf_sender.cc
index 54197c1..aa77861 100644
--- a/sdk/android/src/jni/pc/dtmf_sender.cc
+++ b/sdk/android/src/jni/pc/dtmf_sender.cc
@@ -27,7 +27,7 @@
 static jboolean JNI_DtmfSender_InsertDtmf(
     JNIEnv* jni,
     jlong j_dtmf_sender_pointer,
-    const jni_zero::JavaParamRef<jstring>& tones,
+    const jni_zero::JavaRef<jstring>& tones,
     jint duration,
     jint inter_tone_gap) {
   return reinterpret_cast<DtmfSenderInterface*>(j_dtmf_sender_pointer)
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index 590978b..27d4758 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -523,7 +523,7 @@
 
 static jlong JNI_PeerConnection_CreatePeerConnectionObserver(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_observer) {
+    const jni_zero::JavaRef<jobject>& j_observer) {
   return jlongFromPointer(new PeerConnectionObserverJni(jni, j_observer));
 }
 
@@ -533,14 +533,13 @@
 
 static jlong JNI_PeerConnection_GetNativePeerConnection(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return jlongFromPointer(ExtractNativePC(jni, j_pc));
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject>
-JNI_PeerConnection_GetLocalDescription(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+JNI_PeerConnection_GetLocalDescription(JNIEnv* jni,
+                                       const jni_zero::JavaRef<jobject>& j_pc) {
   PeerConnectionInterface* pc = ExtractNativePC(jni, j_pc);
   // It's only safe to operate on SessionDescriptionInterface on the
   // signaling thread, but `jni` may only be used on the current thread, so we
@@ -560,7 +559,7 @@
 static jni_zero::ScopedJavaLocalRef<jobject>
 JNI_PeerConnection_GetRemoteDescription(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   PeerConnectionInterface* pc = ExtractNativePC(jni, j_pc);
   // It's only safe to operate on SessionDescriptionInterface on the
   // signaling thread, but `jni` may only be used on the current thread, so we
@@ -579,7 +578,7 @@
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_GetCertificate(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   const PeerConnectionInterface::RTCConfiguration rtc_config =
       ExtractNativePC(jni, j_pc)->GetConfiguration();
   scoped_refptr<RTCCertificate> certificate = rtc_config.certificates[0];
@@ -587,11 +586,10 @@
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject>
-JNI_PeerConnection_CreateDataChannel(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jstring>& j_label,
-    const jni_zero::JavaParamRef<jobject>& j_init) {
+JNI_PeerConnection_CreateDataChannel(JNIEnv* jni,
+                                     const jni_zero::JavaRef<jobject>& j_pc,
+                                     const jni_zero::JavaRef<jstring>& j_label,
+                                     const jni_zero::JavaRef<jobject>& j_init) {
   DataChannelInit init = JavaToNativeDataChannelInit(jni, j_init);
   auto result = ExtractNativePC(jni, j_pc)->CreateDataChannelOrError(
       JavaToNativeString(jni, j_label), &init);
@@ -603,9 +601,9 @@
 
 static void JNI_PeerConnection_CreateOffer(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer,
-    const jni_zero::JavaParamRef<jobject>& j_constraints) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer,
+    const jni_zero::JavaRef<jobject>& j_constraints) {
   std::unique_ptr<MediaConstraints> constraints =
       JavaToNativeMediaConstraints(jni, j_constraints);
   auto observer = make_ref_counted<CreateSdpObserverJni>(
@@ -617,9 +615,9 @@
 
 static void JNI_PeerConnection_CreateAnswer(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer,
-    const jni_zero::JavaParamRef<jobject>& j_constraints) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer,
+    const jni_zero::JavaRef<jobject>& j_constraints) {
   std::unique_ptr<MediaConstraints> constraints =
       JavaToNativeMediaConstraints(jni, j_constraints);
   auto observer = make_ref_counted<CreateSdpObserverJni>(
@@ -631,17 +629,17 @@
 
 static void JNI_PeerConnection_SetLocalDescriptionAutomatically(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer) {
   auto observer = make_ref_counted<SetLocalSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetLocalDescription(observer);
 }
 
 static void JNI_PeerConnection_SetLocalDescription(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer,
-    const jni_zero::JavaParamRef<jobject>& j_sdp) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer,
+    const jni_zero::JavaRef<jobject>& j_sdp) {
   auto observer = make_ref_counted<SetLocalSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetLocalDescription(
       JavaToNativeSessionDescription(jni, j_sdp), observer);
@@ -649,9 +647,9 @@
 
 static void JNI_PeerConnection_SetRemoteDescription(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer,
-    const jni_zero::JavaParamRef<jobject>& j_sdp) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer,
+    const jni_zero::JavaRef<jobject>& j_sdp) {
   auto observer = make_ref_counted<SetRemoteSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetRemoteDescription(
       JavaToNativeSessionDescription(jni, j_sdp), observer);
@@ -659,28 +657,28 @@
 
 static void JNI_PeerConnection_RestartIce(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   ExtractNativePC(jni, j_pc)->RestartIce();
 }
 
 static void JNI_PeerConnection_SetAudioPlayout(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jboolean playout) {
   ExtractNativePC(jni, j_pc)->SetAudioPlayout(playout);
 }
 
 static void JNI_PeerConnection_SetAudioRecording(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jboolean recording) {
   ExtractNativePC(jni, j_pc)->SetAudioRecording(recording);
 }
 
 static jboolean JNI_PeerConnection_SetConfiguration(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_rtc_config) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_rtc_config) {
   // Need to merge constraints into RTCConfiguration again, which are stored
   // in the OwnedPeerConnection object.
   OwnedPeerConnection* owned_pc = reinterpret_cast<OwnedPeerConnection*>(
@@ -696,10 +694,10 @@
 
 static jboolean JNI_PeerConnection_AddIceCandidate(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jstring>& j_sdp_mid,
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jstring>& j_sdp_mid,
     jint j_sdp_mline_index,
-    const jni_zero::JavaParamRef<jstring>& j_candidate_sdp) {
+    const jni_zero::JavaRef<jstring>& j_candidate_sdp) {
   std::string sdp_mid = JavaToNativeString(jni, j_sdp_mid);
   std::string sdp = JavaToNativeString(jni, j_candidate_sdp);
   std::unique_ptr<IceCandidate> candidate(
@@ -709,11 +707,11 @@
 
 static void JNI_PeerConnection_AddIceCandidateWithObserver(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jstring>& j_sdp_mid,
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jstring>& j_sdp_mid,
     jint j_sdp_mline_index,
-    const jni_zero::JavaParamRef<jstring>& j_candidate_sdp,
-    const jni_zero::JavaParamRef<jobject>& j_observer) {
+    const jni_zero::JavaRef<jstring>& j_candidate_sdp,
+    const jni_zero::JavaRef<jobject>& j_observer) {
   std::string sdp_mid = JavaToNativeString(jni, j_sdp_mid);
   std::string sdp = JavaToNativeString(jni, j_candidate_sdp);
   std::unique_ptr<IceCandidate> candidate(
@@ -728,8 +726,8 @@
 
 static jboolean JNI_PeerConnection_RemoveIceCandidates(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobjectArray>& j_candidates) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobjectArray>& j_candidates) {
   std::vector<std::unique_ptr<IceCandidate>> candidates_owned =
       JavaToNativeVector<std::unique_ptr<IceCandidate>>(jni, j_candidates,
                                                         &JavaToNativeCandidate);
@@ -744,7 +742,7 @@
 
 static jboolean JNI_PeerConnection_AddLocalStream(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_stream) {
   return ExtractNativePC(jni, j_pc)->AddStream(
       reinterpret_cast<MediaStreamInterface*>(native_stream));
@@ -752,7 +750,7 @@
 
 static void JNI_PeerConnection_RemoveLocalStream(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_stream) {
   ExtractNativePC(jni, j_pc)->RemoveStream(
       reinterpret_cast<MediaStreamInterface*>(native_stream));
@@ -760,9 +758,9 @@
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_CreateSender(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jstring>& j_kind,
-    const jni_zero::JavaParamRef<jstring>& j_stream_id) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jstring>& j_kind,
+    const jni_zero::JavaRef<jstring>& j_stream_id) {
   std::string kind = JavaToNativeString(jni, j_kind);
   std::string stream_id = JavaToNativeString(jni, j_stream_id);
   scoped_refptr<RtpSenderInterface> sender =
@@ -772,30 +770,30 @@
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_GetSenders(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return NativeToJavaList(jni, ExtractNativePC(jni, j_pc)->GetSenders(),
                           &NativeToJavaRtpSender);
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_GetReceivers(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return NativeToJavaList(jni, ExtractNativePC(jni, j_pc)->GetReceivers(),
                           &NativeToJavaRtpReceiver);
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_GetTransceivers(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return NativeToJavaList(jni, ExtractNativePC(jni, j_pc)->GetTransceivers(),
                           &NativeToJavaRtpTransceiver);
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_AddTrack(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     const jlong native_track,
-    const jni_zero::JavaParamRef<jobject>& j_stream_labels) {
+    const jni_zero::JavaRef<jobject>& j_stream_labels) {
   RTCErrorOr<scoped_refptr<RtpSenderInterface>> result =
       ExtractNativePC(jni, j_pc)->AddTrack(
           scoped_refptr<MediaStreamTrackInterface>(
@@ -812,7 +810,7 @@
 
 static jboolean JNI_PeerConnection_RemoveTrack(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_sender) {
   return ExtractNativePC(jni, j_pc)
       ->RemoveTrackOrError(scoped_refptr<RtpSenderInterface>(
@@ -823,9 +821,9 @@
 static jni_zero::ScopedJavaLocalRef<jobject>
 JNI_PeerConnection_AddTransceiverWithTrack(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_track,
-    const jni_zero::JavaParamRef<jobject>& j_init) {
+    const jni_zero::JavaRef<jobject>& j_init) {
   RTCErrorOr<scoped_refptr<RtpTransceiverInterface>> result =
       ExtractNativePC(jni, j_pc)->AddTransceiver(
           scoped_refptr<MediaStreamTrackInterface>(
@@ -843,9 +841,9 @@
 static jni_zero::ScopedJavaLocalRef<jobject>
 JNI_PeerConnection_AddTransceiverOfType(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_media_type,
-    const jni_zero::JavaParamRef<jobject>& j_init) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_media_type,
+    const jni_zero::JavaRef<jobject>& j_init) {
   RTCErrorOr<scoped_refptr<RtpTransceiverInterface>> result =
       ExtractNativePC(jni, j_pc)->AddTransceiver(
           JavaToNativeMediaType(jni, j_media_type),
@@ -861,8 +859,8 @@
 
 static jboolean JNI_PeerConnection_OldGetStats(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_observer,
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_observer,
     jlong native_track) {
   auto observer = make_ref_counted<StatsObserverJni>(jni, j_observer);
   return ExtractNativePC(jni, j_pc)->GetStats(
@@ -873,8 +871,8 @@
 
 static void JNI_PeerConnection_NewGetStats(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_callback) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_callback) {
   auto callback =
       make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
   ExtractNativePC(jni, j_pc)->GetStats(callback.get());
@@ -882,9 +880,9 @@
 
 static void JNI_PeerConnection_NewGetStatsSender(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_sender,
-    const jni_zero::JavaParamRef<jobject>& j_callback) {
+    const jni_zero::JavaRef<jobject>& j_callback) {
   auto callback =
       make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
   ExtractNativePC(jni, j_pc)->GetStats(
@@ -895,9 +893,9 @@
 
 static void JNI_PeerConnection_NewGetStatsReceiver(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     jlong native_receiver,
-    const jni_zero::JavaParamRef<jobject>& j_callback) {
+    const jni_zero::JavaRef<jobject>& j_callback) {
   auto callback =
       make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
   ExtractNativePC(jni, j_pc)->GetStats(
@@ -908,10 +906,10 @@
 
 static jboolean JNI_PeerConnection_SetBitrate(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
-    const jni_zero::JavaParamRef<jobject>& j_min,
-    const jni_zero::JavaParamRef<jobject>& j_current,
-    const jni_zero::JavaParamRef<jobject>& j_max) {
+    const jni_zero::JavaRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_min,
+    const jni_zero::JavaRef<jobject>& j_current,
+    const jni_zero::JavaRef<jobject>& j_max) {
   BitrateSettings params;
   params.min_bitrate_bps = JavaToNativeOptionalInt(jni, j_min);
   params.start_bitrate_bps = JavaToNativeOptionalInt(jni, j_current);
@@ -921,7 +919,7 @@
 
 static jboolean JNI_PeerConnection_StartRtcEventLog(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc,
+    const jni_zero::JavaRef<jobject>& j_pc,
     int file_descriptor,
     int max_size_bytes) {
   // TODO(eladalon): It would be better to not allow negative values into PC.
@@ -939,44 +937,41 @@
 
 static void JNI_PeerConnection_StopRtcEventLog(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   ExtractNativePC(jni, j_pc)->StopRtcEventLog();
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_SignalingState(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return Java_SignalingState_fromNativeIndex(
       env, ExtractNativePC(env, j_pc)->signaling_state());
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject>
-JNI_PeerConnection_IceConnectionState(
-    JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+JNI_PeerConnection_IceConnectionState(JNIEnv* env,
+                                      const jni_zero::JavaRef<jobject>& j_pc) {
   return Java_IceConnectionState_fromNativeIndex(
       env, ExtractNativePC(env, j_pc)->ice_connection_state());
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject> JNI_PeerConnection_ConnectionState(
     JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+    const jni_zero::JavaRef<jobject>& j_pc) {
   return Java_PeerConnectionState_fromNativeIndex(
       env,
       static_cast<int>(ExtractNativePC(env, j_pc)->peer_connection_state()));
 }
 
 static jni_zero::ScopedJavaLocalRef<jobject>
-JNI_PeerConnection_IceGatheringState(
-    JNIEnv* env,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+JNI_PeerConnection_IceGatheringState(JNIEnv* env,
+                                     const jni_zero::JavaRef<jobject>& j_pc) {
   return Java_IceGatheringState_fromNativeIndex(
       env, ExtractNativePC(env, j_pc)->ice_gathering_state());
 }
 
-static void JNI_PeerConnection_Close(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_pc) {
+static void JNI_PeerConnection_Close(JNIEnv* jni,
+                                     const jni_zero::JavaRef<jobject>& j_pc) {
   ExtractNativePC(jni, j_pc)->Close();
 }
 
diff --git a/sdk/android/src/jni/pc/peer_connection_factory.cc b/sdk/android/src/jni/pc/peer_connection_factory.cc
index ccbe29f..b92f1e0 100644
--- a/sdk/android/src/jni/pc/peer_connection_factory.cc
+++ b/sdk/android/src/jni/pc/peer_connection_factory.cc
@@ -204,7 +204,7 @@
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
 static void JNI_PeerConnectionFactory_InitializeFieldTrials(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_trials_init_string) {
+    const jni_zero::JavaRef<jstring>& j_trials_init_string) {
   std::unique_ptr<std::string>& field_trials_init_string =
       GetStaticObjects().field_trials_init_string;
 
@@ -226,7 +226,7 @@
 
 static jboolean JNI_PeerConnectionFactory_StartInternalTracingCapture(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jstring>& j_event_tracing_filename) {
+    const jni_zero::JavaRef<jstring>& j_event_tracing_filename) {
   if (j_event_tracing_filename.is_null())
     return false;
 
@@ -252,14 +252,14 @@
 // `network_state_predictor_factory`, `neteq_factory`.
 ScopedJavaLocalRef<jobject> CreatePeerConnectionFactoryForJava(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& jcontext,
-    const jni_zero::JavaParamRef<jobject>& joptions,
+    const jni_zero::JavaRef<jobject>& jcontext,
+    const jni_zero::JavaRef<jobject>& joptions,
     const Environment& env,
     scoped_refptr<AudioDeviceModule> audio_device_module,
     scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
     scoped_refptr<AudioDecoderFactory> audio_decoder_factory,
-    const jni_zero::JavaParamRef<jobject>& jencoder_factory,
-    const jni_zero::JavaParamRef<jobject>& jdecoder_factory,
+    const jni_zero::JavaRef<jobject>& jencoder_factory,
+    const jni_zero::JavaRef<jobject>& jdecoder_factory,
     scoped_refptr<AudioProcessing> audio_processor,
     std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory,
     std::unique_ptr<NetworkControllerFactoryInterface>
@@ -346,14 +346,14 @@
 static jni_zero::ScopedJavaLocalRef<jobject>
 JNI_PeerConnectionFactory_CreatePeerConnectionFactory(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& jcontext,
-    const jni_zero::JavaParamRef<jobject>& joptions,
+    const jni_zero::JavaRef<jobject>& jcontext,
+    const jni_zero::JavaRef<jobject>& joptions,
     jlong webrtc_env_ref,
     jlong native_audio_device_module,
     jlong native_audio_encoder_factory,
     jlong native_audio_decoder_factory,
-    const jni_zero::JavaParamRef<jobject>& jencoder_factory,
-    const jni_zero::JavaParamRef<jobject>& jdecoder_factory,
+    const jni_zero::JavaRef<jobject>& jencoder_factory,
+    const jni_zero::JavaRef<jobject>& jdecoder_factory,
     jlong native_audio_processor,
     jlong native_fec_controller_factory,
     jlong native_network_controller_factory,
@@ -394,7 +394,7 @@
 static jlong JNI_PeerConnectionFactory_CreateLocalMediaStream(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jstring>& label) {
+    const jni_zero::JavaRef<jstring>& label) {
   scoped_refptr<MediaStreamInterface> stream(
       PeerConnectionFactoryFromJava(native_factory)
           ->CreateLocalMediaStream(JavaToStdString(jni, label)));
@@ -404,7 +404,7 @@
 static jlong JNI_PeerConnectionFactory_CreateAudioSource(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jobject>& j_constraints) {
+    const jni_zero::JavaRef<jobject>& j_constraints) {
   std::unique_ptr<MediaConstraints> constraints =
       JavaToNativeMediaConstraints(jni, j_constraints);
   AudioOptions options;
@@ -418,7 +418,7 @@
 jlong JNI_PeerConnectionFactory_CreateAudioTrack(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jstring>& id,
+    const jni_zero::JavaRef<jstring>& id,
     jlong native_source) {
   scoped_refptr<AudioTrackInterface> track(
       PeerConnectionFactoryFromJava(native_factory)
@@ -431,7 +431,7 @@
 ScopedJavaLocalRef<jobject> JNI_PeerConnectionFactory_GetRtpSenderCapabilities(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jobject>& media_type) {
+    const jni_zero::JavaRef<jobject>& media_type) {
   auto factory = PeerConnectionFactoryFromJava(native_factory);
   return NativeToJavaRtpCapabilities(
       jni, factory->GetRtpSenderCapabilities(
@@ -442,7 +442,7 @@
 JNI_PeerConnectionFactory_GetRtpReceiverCapabilities(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jobject>& media_type) {
+    const jni_zero::JavaRef<jobject>& media_type) {
   auto factory = PeerConnectionFactoryFromJava(native_factory);
   return NativeToJavaRtpCapabilities(
       jni, factory->GetRtpReceiverCapabilities(
@@ -472,10 +472,10 @@
 static jlong JNI_PeerConnectionFactory_CreatePeerConnection(
     JNIEnv* jni,
     jlong factory,
-    const jni_zero::JavaParamRef<jobject>& j_rtc_config,
-    const jni_zero::JavaParamRef<jobject>& j_constraints,
+    const jni_zero::JavaRef<jobject>& j_rtc_config,
+    const jni_zero::JavaRef<jobject>& j_constraints,
     jlong observer_p,
-    const jni_zero::JavaParamRef<jobject>& j_sslCertificateVerifier) {
+    const jni_zero::JavaRef<jobject>& j_sslCertificateVerifier) {
   std::unique_ptr<PeerConnectionObserver> observer(
       reinterpret_cast<PeerConnectionObserver*>(observer_p));
 
@@ -537,7 +537,7 @@
 static jlong JNI_PeerConnectionFactory_CreateVideoTrack(
     JNIEnv* jni,
     jlong native_factory,
-    const jni_zero::JavaParamRef<jstring>& id,
+    const jni_zero::JavaRef<jstring>& id,
     jlong native_source) {
   scoped_refptr<VideoTrackInterface> track =
       PeerConnectionFactoryFromJava(native_factory)
@@ -556,7 +556,7 @@
 
 static void JNI_PeerConnectionFactory_InjectLoggable(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_logging,
+    const jni_zero::JavaRef<jobject>& j_logging,
     jint nativeSeverity) {
   std::unique_ptr<JNILogSink>& jni_log_sink = GetStaticObjects().jni_log_sink;
 
diff --git a/sdk/android/src/jni/pc/rtc_certificate.cc b/sdk/android/src/jni/pc/rtc_certificate.cc
index dffe8ea..72456c2 100644
--- a/sdk/android/src/jni/pc/rtc_certificate.cc
+++ b/sdk/android/src/jni/pc/rtc_certificate.cc
@@ -49,7 +49,7 @@
 static jni_zero::ScopedJavaLocalRef<jobject>
 JNI_RtcCertificatePem_GenerateCertificate(
     JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_key_type,
+    const jni_zero::JavaRef<jobject>& j_key_type,
     jlong j_expires) {
   KeyType key_type = JavaToNativeKeyType(jni, j_key_type);
   uint64_t expires = (uint64_t)j_expires;
diff --git a/sdk/android/src/jni/pc/rtp_receiver.cc b/sdk/android/src/jni/pc/rtp_receiver.cc
index 3b88f6a..772bbb7 100644
--- a/sdk/android/src/jni/pc/rtp_receiver.cc
+++ b/sdk/android/src/jni/pc/rtp_receiver.cc
@@ -111,7 +111,7 @@
 static jlong JNI_RtpReceiver_SetObserver(
     JNIEnv* jni,
     jlong j_rtp_receiver_pointer,
-    const jni_zero::JavaParamRef<jobject>& j_observer) {
+    const jni_zero::JavaRef<jobject>& j_observer) {
   RtpReceiverObserverJni* rtpReceiverObserver =
       new RtpReceiverObserverJni(jni, j_observer);
   reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)
diff --git a/sdk/android/src/jni/pc/rtp_sender.cc b/sdk/android/src/jni/pc/rtp_sender.cc
index 6966ada..c294d9e 100644
--- a/sdk/android/src/jni/pc/rtp_sender.cc
+++ b/sdk/android/src/jni/pc/rtp_sender.cc
@@ -59,7 +59,7 @@
 static void JNI_RtpSender_SetStreams(
     JNIEnv* jni,
     jlong j_rtp_sender_pointer,
-    const jni_zero::JavaParamRef<jobject>& j_stream_labels) {
+    const jni_zero::JavaRef<jobject>& j_stream_labels) {
   reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
       ->SetStreams(JavaListToNativeVector<std::string, jstring>(
           jni, j_stream_labels, &JavaToNativeString));
@@ -86,7 +86,7 @@
 jboolean JNI_RtpSender_SetParameters(
     JNIEnv* jni,
     jlong j_rtp_sender_pointer,
-    const jni_zero::JavaParamRef<jobject>& j_parameters) {
+    const jni_zero::JavaRef<jobject>& j_parameters) {
   if (IsNull(jni, j_parameters)) {
     return false;
   }
diff --git a/sdk/android/src/jni/pc/rtp_transceiver.cc b/sdk/android/src/jni/pc/rtp_transceiver.cc
index 0d2e13f..b93d77ce 100644
--- a/sdk/android/src/jni/pc/rtp_transceiver.cc
+++ b/sdk/android/src/jni/pc/rtp_transceiver.cc
@@ -157,7 +157,7 @@
 ScopedJavaLocalRef<jobject> JNI_RtpTransceiver_SetCodecPreferences(
     JNIEnv* jni,
     jlong j_rtp_transceiver_pointer,
-    const jni_zero::JavaParamRef<jobject>& j_codecs) {
+    const jni_zero::JavaRef<jobject>& j_codecs) {
   std::vector<RtpCodecCapability> codecs;
   if (j_codecs) {
     codecs = JavaListToNativeVector<RtpCodecCapability, jobject>(
@@ -187,7 +187,7 @@
 jboolean JNI_RtpTransceiver_SetDirection(
     JNIEnv* jni,
     jlong j_rtp_transceiver_pointer,
-    const jni_zero::JavaParamRef<jobject>& j_rtp_transceiver_direction) {
+    const jni_zero::JavaRef<jobject>& j_rtp_transceiver_direction) {
   if (IsNull(jni, j_rtp_transceiver_direction)) {
     return false;
   }
diff --git a/sdk/android/src/jni/software_video_decoder_factory.cc b/sdk/android/src/jni/software_video_decoder_factory.cc
index 8ce0333..d0d743b 100644
--- a/sdk/android/src/jni/software_video_decoder_factory.cc
+++ b/sdk/android/src/jni/software_video_decoder_factory.cc
@@ -30,7 +30,7 @@
 jboolean JNI_SoftwareVideoDecoderFactory_IsSupported(
     JNIEnv* env,
     jlong j_factory,
-    const jni_zero::JavaParamRef<jobject>& j_info) {
+    const jni_zero::JavaRef<jobject>& j_info) {
   return VideoCodecInfoToSdpVideoFormat(env, j_info)
       .IsCodecInList(reinterpret_cast<VideoDecoderFactory*>(j_factory)
                          ->GetSupportedFormats());
@@ -40,7 +40,7 @@
     JNIEnv* env,
     jlong j_factory,
     jlong j_webrtc_env_ref,
-    const jni_zero::JavaParamRef<jobject>& j_info) {
+    const jni_zero::JavaRef<jobject>& j_info) {
   return NativeToJavaPointer(
       reinterpret_cast<VideoDecoderFactory*>(j_factory)
           ->Create(*reinterpret_cast<const Environment*>(j_webrtc_env_ref),
diff --git a/sdk/android/src/jni/software_video_encoder_factory.cc b/sdk/android/src/jni/software_video_encoder_factory.cc
index e288256..51c40bd 100644
--- a/sdk/android/src/jni/software_video_encoder_factory.cc
+++ b/sdk/android/src/jni/software_video_encoder_factory.cc
@@ -28,7 +28,7 @@
 jboolean JNI_SoftwareVideoEncoderFactory_IsSupported(
     JNIEnv* env,
     jlong j_factory,
-    const jni_zero::JavaParamRef<jobject>& j_info) {
+    const jni_zero::JavaRef<jobject>& j_info) {
   return VideoCodecInfoToSdpVideoFormat(env, j_info)
       .IsCodecInList(reinterpret_cast<VideoEncoderFactory*>(j_factory)
                          ->GetSupportedFormats());
@@ -38,7 +38,7 @@
     JNIEnv* env,
     jlong j_factory,
     jlong j_webrtc_env_ref,
-    const jni_zero::JavaParamRef<jobject>& j_info) {
+    const jni_zero::JavaRef<jobject>& j_info) {
   return NativeToJavaPointer(
       reinterpret_cast<VideoEncoderFactory*>(j_factory)
           ->Create(*reinterpret_cast<const Environment*>(j_webrtc_env_ref),
diff --git a/sdk/android/src/jni/video_decoder_fallback.cc b/sdk/android/src/jni/video_decoder_fallback.cc
index ff6888a..30a7f2f 100644
--- a/sdk/android/src/jni/video_decoder_fallback.cc
+++ b/sdk/android/src/jni/video_decoder_fallback.cc
@@ -27,8 +27,8 @@
 static jlong JNI_VideoDecoderFallback_Create(
     JNIEnv* jni,
     jlong j_webrtc_env_ref,
-    const jni_zero::JavaParamRef<jobject>& j_fallback_decoder,
-    const jni_zero::JavaParamRef<jobject>& j_primary_decoder) {
+    const jni_zero::JavaRef<jobject>& j_fallback_decoder,
+    const jni_zero::JavaRef<jobject>& j_primary_decoder) {
   std::unique_ptr<VideoDecoder> fallback_decoder =
       JavaToNativeVideoDecoder(jni, j_fallback_decoder, j_webrtc_env_ref);
   std::unique_ptr<VideoDecoder> primary_decoder =
diff --git a/sdk/android/src/jni/video_encoder_fallback.cc b/sdk/android/src/jni/video_encoder_fallback.cc
index 72b477d..8956fd7 100644
--- a/sdk/android/src/jni/video_encoder_fallback.cc
+++ b/sdk/android/src/jni/video_encoder_fallback.cc
@@ -27,8 +27,8 @@
 jlong JNI_VideoEncoderFallback_Create(
     JNIEnv* jni,
     jlong j_webrtc_env_ref,
-    const jni_zero::JavaParamRef<jobject>& j_fallback_encoder,
-    const jni_zero::JavaParamRef<jobject>& j_primary_encoder) {
+    const jni_zero::JavaRef<jobject>& j_fallback_encoder,
+    const jni_zero::JavaRef<jobject>& j_primary_encoder) {
   std::unique_ptr<VideoEncoder> fallback_encoder =
       JavaToNativeVideoEncoder(jni, j_fallback_encoder, j_webrtc_env_ref);
   std::unique_ptr<VideoEncoder> primary_encoder =
diff --git a/sdk/android/src/jni/video_track.cc b/sdk/android/src/jni/video_track.cc
index 1b85188..e81c525 100644
--- a/sdk/android/src/jni/video_track.cc
+++ b/sdk/android/src/jni/video_track.cc
@@ -39,9 +39,8 @@
           reinterpret_cast<VideoSinkInterface<VideoFrame>*>(j_native_sink));
 }
 
-static jlong JNI_VideoTrack_WrapSink(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& sink) {
+static jlong JNI_VideoTrack_WrapSink(JNIEnv* jni,
+                                     const jni_zero::JavaRef<jobject>& sink) {
   return jlongFromPointer(new VideoSinkWrapper(jni, sink));
 }
 
diff --git a/sdk/android/src/jni/yuv_helper.cc b/sdk/android/src/jni/yuv_helper.cc
index 1650296..724532a 100644
--- a/sdk/android/src/jni/yuv_helper.cc
+++ b/sdk/android/src/jni/yuv_helper.cc
@@ -23,9 +23,9 @@
 namespace jni {
 
 void JNI_YuvHelper_CopyPlane(JNIEnv* jni,
-                             const jni_zero::JavaParamRef<jobject>& j_src,
+                             const jni_zero::JavaRef<jobject>& j_src,
                              jint src_stride,
-                             const jni_zero::JavaParamRef<jobject>& j_dst,
+                             const jni_zero::JavaRef<jobject>& j_dst,
                              jint dst_stride,
                              jint width,
                              jint height) {
@@ -38,17 +38,17 @@
 }
 
 void JNI_YuvHelper_I420Copy(JNIEnv* jni,
-                            const jni_zero::JavaParamRef<jobject>& j_src_y,
+                            const jni_zero::JavaRef<jobject>& j_src_y,
                             jint src_stride_y,
-                            const jni_zero::JavaParamRef<jobject>& j_src_u,
+                            const jni_zero::JavaRef<jobject>& j_src_u,
                             jint src_stride_u,
-                            const jni_zero::JavaParamRef<jobject>& j_src_v,
+                            const jni_zero::JavaRef<jobject>& j_src_v,
                             jint src_stride_v,
-                            const jni_zero::JavaParamRef<jobject>& j_dst_y,
+                            const jni_zero::JavaRef<jobject>& j_dst_y,
                             jint dst_stride_y,
-                            const jni_zero::JavaParamRef<jobject>& j_dst_u,
+                            const jni_zero::JavaRef<jobject>& j_dst_u,
                             jint dst_stride_u,
-                            const jni_zero::JavaParamRef<jobject>& j_dst_v,
+                            const jni_zero::JavaRef<jobject>& j_dst_v,
                             jint dst_stride_v,
                             jint width,
                             jint height) {
@@ -70,20 +70,19 @@
                    dst_v, dst_stride_v, width, height);
 }
 
-static void JNI_YuvHelper_I420ToNV12(
-    JNIEnv* jni,
-    const jni_zero::JavaParamRef<jobject>& j_src_y,
-    jint src_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_src_u,
-    jint src_stride_u,
-    const jni_zero::JavaParamRef<jobject>& j_src_v,
-    jint src_stride_v,
-    const jni_zero::JavaParamRef<jobject>& j_dst_y,
-    jint dst_stride_y,
-    const jni_zero::JavaParamRef<jobject>& j_dst_uv,
-    jint dst_stride_uv,
-    jint width,
-    jint height) {
+static void JNI_YuvHelper_I420ToNV12(JNIEnv* jni,
+                                     const jni_zero::JavaRef<jobject>& j_src_y,
+                                     jint src_stride_y,
+                                     const jni_zero::JavaRef<jobject>& j_src_u,
+                                     jint src_stride_u,
+                                     const jni_zero::JavaRef<jobject>& j_src_v,
+                                     jint src_stride_v,
+                                     const jni_zero::JavaRef<jobject>& j_dst_y,
+                                     jint dst_stride_y,
+                                     const jni_zero::JavaRef<jobject>& j_dst_uv,
+                                     jint dst_stride_uv,
+                                     jint width,
+                                     jint height) {
   const uint8_t* src_y =
       static_cast<const uint8_t*>(jni->GetDirectBufferAddress(j_src_y.obj()));
   const uint8_t* src_u =
@@ -101,17 +100,17 @@
 }
 
 void JNI_YuvHelper_I420Rotate(JNIEnv* jni,
-                              const jni_zero::JavaParamRef<jobject>& j_src_y,
+                              const jni_zero::JavaRef<jobject>& j_src_y,
                               jint src_stride_y,
-                              const jni_zero::JavaParamRef<jobject>& j_src_u,
+                              const jni_zero::JavaRef<jobject>& j_src_u,
                               jint src_stride_u,
-                              const jni_zero::JavaParamRef<jobject>& j_src_v,
+                              const jni_zero::JavaRef<jobject>& j_src_v,
                               jint src_stride_v,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_y,
+                              const jni_zero::JavaRef<jobject>& j_dst_y,
                               jint dst_stride_y,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_u,
+                              const jni_zero::JavaRef<jobject>& j_dst_u,
                               jint dst_stride_u,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_v,
+                              const jni_zero::JavaRef<jobject>& j_dst_v,
                               jint dst_stride_v,
                               jint src_width,
                               jint src_height,
@@ -136,13 +135,13 @@
 }
 
 void JNI_YuvHelper_ABGRToI420(JNIEnv* jni,
-                              const jni_zero::JavaParamRef<jobject>& j_src,
+                              const jni_zero::JavaRef<jobject>& j_src,
                               jint src_stride,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_y,
+                              const jni_zero::JavaRef<jobject>& j_dst_y,
                               jint dst_stride_y,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_u,
+                              const jni_zero::JavaRef<jobject>& j_dst_u,
                               jint dst_stride_u,
-                              const jni_zero::JavaParamRef<jobject>& j_dst_v,
+                              const jni_zero::JavaRef<jobject>& j_dst_v,
                               jint dst_stride_v,
                               jint src_width,
                               jint src_height) {