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 } 390c96a7294a4ec7f807dbe0fd82a2ba2d58008304bwfeng 391c96a7294a4ec7f807dbe0fd82a2ba2d58008304bwfeng // Delete local references to avoid memory leaks 392c96a7294a4ec7f807dbe0fd82a2ba2d58008304bwfeng pEnv->DeleteLocalRef(string); 393cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 394cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 395cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the string. 396cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pString); 397cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 398cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 399cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 400cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getStaticIntField( 401cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 402cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 403cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz, 404cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName, 405cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int* pValue) 406cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 407cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only look for the class if locating the previous action succeeded. 408cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 409cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 410cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 411cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 412cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField(%s)", pName); 413cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 414cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the field id. 415cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jfieldID fieldId = pEnv->GetStaticFieldID(clazz, pName, "I"); 416cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 417cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Clear any resulting exceptions. 418cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv->ExceptionClear(); 419cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 420cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the field could be located. 421cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (NULL != fieldId) 422cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 423cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Retrieve the field value. 424cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pValue) = pEnv->GetStaticIntField(clazz, fieldId); 425cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 426cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the value. 4274e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 428cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField, %s = %d", pName, (*pValue)); 429cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 430cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 431cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 432cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Reset the result flag. 433cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 434cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 435cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the error. 436cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA", 437cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_getStaticIntField, error: unable to locate field %s", pName); 438cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 439cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Throw an exception. 440cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jniThrowException(pEnv, "java/lang/NoSuchFieldException", 441cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "unable to locate static field"); 442cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 443cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 444cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 445cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 446cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 447cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initConstantClass( 448cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 449cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 450cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_ConstantsClass* pClass) 451cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 452cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 453cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 454cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 455cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 456cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 457cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 458cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 459cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 460cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 461cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initConstantClass(%s)", pClass->pName); 462cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 463cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 464cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 465cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 466cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 467cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 468cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 469cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the constants. 470cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 471cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 472cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the constant. 473cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getStaticIntField(pResult, pEnv, clazz, 474cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pConstants[index].pName, 475cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pConstants[index].java); 476cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 477cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 478cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all constants could be located. 479cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 480cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 481cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 482cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 483cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 484cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 485cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 486cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 487cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 488cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char* 489cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassName( 490cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 491cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 492cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_UnknownConstant unknown) 493cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 494cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pName = M4OSA_NULL; 495cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 496cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 497cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 498cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; 499cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi ((M4OSA_NULL == pName) && (index < pClass->count)); 500cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi index++) 501cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 502cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 503cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 504cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 505cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the name. 506cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = pClass->pConstants[index].pName; 507cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 508cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 509cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 510cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if no constant was found. 511cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL == pName) 512cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 513cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if a function was specified to handle this case. 514cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != unknown) 515cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 516cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Pass the constant to the specified unknown function. 517cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = unknown(value); 518cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 519cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 520cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 521cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description to a default value. 522cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pName = "<unknown>"; 523cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 524cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 525cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 526cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the result. 527cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pName); 528cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 529cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 530cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiconst char* 531cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassString( 532cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 533cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 534cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_UnknownConstant unknown) 535cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 536cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const char* pString = M4OSA_NULL; 537cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 538cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 539cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 540cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; 541cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi ((M4OSA_NULL == pString) && (index < pClass->count)); 542cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi index++) 543cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 544cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 545cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 546cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 547cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description. 548cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = pClass->pConstants[index].pDescription; 549cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 550cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 551cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 552cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if no constant was found. 553cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL == pString) 554cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 555cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if a function was specified to handle this case. 556cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (M4OSA_NULL != unknown) 557cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 558cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Pass the constant to the specified unknown function. 559cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = unknown(value); 560cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 561cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi else 562cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 563cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the description to a default value. 564cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pString = "<unknown>"; 565cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 566cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 567cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 568cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the result. 569cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(pString); 570cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 571cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 572cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 573cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC( 574cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 575cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 576cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value) 577cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 578cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 579cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 580cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 581cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 582cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 583cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 584cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 585cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 586cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 587cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 588cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].java) 589cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 590cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 591cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].c; 592cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 593cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 594cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 595cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 596cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 597cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 598cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the value was not found. 599cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 600cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 601cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (*pResult) = false; 602cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 603cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 604cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 605cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 606cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 607cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 608cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 609cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 610cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassJavaToC( 611cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 612cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 613cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 614cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int unknown) 615cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 616cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 617cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 618cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 619cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 620cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 621cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 622cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 623cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 624cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 625cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 626cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].java) 627cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 628cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 629cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].c; 630cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 631cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 632cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 633cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 634cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 635cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 636cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // If the constant was not found, look for the specified unknown. 637cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 638cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 639cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 640cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = unknown; 641cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 642cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 643cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 644cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 645cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 646cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 647cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 648cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 649cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava( 650cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 651cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value) 652cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 653cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 654cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 655cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 656cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 657cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 658cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 659cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 660cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 661cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 662cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the java value. 663cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 664cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 665cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 666cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 667cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 668cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 669cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 670cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 671cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 672cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 673cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 674cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargiint 675cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_getConstantClassCToJava( 676cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_ConstantsClass* pClass, 677cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int value, 678cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int unknown) 679cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 680cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = false; 681cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 682cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 683cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 684cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 685cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 686cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the c value of the constant. 687cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (value == pClass->pConstants[index].c) 688cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 689cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the java value. 690cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 691cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 692cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 693cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 694cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 695cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 696cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 697cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // If the constant was not found, look for the specified unknown. 698cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!gotten) 699cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 700cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the list with constants. 701cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; ((!gotten) && (index < pClass->count)); index++) 702cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 703cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the specified value matches the java value of the constant. 704cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (unknown == pClass->pConstants[index].c) 705cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 706cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the value to the c value. 707cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi value = pClass->pConstants[index].java; 708cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 709cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the gotten flag. 710cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi gotten = true; 711cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 712cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 713cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 714cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 715cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Return the translated value. 716cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi return(value); 717cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 718cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 719cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 720cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initFieldClass( 721cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 722cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 723cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_FieldsClass* pClass) 724cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 725cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 726cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 727cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 728cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 729cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 730cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 731cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 732cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 733cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 734cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initFieldClass(%s)", pClass->pName); 735cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 736cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 737cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 738cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 739cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 740cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 741cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 742cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the fields. 743cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 744cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 745cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the field id. 746cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getFieldId( 747cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pResult, 748cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv, 749cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi clazz, 750cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pFields[index].pName, 751cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pFields[index].pType, 752cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pFields[index].fieldId); 753cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 754cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 755cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all fields could be located. 756cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 757cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 758cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 759cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 760cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 761cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 762cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 763cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 764cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 765cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 766cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassClass( 767cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 768cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 769cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_FieldsClass* pClass, 770cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass* pClazz) 771cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 772cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 773cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 774cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 775cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 776cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 777cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class not initialized"); 778cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 779cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Get the class. 780cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, pClazz); 781cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 782cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 783cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 784cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 785cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_fieldClassFieldIds( 786cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 787cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 788cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_FieldsClass* pClass, 789cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int count, 790cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_FieldIds* pIds) 791cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 792cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 793cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 794cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 795cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 796cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 797cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 798cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 799cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class not initialized"); 800cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 801cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the number of fields matches. 802cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, 803cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (pClass->count != count), 804cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "field class type mismatch"); 805cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 806cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class and object are valid. 807cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 808cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 809cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the class fields. 810cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < count; index++) 811cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 812cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Copy the field ids. 813cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pIds->fieldIds[index] = pClass->pFields[index].fieldId; 814cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 815cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 816cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 817cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 818cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 819cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 820cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_initMethodClass( 821cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 822cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 823cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_MethodsClass* pClass) 824cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 825cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool gotten = true; 826cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi jclass clazz = NULL; 827cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 828cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 829cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 830cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 831cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 832cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Log the function call. 833cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", 834cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "videoEditJava_initMethodClass(%s)", pClass->pName); 835cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 836cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Only initialize the class once. 837cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (!pClass->initialized) 838cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 839cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the class. 840cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz); 841cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 842cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the methods. 843cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < pClass->count; index++) 844cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 845cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Look up the method id. 846cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_getMethodId( 847cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pResult, 848cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pEnv, 849cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi clazz, 850cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pMethods[index].pName, 851cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->pMethods[index].pType, 852cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi &pClass->pMethods[index].methodId); 853cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 854cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 855cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if all methods could be located. 856cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 857cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 858cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Set the initialized flag. 859cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pClass->initialized = true; 860cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 861cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 862cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 863cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 864cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 865cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargivoid 866cd196d3727db641e581d4223815367a5ca5d5637Dharmaray KundargivideoEditJava_methodClassMethodIds( 867cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi bool* pResult, 868cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi JNIEnv* pEnv, 869cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi const VideoEditJava_MethodsClass* pClass, 870cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int count, 871cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi VideoEditJava_MethodIds* pIds) 872cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ 873cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi int index = 0; 874cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 875cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the previous action succeeded. 876cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 877cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 878cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class is initialized. 879cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized), 880cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "method class not initialized"); 881cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 882cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the number of methods matches. 883cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,\ 884cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi (pClass->count != count), 885cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi "method class type mismatch"); 886cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 887cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Check if the class and object are valid. 888cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi if (*pResult) 889cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 890cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Loop over the class methods. 891cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi for (index = 0; index < count; index++) 892cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi { 893cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi // Copy the method ids. 894cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi pIds->methodIds[index] = pClass->pMethods[index].methodId; 895cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 896cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 897cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi } 898cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} 899cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi 900