Reland "Android: Generate JNI code for stats"

This reverts commit 43d069a2cdb90ec8c887cf8aa68b42b7cf7ea49d.

Reason for revert: Include fix for local reference overflow.

Original change's description:
> Revert "Android: Generate JNI code for stats"
>
> This reverts commit aede67a199ae0552074bfec4bb03cc9a6a5fba0f.
>
> Reason for revert: Causes error:
> JNI ERROR (app bug): local reference table overflow (max=512)'
>
> Original change's description:
> > Android: Generate JNI code for stats
> >
> > This CL also unifies the functions for converting from C++ to Java, and
> > generates the boiler plate for converting C++ vectors to Java arrays.
> >
> > Bug: webrtc:8278
> > Change-Id: I262e9162beae8a64ba0e8b6a27e1081207b03961
> > Reviewed-on: https://webrtc-review.googlesource.com/26020
> > Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> > Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#20918}
>
> TBR=magjed@webrtc.org,sakal@webrtc.org
>
> Change-Id: Ieb26ed8577bd489a4dd4f7542d16a7d0e11f409f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:8278
> Reviewed-on: https://webrtc-review.googlesource.com/26900
> Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20926}

TBR=magjed@webrtc.org,sakal@webrtc.org

Change-Id: I6f7097f308098e7922fbf0bed577bd69da4e1c61
Bug: webrtc:8278
Reviewed-on: https://webrtc-review.googlesource.com/26901
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20951}
This commit is contained in:
Magnus Jedvert
2017-11-29 19:27:06 +01:00
committed by Commit Bot
parent 936dfb1cb2
commit bba8e9eb85
29 changed files with 319 additions and 347 deletions

View File

@ -121,12 +121,7 @@ int32_t VideoEncoderWrapper::Encode(
ScopedLocalRefFrame local_ref_frame(jni);
// Construct encode info.
jobjectArray j_frame_types =
jni->NewObjectArray(frame_types->size(), *frame_type_class_, nullptr);
for (size_t i = 0; i < frame_types->size(); ++i) {
jobject j_frame_type = NativeToJavaFrameType(jni, (*frame_types)[i]);
jni->SetObjectArrayElement(j_frame_types, i, j_frame_type);
}
jobjectArray j_frame_types = NativeToJavaFrameTypeArray(jni, *frame_types);
jobject encode_info = Java_EncodeInfo_Constructor(jni, j_frame_types);
FrameExtraInfo info;
@ -169,10 +164,10 @@ VideoEncoderWrapper::ScalingSettings VideoEncoderWrapper::GetScalingSettings()
bool isOn =
Java_VideoEncoderWrapper_getScalingSettingsOn(jni, j_scaling_settings);
rtc::Optional<int> low = JavaIntegerToOptionalInt(
rtc::Optional<int> low = JavaToNativeOptionalInt(
jni,
Java_VideoEncoderWrapper_getScalingSettingsLow(jni, j_scaling_settings));
rtc::Optional<int> high = JavaIntegerToOptionalInt(
rtc::Optional<int> high = JavaToNativeOptionalInt(
jni,
Java_VideoEncoderWrapper_getScalingSettingsHigh(jni, j_scaling_settings));
@ -200,7 +195,7 @@ void VideoEncoderWrapper::OnEncodedFrame(JNIEnv* jni,
std::vector<uint8_t> buffer_copy(buffer_size);
memcpy(buffer_copy.data(), buffer, buffer_size);
const int qp = JavaIntegerToOptionalInt(jni, j_qp).value_or(-1);
const int qp = JavaToNativeOptionalInt(jni, j_qp).value_or(-1);
encoder_queue_->PostTask(
[