diff -r efebd1779a59 -r c1e808730d6c mmplugins/lib3gp/impl/src/mp4compose.cpp --- a/mmplugins/lib3gp/impl/src/mp4compose.cpp Fri Apr 16 16:34:49 2010 +0300 +++ b/mmplugins/lib3gp/impl/src/mp4compose.cpp Mon May 03 13:56:28 2010 +0300 @@ -1311,7 +1311,8 @@ return MP4_OK; } - + + extern EXPORT_C MP4Err MP4SetCustomFileBufferSizes( MP4Handle apihandle, mp4_u32 mediaWriteBufferSize, mp4_u32 writeBufferMaxCount, @@ -1322,14 +1323,19 @@ if (!handle) return MP4_ERROR; - // Read Buffer size - if ( (readBufferSize) && - (readBufferSize != handle->readBufferSize) ) + // If no specific file size is given we try to use an 'optimal' buffer size. + if (readBufferSize == 0) + { + readBufferSize = RecommendedBufferSize(handle); + } + + if (readBufferSize > handle->readBufferSize) { handle->readBufferSize = readBufferSize; if (handle->diskReadBuf) { mp4free(handle->diskReadBuf); + handle->diskReadBuf = NULL; if ((handle->diskReadBuf = (mp4_u8 *)mp4malloc(handle->readBufferSize)) == NULL) { return MP4_OUT_OF_MEMORY;