Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: webrtc/sdk/android/src/jni/native_handle_impl.cc

Issue 2982213002: Add support for capturers to capture VideoFrames. (Closed)
Patch Set: Minor changes Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/sdk/android/src/jni/native_handle_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/sdk/android/src/jni/native_handle_impl.cc
diff --git a/webrtc/sdk/android/src/jni/native_handle_impl.cc b/webrtc/sdk/android/src/jni/native_handle_impl.cc
index eebfba403575bcd8fe8f104fb5b24698dfdcb690..cd78a2758418bf817e99cfbbe07aef3a2751d457 100644
--- a/webrtc/sdk/android/src/jni/native_handle_impl.cc
+++ b/webrtc/sdk/android/src/jni/native_handle_impl.cc
@@ -322,18 +322,39 @@ rtc::scoped_refptr<webrtc::I420BufferInterface> AndroidTextureBuffer::ToI420() {
return copy;
}
+rtc::scoped_refptr<AndroidVideoBuffer> AndroidVideoBuffer::WrapReference(
+ JNIEnv* jni,
+ jmethodID j_release_id,
+ int width,
+ int height,
+ jobject j_video_frame_buffer) {
+ return new rtc::RefCountedObject<AndroidVideoBuffer>(
+ jni, j_release_id, width, height, j_video_frame_buffer);
+}
+
AndroidVideoBuffer::AndroidVideoBuffer(JNIEnv* jni,
jmethodID j_retain_id,
jmethodID j_release_id,
int width,
int height,
jobject j_video_frame_buffer)
+ : AndroidVideoBuffer(jni,
+ j_release_id,
+ width,
+ height,
+ j_video_frame_buffer) {
+ jni->CallVoidMethod(j_video_frame_buffer, j_retain_id);
+}
+
+AndroidVideoBuffer::AndroidVideoBuffer(JNIEnv* jni,
+ jmethodID j_release_id,
+ int width,
+ int height,
+ jobject j_video_frame_buffer)
: j_release_id_(j_release_id),
width_(width),
height_(height),
- j_video_frame_buffer_(jni, j_video_frame_buffer) {
- jni->CallVoidMethod(j_video_frame_buffer, j_retain_id);
-}
+ j_video_frame_buffer_(jni, j_video_frame_buffer) {}
AndroidVideoBuffer::~AndroidVideoBuffer() {
JNIEnv* jni = AttachCurrentThreadIfNeeded();
@@ -422,15 +443,24 @@ webrtc::VideoFrame AndroidVideoBufferFactory::CreateFrame(
uint32_t timestamp_ns =
jni->CallLongMethod(j_video_frame, j_get_timestamp_ns_id_);
rtc::scoped_refptr<AndroidVideoBuffer> buffer =
- CreateBuffer(j_video_frame_buffer);
+ CreateBuffer(jni, j_video_frame_buffer);
return webrtc::VideoFrame(buffer, timestamp_rtp,
timestamp_ns / rtc::kNumNanosecsPerMillisec,
static_cast<webrtc::VideoRotation>(rotation));
}
+rtc::scoped_refptr<AndroidVideoBuffer> AndroidVideoBufferFactory::WrapBuffer(
+ JNIEnv* jni,
+ jobject j_video_frame_buffer) const {
+ int width = jni->CallIntMethod(j_video_frame_buffer, j_get_width_id_);
+ int height = jni->CallIntMethod(j_video_frame_buffer, j_get_height_id_);
+ return AndroidVideoBuffer::WrapReference(jni, j_release_id_, width, height,
+ j_video_frame_buffer);
+}
+
rtc::scoped_refptr<AndroidVideoBuffer> AndroidVideoBufferFactory::CreateBuffer(
+ JNIEnv* jni,
jobject j_video_frame_buffer) const {
- JNIEnv* jni = AttachCurrentThreadIfNeeded();
int width = jni->CallIntMethod(j_video_frame_buffer, j_get_width_id_);
int height = jni->CallIntMethod(j_video_frame_buffer, j_get_height_id_);
return new rtc::RefCountedObject<AndroidVideoBuffer>(
« no previous file with comments | « webrtc/sdk/android/src/jni/native_handle_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698