blob: 2e55283a01bc1558c25213c66232bece05f17fbf [file] [log] [blame]
/*
* Copyright (c) 2011 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 <stdio.h>
#include <string.h>
#include <android/log.h>
#include <pthread.h>
#include <unistd.h>
#include "org_webrtc_vieautotest_vie_autotest.h"
#include "vie_autotest_android.h"
#define WEBRTC_LOG_TAG "*WEBRTCN*"
// VideoEngine data struct
typedef struct
{
JavaVM* jvm;
} VideoEngineData;
// Global variables
JavaVM* webrtcGlobalVM;
// Global variables visible in this file
static VideoEngineData vieData;
// "Local" functions (i.e. not Java accessible)
#define WEBRTC_TRACE_MAX_MESSAGE_SIZE 1024
static bool GetSubAPIs(VideoEngineData& vieData);
static bool ReleaseSubAPIs(VideoEngineData& vieData);
//
// General functions
//
// JNI_OnLoad
jint JNI_OnLoad(JavaVM* vm, void* /*reserved*/) {
if (!vm) {
__android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG,
"JNI_OnLoad did not receive a valid VM pointer");
return -1;
}
JNIEnv* env;
if (JNI_OK != vm->GetEnv(reinterpret_cast<void**> (&env),
JNI_VERSION_1_4)) {
__android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG,
"JNI_OnLoad could not get JNI env");
return -1;
}
// Init ViE data
vieData.jvm = vm;
return JNI_VERSION_1_4;
}
// Class: org_webrtc_vieautotest_ViEAutotest
// Method: RunTest
// Signature: (IILandroid/opengl/GLSurfaceView;Landroid/opengl/GLSurfaceView;)I
JNIEXPORT jint JNICALL
Java_org_webrtc_vieautotest_ViEAutotest_RunTest__IILandroid_opengl_GLSurfaceView_2Landroid_opengl_GLSurfaceView_2(
JNIEnv* env,
jobject context,
jint testType,
jint subtestType,
jobject glView1,
jobject glView2)
{
int numErrors = -1;
numErrors = ViEAutoTestAndroid::RunAutotest(testType, subtestType, glView1,
glView2, vieData.jvm, env,
context);
return numErrors;
}
// Class: org_webrtc_vieautotest_ViEAutotest
// Method: RunTest
// Signature: (IILandroid/view/SurfaceView;Landroid/view/SurfaceView;)I
JNIEXPORT jint JNICALL
Java_org_webrtc_vieautotest_ViEAutotest_RunTest__IILandroid_view_SurfaceView_2Landroid_view_SurfaceView_2(
JNIEnv* env,
jobject context,
jint testType,
jint subtestType,
jobject surfaceHolder1,
jobject surfaceHolder2)
{
int numErrors = -1;
numErrors = ViEAutoTestAndroid::RunAutotest(testType, subtestType,
surfaceHolder1, surfaceHolder2,
vieData.jvm, env, context);
return numErrors;
}
//
//local function
//
bool GetSubAPIs(VideoEngineData& vieData) {
bool retVal = true;
//vieData.base = ViEBase::GetInterface(vieData.vie);
//if (vieData.base == NULL)
{
__android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG,
"Could not get Base API");
retVal = false;
}
return retVal;
}
bool ReleaseSubAPIs(VideoEngineData& vieData) {
bool releaseOk = true;
//if (vieData.base)
{
//if (vieData.base->Release() != 0)
if (false) {
__android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG,
"Release base sub-API failed");
releaseOk = false;
}
else {
//vieData.base = NULL;
}
}
return releaseOk;
}