1309 udta->atomcontentsize = bufferSize; |
1309 udta->atomcontentsize = bufferSize; |
1310 } |
1310 } |
1311 |
1311 |
1312 return MP4_OK; |
1312 return MP4_OK; |
1313 } |
1313 } |
1314 |
1314 |
|
1315 |
1315 extern EXPORT_C MP4Err MP4SetCustomFileBufferSizes( MP4Handle apihandle, |
1316 extern EXPORT_C MP4Err MP4SetCustomFileBufferSizes( MP4Handle apihandle, |
1316 mp4_u32 mediaWriteBufferSize, |
1317 mp4_u32 mediaWriteBufferSize, |
1317 mp4_u32 writeBufferMaxCount, |
1318 mp4_u32 writeBufferMaxCount, |
1318 mp4_u32 readBufferSize ) |
1319 mp4_u32 readBufferSize ) |
1319 { |
1320 { |
1320 MP4HandleImp handle = (MP4HandleImp)apihandle; |
1321 MP4HandleImp handle = (MP4HandleImp)apihandle; |
1321 |
1322 |
1322 if (!handle) |
1323 if (!handle) |
1323 return MP4_ERROR; |
1324 return MP4_ERROR; |
1324 |
1325 |
1325 // Read Buffer size |
1326 // If no specific file size is given we try to use an 'optimal' buffer size. |
1326 if ( (readBufferSize) && |
1327 if (readBufferSize == 0) |
1327 (readBufferSize != handle->readBufferSize) ) |
1328 { |
|
1329 readBufferSize = RecommendedBufferSize(handle); |
|
1330 } |
|
1331 |
|
1332 if (readBufferSize > handle->readBufferSize) |
1328 { |
1333 { |
1329 handle->readBufferSize = readBufferSize; |
1334 handle->readBufferSize = readBufferSize; |
1330 if (handle->diskReadBuf) |
1335 if (handle->diskReadBuf) |
1331 { |
1336 { |
1332 mp4free(handle->diskReadBuf); |
1337 mp4free(handle->diskReadBuf); |
|
1338 handle->diskReadBuf = NULL; |
1333 if ((handle->diskReadBuf = (mp4_u8 *)mp4malloc(handle->readBufferSize)) == NULL) |
1339 if ((handle->diskReadBuf = (mp4_u8 *)mp4malloc(handle->readBufferSize)) == NULL) |
1334 { |
1340 { |
1335 return MP4_OUT_OF_MEMORY; |
1341 return MP4_OUT_OF_MEMORY; |
1336 } |
1342 } |
1337 } |
1343 } |