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

Unified Diff: webrtc/modules/video_render/android/video_render_android_native_opengl2.cc

Issue 1929223003: Reland of Delete video_render module. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 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: webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
diff --git a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc b/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
deleted file mode 100644
index 286776e317ba0ea8978b3d62ede1361cd718dc32..0000000000000000000000000000000000000000
--- a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/android/video_render_android_native_opengl2.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-
-#ifdef ANDROID_LOG
-#include <android/log.h>
-#include <stdio.h>
-
-#undef WEBRTC_TRACE
-#define WEBRTC_TRACE(a,b,c,...) __android_log_print(ANDROID_LOG_DEBUG, "*WEBRTC*", __VA_ARGS__)
-#else
-#include "webrtc/system_wrappers/include/trace.h"
-#endif
-
-namespace webrtc {
-
-AndroidNativeOpenGl2Renderer::AndroidNativeOpenGl2Renderer(
- const int32_t id,
- const VideoRenderType videoRenderType,
- void* window,
- const bool fullscreen) :
- VideoRenderAndroid(id, videoRenderType, window, fullscreen),
- _javaRenderObj(NULL),
- _javaRenderClass(NULL) {
-}
-
-bool AndroidNativeOpenGl2Renderer::UseOpenGL2(void* window) {
- if (!g_jvm) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
- "RendererAndroid():UseOpenGL No JVM set.");
- return false;
- }
- bool isAttached = false;
- JNIEnv* env = NULL;
- if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- // try to attach the thread and get the env
- // Attach this thread to JVM
- jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
- // Get the JNI env for this thread
- if ((res < 0) || !env) {
- WEBRTC_TRACE(
- kTraceError,
- kTraceVideoRenderer,
- -1,
- "RendererAndroid(): Could not attach thread to JVM (%d, %p)",
- res, env);
- return false;
- }
- isAttached = true;
- }
-
- // get the renderer class
- jclass javaRenderClassLocal =
- env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
- if (!javaRenderClassLocal) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
- "%s: could not find ViEAndroidRenderer class",
- __FUNCTION__);
- return false;
- }
-
- // get the method ID for UseOpenGL
- jmethodID cidUseOpenGL = env->GetStaticMethodID(javaRenderClassLocal,
- "UseOpenGL2",
- "(Ljava/lang/Object;)Z");
- if (cidUseOpenGL == NULL) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
- "%s: could not get UseOpenGL ID", __FUNCTION__);
- return false;
- }
- jboolean res = env->CallStaticBooleanMethod(javaRenderClassLocal,
- cidUseOpenGL, (jobject) window);
-
- // Detach this thread if it was attached
- if (isAttached) {
- if (g_jvm->DetachCurrentThread() < 0) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, -1,
- "%s: Could not detach thread from JVM", __FUNCTION__);
- }
- }
- return res;
-}
-
-AndroidNativeOpenGl2Renderer::~AndroidNativeOpenGl2Renderer() {
- WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
- "AndroidNativeOpenGl2Renderer dtor");
- if (g_jvm) {
- // get the JNI env for this thread
- bool isAttached = false;
- JNIEnv* env = NULL;
- if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- // try to attach the thread and get the env
- // Attach this thread to JVM
- jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
- // Get the JNI env for this thread
- if ((res < 0) || !env) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: Could not attach thread to JVM (%d, %p)",
- __FUNCTION__, res, env);
- env = NULL;
- }
- else {
- isAttached = true;
- }
- }
-
- env->DeleteGlobalRef(_javaRenderObj);
- env->DeleteGlobalRef(_javaRenderClass);
-
- if (isAttached) {
- if (g_jvm->DetachCurrentThread() < 0) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
- "%s: Could not detach thread from JVM",
- __FUNCTION__);
- }
- }
- }
-}
-
-int32_t AndroidNativeOpenGl2Renderer::Init() {
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
- if (!g_jvm) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "(%s): Not a valid Java VM pointer.", __FUNCTION__);
- return -1;
- }
- if (!_ptrWindow) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
- "(%s): No window have been provided.", __FUNCTION__);
- return -1;
- }
-
- // get the JNI env for this thread
- bool isAttached = false;
- JNIEnv* env = NULL;
- if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- // try to attach the thread and get the env
- // Attach this thread to JVM
- jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
- // Get the JNI env for this thread
- if ((res < 0) || !env) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: Could not attach thread to JVM (%d, %p)",
- __FUNCTION__, res, env);
- return -1;
- }
- isAttached = true;
- }
-
- // get the ViEAndroidGLES20 class
- jclass javaRenderClassLocal =
- env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
- if (!javaRenderClassLocal) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not find ViEAndroidGLES20", __FUNCTION__);
- return -1;
- }
-
- // create a global reference to the class (to tell JNI that
- // we are referencing it after this function has returned)
- _javaRenderClass =
- reinterpret_cast<jclass> (env->NewGlobalRef(javaRenderClassLocal));
- if (!_javaRenderClass) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not create Java SurfaceHolder class reference",
- __FUNCTION__);
- return -1;
- }
-
- // Delete local class ref, we only use the global ref
- env->DeleteLocalRef(javaRenderClassLocal);
-
- // create a reference to the object (to tell JNI that we are referencing it
- // after this function has returned)
- _javaRenderObj = env->NewGlobalRef(_ptrWindow);
- if (!_javaRenderObj) {
- WEBRTC_TRACE(
- kTraceError,
- kTraceVideoRenderer,
- _id,
- "%s: could not create Java SurfaceRender object reference",
- __FUNCTION__);
- return -1;
- }
-
- // Detach this thread if it was attached
- if (isAttached) {
- if (g_jvm->DetachCurrentThread() < 0) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
- "%s: Could not detach thread from JVM", __FUNCTION__);
- }
- }
-
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s done",
- __FUNCTION__);
- return 0;
-
-}
-AndroidStream*
-AndroidNativeOpenGl2Renderer::CreateAndroidRenderChannel(
- int32_t streamId,
- int32_t zOrder,
- const float left,
- const float top,
- const float right,
- const float bottom,
- VideoRenderAndroid& renderer) {
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s: Id %d",
- __FUNCTION__, streamId);
- AndroidNativeOpenGl2Channel* stream =
- new AndroidNativeOpenGl2Channel(streamId, g_jvm, renderer,
- _javaRenderObj);
- if (stream && stream->Init(zOrder, left, top, right, bottom) == 0)
- return stream;
- else {
- delete stream;
- }
- return NULL;
-}
-
-AndroidNativeOpenGl2Channel::AndroidNativeOpenGl2Channel(
- uint32_t streamId,
- JavaVM* jvm,
- VideoRenderAndroid& renderer,jobject javaRenderObj):
- _id(streamId),
- _renderCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
- _renderer(renderer), _jvm(jvm), _javaRenderObj(javaRenderObj),
- _registerNativeCID(NULL), _deRegisterNativeCID(NULL),
- _openGLRenderer(streamId) {
-
-}
-AndroidNativeOpenGl2Channel::~AndroidNativeOpenGl2Channel() {
- WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
- "AndroidNativeOpenGl2Channel dtor");
- if (_jvm) {
- // get the JNI env for this thread
- bool isAttached = false;
- JNIEnv* env = NULL;
- if (_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- // try to attach the thread and get the env
- // Attach this thread to JVM
- jint res = _jvm->AttachCurrentThread(&env, NULL);
-
- // Get the JNI env for this thread
- if ((res < 0) || !env) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: Could not attach thread to JVM (%d, %p)",
- __FUNCTION__, res, env);
- env = NULL;
- } else {
- isAttached = true;
- }
- }
- if (env && _deRegisterNativeCID) {
- env->CallVoidMethod(_javaRenderObj, _deRegisterNativeCID);
- }
-
- if (isAttached) {
- if (_jvm->DetachCurrentThread() < 0) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
- "%s: Could not detach thread from JVM",
- __FUNCTION__);
- }
- }
- }
-
- delete &_renderCritSect;
-}
-
-int32_t AndroidNativeOpenGl2Channel::Init(int32_t zOrder,
- const float left,
- const float top,
- const float right,
- const float bottom)
-{
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
- "%s: AndroidNativeOpenGl2Channel", __FUNCTION__);
- if (!_jvm) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: Not a valid Java VM pointer", __FUNCTION__);
- return -1;
- }
-
- // get the JNI env for this thread
- bool isAttached = false;
- JNIEnv* env = NULL;
- if (_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- // try to attach the thread and get the env
- // Attach this thread to JVM
- jint res = _jvm->AttachCurrentThread(&env, NULL);
-
- // Get the JNI env for this thread
- if ((res < 0) || !env) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: Could not attach thread to JVM (%d, %p)",
- __FUNCTION__, res, env);
- return -1;
- }
- isAttached = true;
- }
-
- jclass javaRenderClass =
- env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
- if (!javaRenderClass) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not find ViESurfaceRenderer", __FUNCTION__);
- return -1;
- }
-
- // get the method ID for the ReDraw function
- _redrawCid = env->GetMethodID(javaRenderClass, "ReDraw", "()V");
- if (_redrawCid == NULL) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not get ReDraw ID", __FUNCTION__);
- return -1;
- }
-
- _registerNativeCID = env->GetMethodID(javaRenderClass,
- "RegisterNativeObject", "(J)V");
- if (_registerNativeCID == NULL) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not get RegisterNativeObject ID", __FUNCTION__);
- return -1;
- }
-
- _deRegisterNativeCID = env->GetMethodID(javaRenderClass,
- "DeRegisterNativeObject", "()V");
- if (_deRegisterNativeCID == NULL) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
- "%s: could not get DeRegisterNativeObject ID",
- __FUNCTION__);
- return -1;
- }
-
- JNINativeMethod nativeFunctions[2] = {
- { "DrawNative",
- "(J)V",
- (void*) &AndroidNativeOpenGl2Channel::DrawNativeStatic, },
- { "CreateOpenGLNative",
- "(JII)I",
- (void*) &AndroidNativeOpenGl2Channel::CreateOpenGLNativeStatic },
- };
- if (env->RegisterNatives(javaRenderClass, nativeFunctions, 2) == 0) {
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, -1,
- "%s: Registered native functions", __FUNCTION__);
- }
- else {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
- "%s: Failed to register native functions", __FUNCTION__);
- return -1;
- }
-
- env->CallVoidMethod(_javaRenderObj, _registerNativeCID, (jlong) this);
-
- // Detach this thread if it was attached
- if (isAttached) {
- if (_jvm->DetachCurrentThread() < 0) {
- WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
- "%s: Could not detach thread from JVM", __FUNCTION__);
- }
- }
-
- if (_openGLRenderer.SetCoordinates(zOrder, left, top, right, bottom) != 0) {
- return -1;
- }
- WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
- "%s: AndroidNativeOpenGl2Channel done", __FUNCTION__);
- return 0;
-}
-
-int32_t AndroidNativeOpenGl2Channel::RenderFrame(const uint32_t /*streamId*/,
- const VideoFrame& videoFrame) {
- // WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id, "%s:" ,__FUNCTION__);
- _renderCritSect.Enter();
- _bufferToRender = videoFrame;
- _renderCritSect.Leave();
- _renderer.ReDraw();
- return 0;
-}
-
-/*Implements AndroidStream
- * Calls the Java object and render the buffer in _bufferToRender
- */
-void AndroidNativeOpenGl2Channel::DeliverFrame(JNIEnv* jniEnv) {
- //TickTime timeNow=TickTime::Now();
-
- //Draw the Surface
- jniEnv->CallVoidMethod(_javaRenderObj, _redrawCid);
-
- // WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id,
- // "%s: time to deliver %lld" ,__FUNCTION__,
- // (TickTime::Now()-timeNow).Milliseconds());
-}
-
-/*
- * JNI callback from Java class. Called when the render
- * want to render a frame. Called from the GLRenderThread
- * Method: DrawNative
- * Signature: (J)V
- */
-void JNICALL AndroidNativeOpenGl2Channel::DrawNativeStatic(
- JNIEnv * env, jobject, jlong context) {
- AndroidNativeOpenGl2Channel* renderChannel =
- reinterpret_cast<AndroidNativeOpenGl2Channel*>(context);
- renderChannel->DrawNative();
-}
-
-void AndroidNativeOpenGl2Channel::DrawNative() {
- _renderCritSect.Enter();
- _openGLRenderer.Render(_bufferToRender);
- _renderCritSect.Leave();
-}
-
-/*
- * JNI callback from Java class. Called when the GLSurfaceview
- * have created a surface. Called from the GLRenderThread
- * Method: CreateOpenGLNativeStatic
- * Signature: (JII)I
- */
-jint JNICALL AndroidNativeOpenGl2Channel::CreateOpenGLNativeStatic(
- JNIEnv * env,
- jobject,
- jlong context,
- jint width,
- jint height) {
- AndroidNativeOpenGl2Channel* renderChannel =
- reinterpret_cast<AndroidNativeOpenGl2Channel*> (context);
- WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, -1, "%s:", __FUNCTION__);
- return renderChannel->CreateOpenGLNative(width, height);
-}
-
-jint AndroidNativeOpenGl2Channel::CreateOpenGLNative(
- int width, int height) {
- return _openGLRenderer.Setup(width, height);
-}
-
-} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698