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

Unified Diff: remoting/client/jni/chromoting_jni.cc

Issue 19297003: Add support for drawing video onto a Java ByteBuffer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix crashes discovered during integration testing Created 7 years, 5 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
Index: remoting/client/jni/chromoting_jni.cc
diff --git a/remoting/client/jni/chromoting_jni.cc b/remoting/client/jni/chromoting_jni.cc
index 4d1d0cf465a4f5fe4252422a8b3e258125e16ff7..647ac5aadaa35aa7a0d71aff2656aa5df68606db 100644
--- a/remoting/client/jni/chromoting_jni.cc
+++ b/remoting/client/jni/chromoting_jni.cc
@@ -7,14 +7,12 @@
#include "base/android/base_jni_registrar.h"
#include "base/android/jni_android.h"
#include "base/memory/singleton.h"
+#include "media/base/yuv_convert.h"
#include "net/android/net_jni_registrar.h"
#include "remoting/base/url_request_context.h"
-#include "remoting/client/jni/chromoting_jni_instance.h"
-namespace {
// Class and package name of the Java class supporting the methods we call.
-const char* const JAVA_CLASS = "org/chromium/chromoting/jni/JNIInterface";
-} // namespace
+const char* const JAVA_CLASS = "org/chromium/chromoting/jni/JniInterface";
namespace remoting {
@@ -54,6 +52,9 @@ ChromotingJni::ChromotingJni() {
url_requester_ = new URLRequestContextGetter(ui_task_runner_,
network_task_runner_);
+ // Allows later decoding of video frames.
+ media::InitializeCPUSpecificYUVConversions();
+
class_ = static_cast<jclass>(env->NewGlobalRef(env->FindClass(JAVA_CLASS)));
}
@@ -114,4 +115,31 @@ void ChromotingJni::DisplayAuthenticationPrompt() {
env->GetStaticMethodID(class_, "displayAuthenticationPrompt", "()V"));
}
+void ChromotingJni::UpdateImageBuffer(int width, int height, jobject buffer) {
+ DCHECK(display_task_runner_->BelongsToCurrentThread());
+
+ JNIEnv* env = base::android::AttachCurrentThread();
+ env->SetStaticIntField(
+ class_,
+ env->GetStaticFieldID(class_, "sWidth", "I"),
+ width);
+ env->SetStaticIntField(
+ class_,
+ env->GetStaticFieldID(class_, "sHeight", "I"),
+ height);
+ env->SetStaticObjectField(
+ class_,
+ env->GetStaticFieldID(class_, "sBuffer", "Ljava/nio/ByteBuffer;"),
+ buffer);
+}
+
+void ChromotingJni::RedrawCanvas() {
+ DCHECK(display_task_runner_->BelongsToCurrentThread());
+
+ JNIEnv* env = base::android::AttachCurrentThread();
+ env->CallStaticVoidMethod(
+ class_,
+ env->GetStaticMethodID(class_, "redrawGraphicsInternal", "()V"));
+}
+
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698