blob: 035f59a4799fdc06c21c2fcd6ddcbba142fb903e [file] [log] [blame]
Dharmaray Kundargicd196d32011-01-16 15:47:16 -08001/*
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 ),
Santosh Madhava895a28e2011-03-04 18:37:51 -0800210 VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_FILE_DRM_PROTECTED ),
Dharmaray Kundargicd196d32011-01-16 15:47:16 -0800211
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_malloc(size, 0, (M4OSA_Char*)pDescription);
280 if (M4OSA_NULL != pData)
281 {
282 // Reset the allocated memory.
283 M4OSA_memset((M4OSA_MemAddr8)pData, size, 0);
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", "M4OSA_free()");
318
319 // Free the memory.
320 M4OSA_free((M4OSA_MemAddr32)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