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 |