Android: Clean up JNI generated code

It's now possible to generate JNI code for constructors and enums
correctly. This CL cleans that up.

Bug: webrtc:8278,webrtc:8551,webrtc:8556
Change-Id: I2284a30139cbb186c80713eb6113eda5659c16ad
Reviewed-on: https://webrtc-review.googlesource.com/25622
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20860}
diff --git a/sdk/android/src/java/org/webrtc/CalledByNative.java b/sdk/android/src/java/org/webrtc/CalledByNative.java
index 42487ff..5d6c41f 100644
--- a/sdk/android/src/java/org/webrtc/CalledByNative.java
+++ b/sdk/android/src/java/org/webrtc/CalledByNative.java
@@ -19,7 +19,7 @@
  * @CalledByNative is used by the JNI generator to create the necessary JNI
  * bindings and expose this method to native code.
  */
-@Target(ElementType.METHOD)
+@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
 @Retention(RetentionPolicy.CLASS)
 @interface CalledByNative {
   /*
diff --git a/sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java b/sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java
index 97134c5..93e74e0 100644
--- a/sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java
+++ b/sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java
@@ -16,12 +16,6 @@
  * This class contains the Java glue code for JNI generation of VideoDecoder.
  */
 class VideoDecoderWrapper {
-  // TODO(bugs.webrtc.org/8551) Remove.
-  @CalledByNative
-  static VideoDecoder.Settings createSettings(int numberOfCores, int width, int height) {
-    return new VideoDecoder.Settings(numberOfCores, width, height);
-  }
-
   @CalledByNative
   static VideoDecoder.Callback createDecoderCallback(final long nativeDecoder) {
     return (VideoFrame frame, Integer decodeTimeMs,
diff --git a/sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java b/sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java
index 5acfe67..bc9fcec 100644
--- a/sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java
+++ b/sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java
@@ -11,7 +11,6 @@
 package org.webrtc;
 
 // Explicit imports necessary for JNI generation.
-import org.webrtc.EncodedImage;
 import org.webrtc.VideoEncoder;
 import java.nio.ByteBuffer;
 
@@ -20,23 +19,6 @@
  */
 class VideoEncoderWrapper {
   @CalledByNative
-  static VideoEncoder.Settings createSettings(int numberOfCores, int width, int height,
-      int startBitrate, int maxFramerate, boolean automaticResizeOn) {
-    return new VideoEncoder.Settings(
-        numberOfCores, width, height, startBitrate, maxFramerate, automaticResizeOn);
-  }
-
-  @CalledByNative
-  static VideoEncoder.EncodeInfo createEncodeInfo(EncodedImage.FrameType[] frameTypes) {
-    return new VideoEncoder.EncodeInfo(frameTypes);
-  }
-
-  @CalledByNative
-  static VideoEncoder.BitrateAllocation createBitrateAllocation(int[][] bitratesBbs) {
-    return new VideoEncoder.BitrateAllocation(bitratesBbs);
-  }
-
-  @CalledByNative
   static boolean getScalingSettingsOn(VideoEncoder.ScalingSettings scalingSettings) {
     return scalingSettings.on;
   }
diff --git a/sdk/android/src/jni/androidmetrics_jni.cc b/sdk/android/src/jni/androidmetrics_jni.cc
index 33e450c..6391e17 100644
--- a/sdk/android/src/jni/androidmetrics_jni.cc
+++ b/sdk/android/src/jni/androidmetrics_jni.cc
@@ -30,13 +30,13 @@
                          Metrics_getAndResetNative,
                          JNIEnv* jni,
                          jclass) {
-  jobject j_metrics = Java_Metrics_createMetrics(jni);
+  jobject j_metrics = Java_Metrics_Constructor(jni);
 
   std::map<std::string, std::unique_ptr<metrics::SampleInfo>> histograms;
   metrics::GetAndReset(&histograms);
   for (const auto& kv : histograms) {
     // Create and add samples to |HistogramInfo|.
-    jobject j_info = Java_Metrics_createHistogramInfo(
+    jobject j_info = Java_HistogramInfo_Constructor(
         jni, kv.second->min, kv.second->max,
         static_cast<int>(kv.second->bucket_count));
     for (const auto& sample : kv.second->samples) {
diff --git a/sdk/android/src/jni/encodedimage.cc b/sdk/android/src/jni/encodedimage.cc
index f540b77..966ef93 100644
--- a/sdk/android/src/jni/encodedimage.cc
+++ b/sdk/android/src/jni/encodedimage.cc
@@ -25,7 +25,7 @@
   jobject buffer = jni->NewDirectByteBuffer(image._buffer, image._length);
   jobject frame_type = NativeToJavaFrameType(jni, image._frameType);
   jobject qp = (image.qp_ == -1) ? nullptr : JavaIntegerFromInt(jni, image.qp_);
-  return Java_EncodedImage_create(
+  return Java_EncodedImage_Constructor(
       jni, buffer, image._encodedWidth, image._encodedHeight,
       image.capture_time_ms_ * rtc::kNumNanosecsPerMillisec, frame_type,
       static_cast<jint>(image.rotation_), image._completeFrame, qp);
diff --git a/sdk/android/src/jni/videodecoderwrapper.cc b/sdk/android/src/jni/videodecoderwrapper.cc
index 63bc76d..6b29c0e 100644
--- a/sdk/android/src/jni/videodecoderwrapper.cc
+++ b/sdk/android/src/jni/videodecoderwrapper.cc
@@ -57,7 +57,7 @@
 }
 
 int32_t VideoDecoderWrapper::InitDecodeInternal(JNIEnv* jni) {
-  jobject settings = Java_VideoDecoderWrapper_createSettings(
+  jobject settings = Java_Settings_Constructor(
       jni, number_of_cores_, codec_settings_.width, codec_settings_.height);
 
   jobject callback = Java_VideoDecoderWrapper_createDecoderCallback(
diff --git a/sdk/android/src/jni/videoencoderwrapper.cc b/sdk/android/src/jni/videoencoderwrapper.cc
index 66b54f9..19c00ec 100644
--- a/sdk/android/src/jni/videoencoderwrapper.cc
+++ b/sdk/android/src/jni/videoencoderwrapper.cc
@@ -74,7 +74,7 @@
       automatic_resize_on = true;
   }
 
-  jobject settings = Java_VideoEncoderWrapper_createSettings(
+  jobject settings = Java_Settings_Constructor(
       jni, number_of_cores_, codec_settings_.width, codec_settings_.height,
       codec_settings_.startBitrate, codec_settings_.maxFramerate,
       automatic_resize_on);
@@ -127,8 +127,7 @@
     jobject j_frame_type = NativeToJavaFrameType(jni, (*frame_types)[i]);
     jni->SetObjectArrayElement(j_frame_types, i, j_frame_type);
   }
-  jobject encode_info =
-      Java_VideoEncoderWrapper_createEncodeInfo(jni, j_frame_types);
+  jobject encode_info = Java_EncodeInfo_Constructor(jni, j_frame_types);
 
   FrameExtraInfo info;
   info.capture_time_ns = frame.timestamp_us() * rtc::kNumNanosecsPerMicrosec;
@@ -385,8 +384,7 @@
     jni->SetObjectArrayElement(j_allocation_array, spatial_i,
                                j_array_spatial_layer);
   }
-  return Java_VideoEncoderWrapper_createBitrateAllocation(jni,
-                                                          j_allocation_array);
+  return Java_BitrateAllocation_Constructor(jni, j_allocation_array);
 }
 
 std::string VideoEncoderWrapper::GetImplementationName(JNIEnv* jni) const {
diff --git a/sdk/android/src/jni/videoframe.cc b/sdk/android/src/jni/videoframe.cc
index be07c75..5dbc5fb 100644
--- a/sdk/android/src/jni/videoframe.cc
+++ b/sdk/android/src/jni/videoframe.cc
@@ -403,7 +403,7 @@
   } else {
     j_buffer = WrapI420Buffer(jni, buffer->ToI420());
   }
-  return Java_VideoFrame_create(
+  return Java_VideoFrame_Constructor(
       jni, j_buffer, static_cast<jint>(frame.rotation()),
       static_cast<jlong>(frame.timestamp_us() * rtc::kNumNanosecsPerMicrosec));
 }