VideoEditorJava.h revision cd196d3727db641e581d4223815367a5ca5d5637
1/* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef VIDEO_EDiTOR_JAVA_H 18#define VIDEO_EDiTOR_JAVA_H 19 20#include <jni.h> 21#include <JNIHelp.h> 22 23/** 24 ************************************************************************ 25 * @file VideoEditorJava.h 26 * @brief Interface for JNI methods that have specific access to 27 * class, objects and method Ids defined in Java layer 28 ************************************************************************ 29*/ 30 31extern "C" { 32#include <M4OSA_Types.h> 33#include <M4OSA_Error.h> 34} 35 36#define VIDEOEDIT_JAVA_CONSTANT_INIT(m_name, m_c) \ 37 { m_name, \ 38 0, \ 39 m_c, \ 40 #m_c } 41 42#define VIDEOEDIT_JAVA_DEFINE_CONSTANTS(m_class) \ 43static \ 44VideoEditJava_Constant g##m_class##Constants [] = 45 46#define VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS( \ 47 m_class, \ 48 m_name, \ 49 m_unknownName, \ 50 m_unknownString) \ 51 \ 52static VideoEditJava_ConstantsClass g##m_class##ConstantsClass = \ 53{ m_name, \ 54 &g##m_class##Constants[0], \ 55 (sizeof(g##m_class##Constants) / sizeof(VideoEditJava_Constant)), \ 56 false \ 57}; \ 58 \ 59 \ 60void videoEditJava_init##m_class##Constants( \ 61 bool* pResult, \ 62 JNIEnv* pEnv) \ 63{ \ 64 videoEditJava_initConstantClass( \ 65 pResult, \ 66 pEnv, \ 67 &g##m_class##ConstantsClass); \ 68} \ 69 \ 70const char* videoEditJava_get##m_class##Name( \ 71 int value) \ 72{ \ 73 return(videoEditJava_getConstantClassName( \ 74 &g##m_class##ConstantsClass, \ 75 value, \ 76 m_unknownName)); \ 77} \ 78 \ 79const char* videoEditJava_get##m_class##String( \ 80 int value) \ 81{ \ 82 return(videoEditJava_getConstantClassString( \ 83 &g##m_class##ConstantsClass, \ 84 value, \ 85 m_unknownString)); \ 86} \ 87 \ 88int \ 89videoEditJava_get##m_class##JavaToC( \ 90 bool* pResult, \ 91 int value) \ 92{ \ 93 return(videoEditJava_getConstantClassJavaToC( \ 94 pResult, \ 95 &g##m_class##ConstantsClass, \ 96 value)); \ 97} \ 98 \ 99int \ 100videoEditJava_get##m_class##JavaToC( \ 101 bool* pResult, \ 102 int value, \ 103 int unknown) \ 104{ \ 105 return(videoEditJava_getConstantClassJavaToC( \ 106 pResult, \ 107 &g##m_class##ConstantsClass, \ 108 value, \ 109 unknown)); \ 110} \ 111 \ 112int \ 113videoEditJava_get##m_class##CToJava( \ 114 int value) \ 115{ \ 116 return(videoEditJava_getConstantClassCToJava( \ 117 &g##m_class##ConstantsClass, \ 118 value)); \ 119} \ 120 \ 121int \ 122videoEditJava_get##m_class##CToJava( \ 123 int value, \ 124 int unknown) \ 125{ \ 126 return(videoEditJava_getConstantClassCToJava( \ 127 &g##m_class##ConstantsClass, \ 128 value, \ 129 unknown)); \ 130} 131 132 133#define VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(m_class) \ 134void \ 135videoEditJava_init##m_class##Constants( \ 136 bool* pResult, \ 137 JNIEnv* pEnv); \ 138 \ 139const char* \ 140videoEditJava_get##m_class##Name( \ 141 int value); \ 142 \ 143const char* \ 144videoEditJava_get##m_class##String( \ 145 int value); \ 146 \ 147int \ 148videoEditJava_get##m_class##JavaToC( \ 149 bool* pResult, \ 150 int value, \ 151 int unknown); \ 152 \ 153int \ 154videoEditJava_get##m_class##JavaToC( \ 155 bool* pResult, \ 156 int value); \ 157 \ 158int \ 159videoEditJava_get##m_class##CToJava( \ 160 int value); \ 161 \ 162int \ 163videoEditJava_get##m_class##CToJava( \ 164 int value, \ 165 int unknown); 166 167#define VIDEOEDIT_JAVA_FIELD_INIT(m_name, m_type) \ 168 { m_name, \ 169 m_type, \ 170 NULL } 171 172#define VIDEOEDIT_JAVA_DEFINE_FIELDS(m_class) \ 173static \ 174VideoEditJava_Field g##m_class##Fields [] = 175 176#define VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(m_class, m_name) \ 177static VideoEditJava_FieldsClass g##m_class##FieldsClass = \ 178 { m_name, \ 179 &g##m_class##Fields[0], \ 180 (sizeof(g##m_class##Fields) / sizeof(VideoEditJava_Field)), \ 181 false }; \ 182 \ 183void \ 184videoEditJava_init##m_class##Fields( \ 185 bool* pResult, \ 186 JNIEnv* pEnv) \ 187{ \ 188 videoEditJava_initFieldClass( \ 189 pResult, \ 190 pEnv, \ 191 &g##m_class##FieldsClass); \ 192} \ 193 \ 194void \ 195videoEditJava_get##m_class##Class( \ 196 bool* pResult, \ 197 JNIEnv* pEnv, \ 198 jclass* pClazz) \ 199{ \ 200 videoEditJava_fieldClassClass( \ 201 pResult, \ 202 pEnv, \ 203 &g##m_class##FieldsClass, \ 204 pClazz); \ 205} \ 206 \ 207void \ 208videoEditJava_get##m_class##FieldIds( \ 209 bool* pResult, \ 210 JNIEnv* pEnv, \ 211 VideoEditJava_##m_class##FieldIds* pIds) \ 212{ \ 213 videoEditJava_fieldClassFieldIds( \ 214 pResult, \ 215 pEnv, \ 216 &g##m_class##FieldsClass, \ 217 (sizeof(VideoEditJava_##m_class##FieldIds) / \ 218 sizeof(jfieldID)), \ 219 (VideoEditJava_FieldIds*)pIds); \ 220} 221 222#define VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(m_class) \ 223void \ 224videoEditJava_init##m_class##Fields( \ 225 bool* pResult, \ 226 JNIEnv* pEnv); \ 227 \ 228void \ 229videoEditJava_get##m_class##Class( \ 230 bool* pResult, \ 231 JNIEnv* pEnv, \ 232 jclass* pClazz); \ 233 \ 234void \ 235videoEditJava_get##m_class##FieldIds( \ 236 bool* pResult, \ 237 JNIEnv* pEnv, \ 238 VideoEditJava_##m_class##FieldIds* pIds); 239 240 241#define VIDEOEDIT_JAVA_METHOD_INIT(m_name, m_type) \ 242 { m_name, \ 243 m_type, \ 244 NULL } 245 246#define VIDEOEDIT_JAVA_DEFINE_METHODS(m_class) \ 247static \ 248VideoEditJava_Method g##m_class##Methods [] = 249 250#define VIDEOEDIT_JAVA_DEFINE_METHOD_CLASS(m_class, m_name) \ 251static VideoEditJava_MethodsClass g##m_class##MethodsClass = \ 252 { m_name, \ 253 &g##m_class##Methods[0], \ 254 (sizeof(g##m_class##Methods) / sizeof(VideoEditJava_Method)), \ 255 false }; \ 256 \ 257void \ 258videoEditJava_init##m_class##Methods( \ 259 bool* pResult, \ 260 JNIEnv* pEnv) \ 261{ \ 262 videoEditJava_initMethodClass( \ 263 pResult, \ 264 pEnv, \ 265 &g##m_class##MethodsClass); \ 266} \ 267 \ 268void \ 269videoEditJava_get##m_class##MethodIds( \ 270 bool* pResult, \ 271 JNIEnv* pEnv, \ 272 VideoEditJava_##m_class##MethodIds* pIds) \ 273{ \ 274 videoEditJava_methodClassMethodIds( \ 275 pResult, \ 276 pEnv, \ 277 &g##m_class##MethodsClass, \ 278 (sizeof(VideoEditJava_##m_class##MethodIds) / \ 279 sizeof(jmethodID)), \ 280 (VideoEditJava_MethodIds*)pIds); \ 281} 282 283#define VIDEOEDIT_JAVA_DECLARE_METHOD_CLASS(m_class) \ 284void \ 285videoEditJava_init##m_class##Methods( \ 286 bool* pResult, \ 287 JNIEnv* pEnv); \ 288 \ 289void \ 290videoEditJava_get##m_class##MethodIds( \ 291 bool* pResult, \ 292 JNIEnv* pEnv, \ 293 VideoEditJava_##m_class##MethodIds* pIds); 294 295 296typedef struct 297{ 298 const char* pName; 299 int java; 300 int c; 301 const char* pDescription; 302} VideoEditJava_Constant; 303 304typedef struct 305{ 306 const char* pName; 307 VideoEditJava_Constant* pConstants; 308 int count; 309 bool initialized; 310} VideoEditJava_ConstantsClass; 311 312typedef const char* (*VideoEditJava_UnknownConstant)(int constant); 313 314typedef struct 315{ 316 const char* pName; 317 const char* pType; 318 jfieldID fieldId; 319} VideoEditJava_Field; 320 321typedef struct 322{ 323 const char* pName; 324 VideoEditJava_Field* pFields; 325 int count; 326 bool initialized; 327} VideoEditJava_FieldsClass; 328 329typedef struct 330{ 331 jfieldID fieldIds[]; 332} VideoEditJava_FieldIds; 333 334typedef struct 335{ 336 const char* pName; 337 const char* pType; 338 jmethodID methodId; 339} VideoEditJava_Method; 340 341typedef struct 342{ 343 const char* pName; 344 VideoEditJava_Method* pMethods; 345 int count; 346 bool initialized; 347} VideoEditJava_MethodsClass; 348 349typedef struct 350{ 351 jmethodID methodIds[]; 352} VideoEditJava_MethodIds; 353 354void 355videoEditJava_checkAndThrowIllegalArgumentException( 356 bool* pResult, 357 JNIEnv* pEnv, 358 bool condition, 359 const char* pMessage); 360 361void 362videoEditJava_checkAndThrowRuntimeException( 363 bool* pResult, 364 JNIEnv* pEnv, 365 bool condition, 366 M4OSA_ERR result); 367 368void 369videoEditJava_checkAndThrowIllegalStateException( 370 bool* pResult, 371 JNIEnv* pEnv, 372 bool condition, 373 const char* pMessage); 374 375void 376videoEditJava_getClass( 377 bool* pResult, 378 JNIEnv* pEnv, 379 const char* pName, 380 jclass* pClazz); 381 382void 383videoEditJava_getMethodId( 384 bool* pResult, 385 JNIEnv* pEnv, 386 jclass clazz, 387 const char* pName, 388 const char* pType, 389 jmethodID* pMethodId); 390 391void videoEditJava_getFieldId( 392 bool* pResult, 393 JNIEnv* pEnv, 394 jclass clazz, 395 const char* pName, 396 const char* pType, 397 jfieldID* pFieldId); 398 399void videoEditJava_getObject( 400 bool* pResult, 401 JNIEnv* pEnv, 402 jobject object, 403 jfieldID objectFieldId, 404 jobject* pObject); 405 406void videoEditJava_getArray( 407 bool* pResult, 408 JNIEnv* pEnv, 409 jobject object, 410 jfieldID arrayFieldId, 411 jobjectArray* pArray, 412 jsize* pArraySize); 413 414void* videoEditJava_getString( 415 bool* pResult, 416 JNIEnv* pEnv, 417 jobject object, 418 jfieldID stringFieldId, 419 M4OSA_UInt32* pLength); 420 421void videoEditJava_getStaticIntField( 422 bool* pResult, 423 JNIEnv* env, 424 jclass clazz, 425 const char* pName, 426 int* pValue); 427 428void 429videoEditJava_initConstantClass( 430 bool* pResult, 431 JNIEnv* pEnv, 432 VideoEditJava_ConstantsClass* pClass); 433 434const char* 435videoEditJava_getConstantClassName( 436 const VideoEditJava_ConstantsClass* pClass, 437 int value, 438 VideoEditJava_UnknownConstant unknown); 439 440const char* 441videoEditJava_getConstantClassString( 442 const VideoEditJava_ConstantsClass* pClass, 443 int value, 444 VideoEditJava_UnknownConstant unknown); 445 446int 447videoEditJava_getConstantClassJavaToC( 448 bool* pResult, 449 const VideoEditJava_ConstantsClass* pClass, 450 int value); 451 452int 453videoEditJava_getConstantClassJavaToC( 454 bool* pResult, 455 const VideoEditJava_ConstantsClass* pClass, 456 int value, 457 int unknown); 458 459int 460videoEditJava_getConstantClassCToJava( 461 const VideoEditJava_ConstantsClass* pClass, 462 int value); 463 464int 465videoEditJava_getConstantClassCToJava( 466 const VideoEditJava_ConstantsClass* pClass, 467 int value, 468 int unknown); 469 470void 471videoEditJava_initFieldClass( 472 bool* pResult, 473 JNIEnv* pEnv, 474 VideoEditJava_FieldsClass* pClass); 475 476void 477videoEditJava_fieldClassClass( 478 bool* pResult, 479 JNIEnv* pEnv, 480 const VideoEditJava_FieldsClass* pClass, 481 jclass* pClazz); 482 483void 484videoEditJava_fieldClassFieldIds( 485 bool* pResult, 486 JNIEnv* pEnv, 487 const VideoEditJava_FieldsClass* pClass, 488 int count, 489 VideoEditJava_FieldIds* pIds); 490 491void 492videoEditJava_initMethodClass( 493 bool* pResult, 494 JNIEnv* pEnv, 495 VideoEditJava_MethodsClass* pClass); 496 497void 498videoEditJava_methodClassMethodIds( 499 bool* pResult, 500 JNIEnv* pEnv, 501 const VideoEditJava_MethodsClass* pClass, 502 int count, 503 VideoEditJava_MethodIds* pIds); 504 505#endif // VIDEO_EDiTOR_JAVA_H 506 507