VideoEditorJava.cpp revision 25ba294d1f7f16d285a98d4a8ec2524ca2f860da
1cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/* 2cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 3cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * 4cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 5cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * you may not use this file except in compliance with the License. 6cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * You may obtain a copy of the License at 7cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * 8cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 9cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * 10cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 11cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 12cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * See the License for the specific language governing permissions and 14cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * limitations under the License. 15cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi */ 16cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 17cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorClasses.h> 18cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorJava.h> 19cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorLogging.h> 20cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <VideoEditorOsal.h> 21cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 22cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiextern "C" { 23cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include <M4OSA_CharStar.h> 24cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}; 25cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 26cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 27cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 2825ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowIllegalArgumentExceptionFunc( 29cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 30cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 31cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool condition, 3225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang const char* pMessage, 3325ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang const char* pFile, 3425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang int lineNo) 35cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 36cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 37cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 38cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 39cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the condition is true. 40cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (condition) 41cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 42cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the exception. 43cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",\ 4425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang "videoEditJava_checkAndThrowIllegalArgumentException, %s (%s:%d)", 4525ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang pMessage, pFile, lineNo); 46cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 47cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 48cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 49cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 50cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 51cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/IllegalArgumentException", pMessage); 52cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 53cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 54cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 55cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 56cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 5725ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowRuntimeExceptionFunc( 58cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 59cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 60cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool condition, 6125ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang M4OSA_ERR result, 6225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang const char* pFile, 6325ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang int lineNo 6425ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang ) 65cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 66cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pMessage = NULL; 67cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 68cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 69cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 70cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 71cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the condition is true. 72cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (condition) 73cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 74cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Get the error string. 75cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pMessage = videoEditJava_getErrorName(result); 76cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 77cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the exception. 78cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 7925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang "videoEditJava_checkAndThrowRuntimeException, %s (%s:%d)", 8025ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang pMessage, pFile, lineNo); 81cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 82cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 83cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 84cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 85cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 86cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/RuntimeException", pMessage); 87cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 88cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 89cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 90cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 91cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 9225ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung ChangvideoEditJava_checkAndThrowIllegalStateExceptionFunc( 93cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 94cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 95cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool condition, 9625ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang const char* pMessage, 9725ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang const char* pFile, 9825ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang int lineNo 9925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang ) 100cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 101cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 102cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 103cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 104cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the condition is true. 105cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (condition) 106cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 107cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the exception. 108cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 10925ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang "videoEditJava_checkAndThrowIllegalStateException, %s (%s:%d)", 11025ba294d1f7f16d285a98d4a8ec2524ca2f860daChih-Chung Chang pMessage, pFile, lineNo); 111cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 112cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 113cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 114cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 115cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 116cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/IllegalStateException", pMessage); 117cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 118cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 119cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 120cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 121cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 122cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getClass( 123cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 124cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 125cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName, 126cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass* pClazz) 127cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 128cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only look for the class if locating the previous action succeeded. 129cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 130cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 131cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 132cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 133cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getClass(%s)", pName); 134cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 135cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 136cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = pEnv->FindClass(pName); 137cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 138cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 139cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 140cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 141cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class could be located. 142cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != clazz) 143cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 144cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the class. 145cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pClazz) = clazz; 146cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 147cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 148cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 149cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 150cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 151cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 152cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the error. 153cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 154cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getClass, error: unable to locate class %s", pName); 155cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 156cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 157cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/ClassNotFoundException", 158cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "unable to locate class"); 159cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 160cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 161cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 162cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 163cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 164cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getMethodId( 165cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 166cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 167cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz, 168cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName, 169cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pType, 170cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jmethodID* pMethodId) 171cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 172cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only look for the class if locating the previous action succeeded. 173cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 174cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 175cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 176cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 177cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getMethodId(%s,%s)", pName, pType); 178cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 179cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the method id. 180cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jmethodID methodId = pEnv->GetMethodID(clazz, pName, pType); 181cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 182cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 183cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 184cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 185cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the method could be located. 186cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != methodId) 187cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 188cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the method id. 189cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pMethodId) = methodId; 190cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 191cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 192cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 193cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 194cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 195cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 196cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the error. 197cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 198cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getMethodId, error: unable to locate method %s with type %s", 199cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName, pType); 200cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 201cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 202cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/NoSuchMethodException", "unable to locate method"); 203cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 204cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 205cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 206cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 207cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 208cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getFieldId( 209cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 210cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 211cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz, 212cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName, 213cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pType, 214cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID* pFieldId) 215cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 216cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only look for the class if locating the previous action succeeded. 217cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 218cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 219cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 220cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 221cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getFieldId(%s,%s)", pName, pType); 222cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 223cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the field id. 224cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID fieldId = pEnv->GetFieldID(clazz, pName, pType); 225cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 226cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 227cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 228cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 229cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the field could be located. 230cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != fieldId) 231cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 232cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the field id. 233cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pFieldId) = fieldId; 234cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 235cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 236cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 237cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 238cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 239cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 240cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the error. 241cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 242cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getFieldId, error: unable to locate field %s with type %s", 243cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName, pType); 244cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 245cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 246cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/NoSuchFieldException", "unable to locate field"); 247cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 248cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 249cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 250cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 251cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 252cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getObject( 253cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 254cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 255cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobject object, 256cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID objectFieldId, 257cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobject* pObject) 258cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 259cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only retrieve the array object and size if the previous action succeeded. 260cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 261cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 262cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 263cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 264cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getObject()"); 265cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 266cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the object. 267cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pObject) = pEnv->GetObjectField(object, objectFieldId); 268cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 269cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 270cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 271cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 272cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 273cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 274cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 275cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getArray( 276cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 277cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 278cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobject object, 279cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID arrayFieldId, 280cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobjectArray* pArray, 281cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jsize* pArraySize) 282cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 283cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only retrieve the array object and size if the previous action succeeded. 284cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 285cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 286cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 287cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getArray()"); 288cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 289cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the array object. 290cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobjectArray array = (jobjectArray)pEnv->GetObjectField(object, arrayFieldId); 291cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jsize arraySize = 0; 292cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 293cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 294cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 295cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 296cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the array could be retrieved. 297cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != array) 298cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 299cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the array size. 300cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi arraySize = pEnv->GetArrayLength(array); 301cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 302cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 303cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the array and its size. 304cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pArray) = array; 305cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pArraySize) = arraySize; 306cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 307cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 308cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 309cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid* 310cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getString( 311cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 312cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 313cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jobject object, 314cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID stringFieldId, 315cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi M4OSA_UInt32* pLength) 316cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 317cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi void* pString = M4OSA_NULL; 318cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jstring string = NULL; 319cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi M4OSA_UInt32 length = 0; 320cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi M4OSA_Char* pLocal = M4OSA_NULL; 321cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi M4OSA_ERR result = M4NO_ERROR; 322cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 323cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 324cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 325cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 326cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 327cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getString()"); 328cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 329cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if an object containing a string was specified. 330cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != stringFieldId) 331cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 332cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the string object. 333cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi string = (jstring)pEnv->GetObjectField(object, stringFieldId); 334cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 335cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 336cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 337cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 338cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 339cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 340cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // The string itself was specified. 341cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi string = (jstring)object; 342cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 343cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 344cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the string could be retrieved. 345cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != string) 346cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 347cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Get a local copy of the string. 348cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pLocal = (M4OSA_Char*)pEnv->GetStringUTFChars(string, M4OSA_NULL); 349cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != pLocal) 350cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 351cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Determine the length of the path 352cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // (add one extra character for the zero terminator). 3537743fa64b11e9747d3ba8065a08a33ee9d90938fDheeraj Sharma length = strlen((const char *)pLocal) + 1; 354cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 355cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Allocate memory for the string. 356cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = videoEditOsal_alloc(pResult, pEnv, length, "String"); 357cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 358cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 359cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Copy the string. 360cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi result = M4OSA_chrNCopy((M4OSA_Char*)pString, pLocal, length); 361cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 362cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the copy succeeded. 363cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowRuntimeException(pResult, pEnv, 364cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (M4NO_ERROR != result), result); 365cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 366cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the string could not be copied. 367cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!(*pResult)) 368cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 369cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Free the allocated memory. 370cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditOsal_free(pString); 371cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = M4OSA_NULL; 372cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 373cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 374cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 375cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Release the local copy of the string. 376cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ReleaseStringUTFChars(string, (const char *)pLocal); 377cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 378cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 379cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 380cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the string was empty or could be copied. 381cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 382cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 383cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the length was requested. 384cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != pLength) 385cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 386cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the length. 387cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pLength) = length; 388cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 389cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 390cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 391cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 392cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the string. 393cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pString); 394cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 395cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 396cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 397cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getStaticIntField( 398cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 399cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 400cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz, 401cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName, 402cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int* pValue) 403cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 404cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only look for the class if locating the previous action succeeded. 405cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 406cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 407cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 408cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 409cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField(%s)", pName); 410cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 411cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the field id. 412cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID fieldId = pEnv->GetStaticFieldID(clazz, pName, "I"); 413cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 414cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 415cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 416cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 417cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the field could be located. 418cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != fieldId) 419cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 420cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the field value. 421cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pValue) = pEnv->GetStaticIntField(clazz, fieldId); 422cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 423cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the value. 4244e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 425cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField, %s = %d", pName, (*pValue)); 426cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 427cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 428cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 429cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 430cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 431cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 432cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the error. 433cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 434cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField, error: unable to locate field %s", pName); 435cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 436cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 437cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/NoSuchFieldException", 438cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "unable to locate static field"); 439cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 440cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 441cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 442cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 443cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 444cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initConstantClass( 445cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 446cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 447cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_ConstantsClass* pClass) 448cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 449cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 450cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 451cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 452cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 453cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 454cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 455cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 456cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 457cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 458cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initConstantClass(%s)", pClass->pName); 459cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 460cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 461cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 462cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 463cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 464cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 465cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 466cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the constants. 467cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 468cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 469cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the constant. 470cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getStaticIntField(pResult, pEnv, clazz, 471cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pConstants[index].pName, 472cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pConstants[index].java); 473cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 474cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 475cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all constants could be located. 476cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 477cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 478cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 479cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 480cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 481cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 482cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 483cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 484cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 485cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char* 486cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassName( 487cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 488cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 489cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_UnknownConstant unknown) 490cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 491cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName = M4OSA_NULL; 492cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 493cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 494cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 495cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; 496cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi ((M4OSA_NULL == pName) && (index < pClass->count)); 497cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi index++) 498cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 499cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 500cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 501cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 502cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the name. 503cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = pClass->pConstants[index].pName; 504cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 505cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 506cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 507cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if no constant was found. 508cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL == pName) 509cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 510cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if a function was specified to handle this case. 511cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != unknown) 512cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 513cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Pass the constant to the specified unknown function. 514cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = unknown(value); 515cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 516cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 517cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 518cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description to a default value. 519cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = "<unknown>"; 520cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 521cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 522cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 523cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the result. 524cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pName); 525cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 526cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 527cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char* 528cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassString( 529cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 530cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 531cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_UnknownConstant unknown) 532cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 533cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pString = M4OSA_NULL; 534cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 535cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 536cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 537cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; 538cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi ((M4OSA_NULL == pString) && (index < pClass->count)); 539cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi index++) 540cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 541cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 542cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 543cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 544cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description. 545cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = pClass->pConstants[index].pDescription; 546cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 547cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 548cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 549cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if no constant was found. 550cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL == pString) 551cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 552cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if a function was specified to handle this case. 553cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != unknown) 554cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 555cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Pass the constant to the specified unknown function. 556cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = unknown(value); 557cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 558cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 559cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 560cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description to a default value. 561cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = "<unknown>"; 562cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 563cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 564cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 565cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the result. 566cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pString); 567cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 568cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 569cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 570cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC( 571cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 572cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 573cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value) 574cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 575cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 576cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 577cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 578cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 579cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 580cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 581cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 582cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 583cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 584cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 585cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].java) 586cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 587cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 588cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].c; 589cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 590cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 591cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 592cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 593cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 594cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 595cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the value was not found. 596cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 597cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 598cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 599cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 600cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 601cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 602cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 603cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 604cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 605cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 606cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 607cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC( 608cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 609cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 610cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 611cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int unknown) 612cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 613cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 614cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 615cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 616cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 617cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 618cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 619cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 620cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 621cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 622cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 623cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].java) 624cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 625cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 626cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].c; 627cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 628cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 629cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 630cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 631cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 632cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 633cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // If the constant was not found, look for the specified unknown. 634cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 635cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 636cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 637cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = unknown; 638cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 639cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 640cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 641cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 642cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 643cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 644cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 645cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 646cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava( 647cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 648cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value) 649cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 650cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 651cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 652cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 653cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 654cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 655cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 656cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 657cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 658cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 659cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the java value. 660cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 661cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 662cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 663cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 664cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 665cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 666cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 667cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 668cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 669cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 670cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 671cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 672cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava( 673cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 674cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 675cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int unknown) 676cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 677cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 678cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 679cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 680cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 681cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 682cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 683cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 684cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 685cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 686cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the java value. 687cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 688cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 689cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 690cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 691cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 692cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 693cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 694cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // If the constant was not found, look for the specified unknown. 695cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 696cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 697cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 698cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 699cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 700cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 701cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (unknown == pClass->pConstants[index].c) 702cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 703cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 704cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 705cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 706cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 707cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 708cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 709cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 710cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 711cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 712cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 713cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 714cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 715cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 716cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 717cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initFieldClass( 718cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 719cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 720cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_FieldsClass* pClass) 721cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 722cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 723cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 724cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 725cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 726cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 727cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 728cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 729cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 730cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 731cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initFieldClass(%s)", pClass->pName); 732cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 733cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 734cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 735cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 736cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 737cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 738cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 739cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the fields. 740cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 741cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 742cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the field id. 743cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getFieldId( 744cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pResult, 745cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv, 746cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi clazz, 747cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pFields[index].pName, 748cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pFields[index].pType, 749cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pFields[index].fieldId); 750cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 751cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 752cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all fields could be located. 753cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 754cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 755cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 756cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 757cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 758cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 759cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 760cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 761cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 762cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 763cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassClass( 764cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 765cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 766cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_FieldsClass* pClass, 767cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass* pClazz) 768cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 769cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 770cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 771cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 772cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 773cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 774cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class not initialized"); 775cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 776cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Get the class. 777cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, pClazz); 778cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 779cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 780cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 781cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 782cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassFieldIds( 783cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 784cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 785cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_FieldsClass* pClass, 786cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int count, 787cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_FieldIds* pIds) 788cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 789cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 790cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 791cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 792cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 793cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 794cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 795cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 796cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class not initialized"); 797cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 798cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the number of fields matches. 799cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, 800cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (pClass->count != count), 801cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class type mismatch"); 802cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 803cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class and object are valid. 804cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 805cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 806cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the class fields. 807cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < count; index++) 808cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 809cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Copy the field ids. 810cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pIds->fieldIds[index] = pClass->pFields[index].fieldId; 811cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 812cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 813cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 814cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 815cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 816cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 817cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initMethodClass( 818cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 819cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 820cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_MethodsClass* pClass) 821cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 822cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 823cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 824cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 825cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 826cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 827cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 828cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 829cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 830cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 831cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initMethodClass(%s)", pClass->pName); 832cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 833cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 834cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 835cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 836cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 837cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 838cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 839cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the methods. 840cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 841cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 842cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the method id. 843cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getMethodId( 844cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pResult, 845cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv, 846cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi clazz, 847cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pMethods[index].pName, 848cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pMethods[index].pType, 849cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pMethods[index].methodId); 850cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 851cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 852cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all methods could be located. 853cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 854cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 855cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 856cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 857cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 858cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 859cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 860cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 861cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 862cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 863cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_methodClassMethodIds( 864cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 865cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 866cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_MethodsClass* pClass, 867cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int count, 868cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_MethodIds* pIds) 869cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 870cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 871cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 872cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 873cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 874cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 875cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 876cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 877cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "method class not initialized"); 878cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 879cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the number of methods matches. 880cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,\ 881cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (pClass->count != count), 882cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "method class type mismatch"); 883cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 884cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class and object are valid. 885cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 886cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 887cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the class methods. 888cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < count; index++) 889cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 890cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Copy the method ids. 891cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pIds->methodIds[index] = pClass->pMethods[index].methodId; 892cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 893cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 894cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 895cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 896cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 897