Index: webrtc/sdk/android/src/jni/native_handle_impl.h |
diff --git a/webrtc/sdk/android/src/jni/native_handle_impl.h b/webrtc/sdk/android/src/jni/native_handle_impl.h |
index 834441a7c685f33b675ff4288c629ab0b9f42c02..fc674db9d4996691837cb11714f2e5cea80d3a47 100644 |
--- a/webrtc/sdk/android/src/jni/native_handle_impl.h |
+++ b/webrtc/sdk/android/src/jni/native_handle_impl.h |
@@ -103,12 +103,28 @@ class AndroidTextureBuffer : public AndroidVideoFrameBuffer { |
class AndroidVideoBuffer : public AndroidVideoFrameBuffer { |
public: |
+ // Wraps an existing reference to a Java VideoBuffer. Retain will not be |
+ // called but release will be called when the C++ object is destroyed. |
+ static rtc::scoped_refptr<AndroidVideoBuffer> WrapReference( |
+ JNIEnv* jni, |
+ jmethodID j_release_id, |
+ int width, |
+ int height, |
+ jobject j_video_frame_buffer); |
+ |
AndroidVideoBuffer(JNIEnv* jni, |
jmethodID j_retain_id, |
jmethodID j_release_id, |
int width, |
int height, |
jobject j_video_frame_buffer); |
+ // Should not be called directly. Wraps a reference. Use |
+ // AndroidVideoBuffer::WrapReference instead for clarity. |
+ AndroidVideoBuffer(JNIEnv* jni, |
+ jmethodID j_release_id, |
+ int width, |
+ int height, |
+ jobject j_video_frame_buffer); |
~AndroidVideoBuffer() override; |
jobject video_frame_buffer() const; |
@@ -140,7 +156,14 @@ class AndroidVideoBufferFactory { |
jobject j_video_frame, |
uint32_t timestamp_rtp) const; |
+ // Wraps a buffer to AndroidVideoBuffer without incrementing the reference |
+ // count. |
+ rtc::scoped_refptr<AndroidVideoBuffer> WrapBuffer( |
+ JNIEnv* jni, |
+ jobject j_video_frame_buffer) const; |
+ |
rtc::scoped_refptr<AndroidVideoBuffer> CreateBuffer( |
+ JNIEnv* jni, |
jobject j_video_frame_buffer) const; |
private: |