Add resolution bitrate thresholds to EncoderInfo.

When provided, these thresholds will be used instead of WebRTC default
limits specified in DropDueToSize() and GetMaxDefaultVideoBitrateKbps().

Bug: none
Change-Id: Ida45ea832041963b8b8475d69114b5c60a172fb7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142170
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Alex Glaznev <glaznev@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28390}
diff --git a/sdk/android/native_unittests/codecs/wrapper_unittest.cc b/sdk/android/native_unittests/codecs/wrapper_unittest.cc
index d9f268d..d5a29d1 100644
--- a/sdk/android/native_unittests/codecs/wrapper_unittest.cc
+++ b/sdk/android/native_unittests/codecs/wrapper_unittest.cc
@@ -8,9 +8,13 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "sdk/android/native_api/codecs/wrapper.h"
+#include <memory>
+
+#include "absl/memory/memory.h"
 #include "media/base/media_constants.h"
 #include "sdk/android/generated_native_unittests_jni/CodecsWrapperTestHelper_jni.h"
+#include "sdk/android/native_api/codecs/wrapper.h"
+#include "sdk/android/src/jni/video_encoder_wrapper.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -30,6 +34,25 @@
   ASSERT_NE(it, video_format.parameters.end());
   EXPECT_EQ(cricket::kH264ProfileLevelConstrainedBaseline, it->second);
 }
+
+TEST(JavaCodecsWrapperTest, JavaToNativeResolutionBitrateThresholds) {
+  JNIEnv* env = AttachCurrentThreadIfNeeded();
+  ScopedJavaLocalRef<jobject> j_fake_encoder =
+      jni::Java_CodecsWrapperTestHelper_createFakeVideoEncoder(env);
+
+  auto encoder = jni::JavaToNativeVideoEncoder(env, j_fake_encoder);
+  ASSERT_TRUE(encoder);
+
+  // Check that the resolution bitrate thresholds are correctly passed from Java
+  // to native.
+  const std::vector<VideoEncoder::ResolutionBitrateThresholds> thresholds =
+      encoder->GetEncoderInfo().resolution_bitrate_thresholds;
+  ASSERT_EQ(thresholds.size(), 1u);
+  EXPECT_EQ(thresholds[0].frame_size_pixels, 640 * 360);
+  EXPECT_EQ(thresholds[0].min_start_bitrate_bps, 300000);
+  EXPECT_EQ(thresholds[0].min_bitrate_bps, 200000);
+  EXPECT_EQ(thresholds[0].max_bitrate_bps, 1000000);
+}
 }  // namespace
 }  // namespace test
 }  // namespace webrtc