Delete transitional method EncodedImage.maybeRetain
Bug: webrtc:9378
Change-Id: Ibe3d5bad835d1725faa38f8e2a804efc9272776e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155661
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30072}
diff --git a/sdk/android/api/org/webrtc/EncodedImage.java b/sdk/android/api/org/webrtc/EncodedImage.java
index fabf36a..b50136c 100644
--- a/sdk/android/api/org/webrtc/EncodedImage.java
+++ b/sdk/android/api/org/webrtc/EncodedImage.java
@@ -47,7 +47,6 @@
}
private final RefCountDelegate refCountDelegate;
- private final boolean supportsRetain;
public final ByteBuffer buffer;
public final int encodedWidth;
public final int encodedHeight;
@@ -69,22 +68,10 @@
refCountDelegate.release();
}
- // A false return value means that the encoder expects that the buffer is no longer used after
- // VideoEncoder.Callback.onEncodedFrame returns.
@CalledByNative
- boolean maybeRetain() {
- if (supportsRetain) {
- retain();
- return true;
- } else {
- return false;
- }
- }
-
- @CalledByNative
- private EncodedImage(ByteBuffer buffer, boolean supportsRetain,
- @Nullable Runnable releaseCallback, int encodedWidth, int encodedHeight, long captureTimeNs,
- FrameType frameType, int rotation, boolean completeFrame, @Nullable Integer qp) {
+ private EncodedImage(ByteBuffer buffer, @Nullable Runnable releaseCallback, int encodedWidth,
+ int encodedHeight, long captureTimeNs, FrameType frameType, int rotation,
+ boolean completeFrame, @Nullable Integer qp) {
this.buffer = buffer;
this.encodedWidth = encodedWidth;
this.encodedHeight = encodedHeight;
@@ -94,7 +81,6 @@
this.rotation = rotation;
this.completeFrame = completeFrame;
this.qp = qp;
- this.supportsRetain = supportsRetain;
this.refCountDelegate = new RefCountDelegate(releaseCallback);
}
@@ -144,7 +130,6 @@
public static class Builder {
private ByteBuffer buffer;
- private boolean supportsRetain;
private @Nullable Runnable releaseCallback;
private int encodedWidth;
private int encodedHeight;
@@ -156,18 +141,9 @@
private Builder() {}
- @Deprecated
- public Builder setBuffer(ByteBuffer buffer) {
- this.buffer = buffer;
- this.releaseCallback = null;
- this.supportsRetain = false;
- return this;
- }
-
public Builder setBuffer(ByteBuffer buffer, @Nullable Runnable releaseCallback) {
this.buffer = buffer;
this.releaseCallback = releaseCallback;
- this.supportsRetain = true;
return this;
}
@@ -213,8 +189,8 @@
}
public EncodedImage createEncodedImage() {
- return new EncodedImage(buffer, supportsRetain, releaseCallback, encodedWidth, encodedHeight,
- captureTimeNs, frameType, rotation, completeFrame, qp);
+ return new EncodedImage(buffer, releaseCallback, encodedWidth, encodedHeight, captureTimeNs,
+ frameType, rotation, completeFrame, qp);
}
}
}
diff --git a/sdk/android/api/org/webrtc/RefCounted.java b/sdk/android/api/org/webrtc/RefCounted.java
index f854f70..0c1c3bf 100644
--- a/sdk/android/api/org/webrtc/RefCounted.java
+++ b/sdk/android/api/org/webrtc/RefCounted.java
@@ -18,7 +18,7 @@
*/
public interface RefCounted {
/** Increases ref count by one. */
- void retain();
+ @CalledByNative void retain();
/**
* Decreases ref count by one. When the ref count reaches zero, resources related to the object
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
index 76a09ba..1591cae 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
@@ -95,7 +95,7 @@
bufferCopy.rewind();
frameQueue.offer(EncodedImage.builder()
- .setBuffer(bufferCopy)
+ .setBuffer(bufferCopy, null)
.setEncodedWidth(frame.encodedWidth)
.setEncodedHeight(frame.encodedHeight)
.setCaptureTimeNs(frame.captureTimeNs)
diff --git a/sdk/android/src/jni/encoded_image.cc b/sdk/android/src/jni/encoded_image.cc
index 5c97bdb..e13653c 100644
--- a/sdk/android/src/jni/encoded_image.cc
+++ b/sdk/android/src/jni/encoded_image.cc
@@ -29,7 +29,7 @@
const JavaRef<jobject>& j_encoded_image,
const uint8_t* payload,
size_t size)
- : j_encoded_image_(ScopedJavaRefCounted::Adopt(env, j_encoded_image)),
+ : j_encoded_image_(ScopedJavaRefCounted::Retain(env, j_encoded_image)),
data_(const_cast<uint8_t*>(payload)),
size_(size) {}
@@ -65,7 +65,7 @@
// TODO(bugs.webrtc.org/9378): Keep a reference to the C++ EncodedImage data,
// and use the releaseCallback to manage lifetime.
return Java_EncodedImage_Constructor(
- jni, buffer, /*supportsRetain=*/true,
+ jni, buffer,
/*releaseCallback=*/ScopedJavaGlobalRef<jobject>(nullptr),
static_cast<int>(image._encodedWidth),
static_cast<int>(image._encodedHeight),
@@ -90,13 +90,8 @@
const size_t buffer_size = env->GetDirectBufferCapacity(j_buffer.obj());
EncodedImage frame;
- if (Java_EncodedImage_maybeRetain(env, j_encoded_image)) {
- frame.SetEncodedData(new rtc::RefCountedObject<JavaEncodedImageBuffer>(
- env, j_encoded_image, buffer, buffer_size));
- } else {
- // Encoder doesn't support retain/release, so make a copy.
- frame.SetEncodedData(EncodedImageBuffer::Create(buffer, buffer_size));
- }
+ frame.SetEncodedData(new rtc::RefCountedObject<JavaEncodedImageBuffer>(
+ env, j_encoded_image, buffer, buffer_size));
frame._encodedWidth = Java_EncodedImage_getEncodedWidth(env, j_encoded_image);
frame._encodedHeight =
diff --git a/sdk/android/src/jni/scoped_java_ref_counted.cc b/sdk/android/src/jni/scoped_java_ref_counted.cc
index aa6d817..1df8c7a 100644
--- a/sdk/android/src/jni/scoped_java_ref_counted.cc
+++ b/sdk/android/src/jni/scoped_java_ref_counted.cc
@@ -15,12 +15,22 @@
namespace webrtc {
namespace jni {
+// static
+ScopedJavaRefCounted ScopedJavaRefCounted::Retain(
+ JNIEnv* jni,
+ const JavaRef<jobject>& j_object) {
+ Java_RefCounted_retain(jni, j_object);
+ CHECK_EXCEPTION(jni)
+ << "Unexpected java exception from java JavaRefCounted.retain()";
+ return Adopt(jni, j_object);
+}
+
ScopedJavaRefCounted::~ScopedJavaRefCounted() {
if (!j_object_.is_null()) {
JNIEnv* jni = AttachCurrentThreadIfNeeded();
Java_RefCounted_release(jni, j_object_);
CHECK_EXCEPTION(jni)
- << "Unexpected java exception from ScopedJavaRefCounted.release()";
+ << "Unexpected java exception from java RefCounted.release()";
}
}
diff --git a/sdk/android/src/jni/scoped_java_ref_counted.h b/sdk/android/src/jni/scoped_java_ref_counted.h
index a5f7ae0..4f8f183 100644
--- a/sdk/android/src/jni/scoped_java_ref_counted.h
+++ b/sdk/android/src/jni/scoped_java_ref_counted.h
@@ -20,11 +20,14 @@
class ScopedJavaRefCounted {
public:
// Takes over the caller's reference.
- static ScopedJavaRefCounted Adopt(JNIEnv* env,
+ static ScopedJavaRefCounted Adopt(JNIEnv* jni,
const JavaRef<jobject>& j_object) {
- return ScopedJavaRefCounted(env, j_object);
+ return ScopedJavaRefCounted(jni, j_object);
}
+ // Retains the java object for the live time of this object.
+ static ScopedJavaRefCounted Retain(JNIEnv* jni,
+ const JavaRef<jobject>& j_object);
ScopedJavaRefCounted(ScopedJavaRefCounted&& other) = default;
// TODO(nisse): Implement move assignment and copy operations when needed.
@@ -35,8 +38,8 @@
private:
// Adopts reference.
- ScopedJavaRefCounted(JNIEnv* env, const JavaRef<jobject>& j_object)
- : j_object_(env, j_object) {}
+ ScopedJavaRefCounted(JNIEnv* jni, const JavaRef<jobject>& j_object)
+ : j_object_(jni, j_object) {}
ScopedJavaGlobalRef<jobject> j_object_;
};
diff --git a/sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java b/sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java
index b818a3e..2af5a20 100644
--- a/sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java
+++ b/sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java
@@ -185,7 +185,7 @@
private EncodedImage createTestEncodedImage() {
return EncodedImage.builder()
- .setBuffer(ByteBuffer.wrap(ENCODED_TEST_DATA))
+ .setBuffer(ByteBuffer.wrap(ENCODED_TEST_DATA), null)
.setFrameType(FrameType.VideoFrameKey)
.setCompleteFrame(true)
.createEncodedImage();