VideoEditorOsal.cpp revision c0125dd4f1f8bb03ad16138f86d55ed3305240c4
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#include <VideoEditorJava.h> 18#include <VideoEditorLogging.h> 19#include <VideoEditorOsal.h> 20 21extern "C" { 22#include <M4OSA_Clock.h> 23#include <M4OSA_CharStar.h> 24#include <M4OSA_FileCommon.h> 25#include <M4OSA_FileReader.h> 26#include <M4OSA_FileWriter.h> 27#include <M4OSA_Memory.h> 28#include <M4OSA_String.h> 29#include <M4OSA_Thread.h> 30#include <M4xVSS_API.h> 31#include <M4VSS3GPP_ErrorCodes.h> 32#include <M4MCS_ErrorCodes.h> 33#include <M4READER_Common.h> 34#include <M4WRITER_common.h> 35#include <M4VSS3GPP_API.h> 36#include <M4DECODER_Common.h> 37}; 38 39 40#define VIDEOEDIT_OSAL_RESULT_STRING_MAX (32) 41 42#define VIDEOEDIT_OSAL_RESULT_INIT(m_result) { m_result, #m_result } 43 44 45typedef struct 46{ 47 M4OSA_ERR result; 48 const char* pName; 49} VideoEdit_Osal_Result; 50 51static const VideoEdit_Osal_Result gkRESULTS[] = 52{ 53 // M4OSA_Clock.h 54 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TIMESCALE_TOO_BIG ), 55 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_CLOCK_BAD_REF_YEAR ), 56 57 // M4OSA_Error.h 58 VIDEOEDIT_OSAL_RESULT_INIT(M4NO_ERROR ), 59 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_PARAMETER ), 60 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STATE ), 61 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_ALLOC ), 62 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_CONTEXT ), 63 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_CONTEXT_FAILED ), 64 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_STREAM_ID ), 65 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_OPTION_ID ), 66 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_WRITE_ONLY ), 67 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_READ_ONLY ), 68 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_NOT_IMPLEMENTED ), 69 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_UNSUPPORTED_MEDIA_TYPE ), 70 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_DATA_YET ), 71 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_MORE_STREAM ), 72 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_INVALID_TIME ), 73 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_MORE_AU ), 74 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TIME_OUT ), 75 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_BUFFER_FULL ), 76 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_REDIRECT ), 77 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TOO_MUCH_STREAMS ), 78 79 // M4OSA_FileCommon.h 80 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_NOT_FOUND ), 81 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_LOCKED ), 82 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_BAD_MODE_ACCESS ), 83 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_INVALID_POSITION ), 84 85 // M4OSA_String.h 86 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STR_BAD_STRING ), 87 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STR_CONV_FAILED ), 88 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STR_OVERFLOW ), 89 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STR_BAD_ARGS ), 90 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_STR_OVERFLOW ), 91 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_STR_NOT_FOUND ), 92 93 // M4OSA_Thread.h 94 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_THREAD_NOT_STARTED ), 95 96 // M4xVSS_API.h 97 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_ANALYZING_DONE ), 98 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_PREVIEW_READY ), 99 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_SAVING_DONE ), 100 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_TRANSCODING_NECESSARY ), 101 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED ), 102 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_JPG_TOO_BIG ), 103 VIDEOEDIT_OSAL_RESULT_INIT(M4xVSSWAR_BUFFER_OUT_TOO_SMALL ), 104 VIDEOEDIT_OSAL_RESULT_INIT(M4xVSSERR_NO_MORE_SPACE ), 105 106 // M4VSS3GPP_ErrorCodes.h 107 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_FILE_TYPE ), 108 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_EFFECT_KIND ), 109 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_EFFECT_TYPE ), 110 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_AUDIO_EFFECT_TYPE ), 111 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_TRANSITION_TYPE ), 112 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_AUDIO_TRANSITION_TYPE ), 113 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_ENCODING_FRAME_RATE ), 114 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EXTERNAL_EFFECT_NULL ), 115 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EXTERNAL_TRANSITION_NULL ), 116 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_DURATION ), 117 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_END_CUT ), 118 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_OVERLAPPING_TRANSITIONS ), 119#ifdef M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL 120 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL ), 121#endif 122 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_3GPP_FILE ), 123 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT ), 124 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_INPUT_AUDIO_FORMAT ), 125 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AMR_EDITING_UNSUPPORTED ), 126 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_VIDEO_AU_TOO_LARGE ), 127 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_AU_TOO_LARGE ), 128 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AU ), 129#ifdef M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU 130 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU ), 131#endif 132 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ENCODER_ACCES_UNIT_ERROR ), 133 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_FORMAT ), 134 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_H263_PROFILE ), 135 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE ), 136 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_RVLC ), 137 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT ), 138 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE ), 139 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE), 140 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_VERSION ), 141#ifdef M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM 142 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM ), 143#endif 144 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FORMAT ), 145 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE ), 146 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_TIME_SCALE ), 147 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING ), 148 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_MP3_ASSEMBLY ), 149 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_STREAM_TYPE ), 150 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_NB_OF_CHANNELS ), 151 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_SAMPLING_FREQUENCY ), 152 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_NO_SUPPORTED_STREAM_IN_FILE ), 153 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ADDVOLUME_EQUALS_ZERO ), 154 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ADDCTS_HIGHER_THAN_VIDEO_DURATION ), 155 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNDEFINED_AUDIO_TRACK_FILE_FORMAT ), 156 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_ADDED_AUDIO_STREAM ), 157 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_MIXING_UNSUPPORTED ), 158 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AUDIO_TRACK ), 159 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_CANNOT_BE_MIXED ), 160 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_CLIP_IS_NOT_A_3GPP ), 161 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGINLOOP_HIGHER_ENDLOOP ), 162#ifdef M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED 163 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED ), 164#endif 165#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC 166 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC ), 167#endif 168#ifdef M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED 169 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED ), 170#endif 171#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC 172 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC ), 173#endif 174 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_H263_PROFILE_NOT_SUPPORTED ), 175 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_NO_SUPPORTED_VIDEO_STREAM_IN_FILE ), 176 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INTERNAL_STATE ), 177 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_LUMA_FILTER_ERROR ), 178 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_CURTAIN_FILTER_ERROR ), 179 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_TRANSITION_FILTER_ERROR ), 180 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_DECODER_INIT_FAILED ), 181 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_DECODED_PCM_SIZE_ISSUE ), 182 VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_OUTPUT_FILE_TYPE_ERROR ), 183 184 // M4MCS_ErrorCodes.h 185 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_WAR_TRANSCODING_DONE ), 186 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_WAR_MEDIATYPE_NOT_SUPPORTED ), 187 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INPUT_FILE_CONTAINS_NO_SUPPORTED_STREAM ), 188 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_INPUT_FILE ), 189 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FORMAT ), 190 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_SIZE ), 191 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_RATE ), 192 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_AUDIO_FORMAT ), 193 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_VIDEO_FRAME_SIZE_FOR_H263 ), 194 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_VIDEO_FRAME_RATE_FOR_H263 ), 195 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_DURATION_IS_NULL ), 196 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_H263_FORBIDDEN_IN_MP4_FILE ), 197 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_H263_PROFILE_NOT_SUPPORTED ), 198 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_AAC_SAMPLING_FREQUENCY ), 199 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIO_CONVERSION_FAILED ), 200 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_BEGIN_CUT_LARGER_THAN_DURATION ), 201 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_BEGIN_CUT_EQUALS_END_CUT ), 202 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_END_CUT_SMALLER_THAN_BEGIN_CUT ), 203 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_MAXFILESIZE_TOO_SMALL ), 204 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_VIDEOBITRATE_TOO_LOW ), 205 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIOBITRATE_TOO_LOW ), 206 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_VIDEOBITRATE_TOO_HIGH ), 207 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIOBITRATE_TOO_HIGH ), 208 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_OUTPUT_FILE_SIZE_TOO_SMALL ), 209 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_NOMORE_SPACE ), 210 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_FILE_DRM_PROTECTED ), 211 212 // M4READER_Common.h 213 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_READER_UNKNOWN_STREAM_TYPE ), 214 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_READER_NO_METADATA ), 215 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_READER_INFORMATION_NOT_PRESENT ), 216 217 // M4WRITER_Common.h 218 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_WRITER_STOP_REQ ), 219 // M4DECODER_Common.h 220 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_VIDEORENDERER_NO_NEW_FRAME ), 221 VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED ), 222 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_DECODER_H263_PROFILE_NOT_SUPPORTED ), 223 VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_DECODER_H263_NOT_BASELINE ) 224}; 225 226static const int gkRESULTS_COUNT = (sizeof(gkRESULTS) / sizeof(VideoEdit_Osal_Result)); 227 228#ifdef OSAL_MEM_LEAK_DEBUG 229static int gAllocatedBlockCount = 0; 230#endif 231 232const char* 233videoEditOsal_getResultString( 234 M4OSA_ERR result) 235{ 236 static char string[VIDEOEDIT_OSAL_RESULT_STRING_MAX] = ""; 237 const char* pString = M4OSA_NULL; 238 int index = 0; 239 240 // Loop over the list with constants. 241 for (index = 0; 242 ((M4OSA_NULL == pString) && (index < gkRESULTS_COUNT)); 243 index++) 244 { 245 // Check if the specified result matches. 246 if (result == gkRESULTS[index].result) 247 { 248 // Set the description. 249 pString = gkRESULTS[index].pName; 250 } 251 } 252 253 // Check if no result was found. 254 if (M4OSA_NULL == pString) 255 { 256 // Set the description to a default value. 257 M4OSA_chrSPrintf((M4OSA_Char *)string, sizeof(string) - 1, 258 (M4OSA_Char*)"<unknown(0x%08X)>", result); 259 pString = string; 260 } 261 262 // Return the result. 263 return(pString); 264} 265 266void * 267videoEditOsal_alloc( 268 bool* pResult, 269 JNIEnv* pEnv, 270 size_t size, 271 const char* pDescription) 272{ 273 void *pData = M4OSA_NULL; 274 275 // Check if the previous action succeeded. 276 if (*pResult) 277 { 278 // Allocate memory for the settings. 279 pData = (M4VSS3GPP_EditSettings*)M4OSA_32bitAlignedMalloc(size, 0, (M4OSA_Char*)pDescription); 280 if (M4OSA_NULL != pData) 281 { 282 // Reset the allocated memory. 283 memset((void *)pData, 0,size); 284#ifdef OSAL_MEM_LEAK_DEBUG 285 // Update the allocated block count. 286 gAllocatedBlockCount++; 287#endif 288 } 289 else 290 { 291 // Reset the result flag. 292 (*pResult) = false; 293 294 // Log the error. 295 VIDEOEDIT_LOG_ERROR(ANDROID_LOG_ERROR, "VIDEO_EDITOR_OSAL", "videoEditOsal_alloc,\ 296 error: unable to allocate memory for %s", pDescription); 297 298 // Throw an exception. 299 jniThrowException(pEnv, "java/lang/OutOfMemoryError", "unable to allocate memory"); 300 } 301 } 302 303 // Return the allocated memory. 304 return(pData); 305} 306 307void 308videoEditOsal_free( 309 void* pData) 310{ 311 // Check if memory was allocated. 312 if (M4OSA_NULL != pData) 313 { 314 VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_OSAL", "videoEditOsal_free()"); 315 316 // Log the API call. 317 VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR_OSAL", "free"); 318 319 // Free the memory. 320 free(pData); 321#ifdef OSAL_MEM_LEAK_DEBUG 322 // Update the allocated block count. 323 gAllocatedBlockCount--; 324 325 // Log the number of allocated blocks. 326 VIDEOEDIT_LOG_ALLOCATION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_OSAL", "allocated, %d blocks",\ 327 gAllocatedBlockCount); 328#endif 329 } 330} 331 332 333void 334videoEditOsal_getFilePointers ( M4OSA_FileReadPointer *pOsaFileReadPtr, 335 M4OSA_FileWriterPointer *pOsaFileWritePtr) 336{ 337 if (pOsaFileReadPtr != M4OSA_NULL) 338 { 339 // Initialize the filereader function pointers. 340 pOsaFileReadPtr->openRead = M4OSA_fileReadOpen; 341 pOsaFileReadPtr->readData = M4OSA_fileReadData; 342 pOsaFileReadPtr->seek = M4OSA_fileReadSeek; 343 pOsaFileReadPtr->closeRead = M4OSA_fileReadClose; 344 pOsaFileReadPtr->setOption = M4OSA_fileReadSetOption; 345 pOsaFileReadPtr->getOption = M4OSA_fileReadGetOption; 346 } 347 348 if (pOsaFileWritePtr != M4OSA_NULL) 349 { 350 // Initialize the filewriter function pointers. 351 pOsaFileWritePtr->openWrite = M4OSA_fileWriteOpen; 352 pOsaFileWritePtr->writeData = M4OSA_fileWriteData; 353 pOsaFileWritePtr->seek = M4OSA_fileWriteSeek; 354 pOsaFileWritePtr->Flush = M4OSA_fileWriteFlush; 355 pOsaFileWritePtr->closeWrite = M4OSA_fileWriteClose; 356 pOsaFileWritePtr->setOption = M4OSA_fileWriteSetOption; 357 pOsaFileWritePtr->getOption = M4OSA_fileWriteGetOption; 358 } 359} 360 361