/* Initialize the members of handle */
_aac_init_handle(privateData);
- mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_END);
- privateData->streamInfo.fileSize = mmfile_tell(privateData->hFile);
-
- mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_SET);
+ privateData->streamInfo.fileSize = mmfile_get_size(privateData->hFile);
+ if (privateData->streamInfo.fileSize <= 0) {
+ debug_error(RELEASE, "file source is too small\n");
+ goto exception;
+ }
/* Search the existance of ID3 tag */
ret = _search_id3tag(privateData);
goto exception;
}
- mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_END);
- privateData->fileSize = mmfile_tell(privateData->hFile);
- mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_SET);
-
+ privateData->fileSize = mmfile_get_size(privateData->hFile);
if (privateData->fileSize < MMFILE_AMR_MIN_HEADER_SIZE) {
debug_error(DEBUG, "Too small file to parse!!\n");
goto exception;
return MMFILE_FORMAT_FAIL;
}
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
-
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_IMY_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");
ret = MMFILE_FORMAT_FAIL;
}
/*get file size*/
- mmfile_seek(fp, 0L, MMFILE_SEEK_END);
- src_size = mmfile_tell(fp);
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
+ src_size = mmfile_get_size(fp);
if (src_size <= 0) {
debug_error(DEBUG, "failed to get file size.\n");
goto failed;
}
/*get file size*/
- mmfile_seek(hFile, 0L, MMFILE_SEEK_END);
- dFileSize = mmfile_tell(hFile);
- mmfile_seek(hFile, 0L, MMFILE_SEEK_SET);
-
+ dFileSize = mmfile_get_size(hFile);
if (dFileSize <= 0) {
debug_error(DEBUG, "failed to get file size.\n");
goto _RELEASE_RESOURCE;
}
/*get file size*/
- mmfile_seek(fp, 0L, MMFILE_SEEK_END);
- src_size = mmfile_tell(fp);
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
+ src_size = mmfile_get_size(fp);
if (src_size <= 0) {
debug_error(DEBUG, "failed to get file size.\n");
ret_msec = -1;
return true;
}
-
-static bool __AvGetFileSize(MMFileIOHandle *hFile, long long *file_size)
-{
- long long fileLen = 0;
-
- mmfile_seek(hFile, 0L, SEEK_END);
- fileLen = mmfile_tell(hFile);
- if (fileLen <= 0) {
- debug_error(DEBUG, "file is too small.\n");
- return false;
- }
- mmfile_seek(hFile, 0L, SEEK_SET);
-
- *file_size = fileLen;
-
- return true;
-}
-
static bool __AvGetID3v1Header(unsigned char *buf, size_t buf_size, int *offset)
{
unsigned char TagV1ID[4] = { 0x54, 0x41, 0x47}; /* TAG */
return MMFILE_FORMAT_FAIL;
}
- if (!__AvGetFileSize(hFile, &pInfo->fileLen)) {
+ pInfo->fileLen = mmfile_get_size(hFile);
+ if (pInfo->fileLen <= 0) {
debug_error(DEBUG, "file is too small.\n");
goto EXCEPTION;
}
return MMFILE_FORMAT_FAIL;
}
- if (!__AvGetFileSize(hFile, &pInfo->fileLen)) {
+ pInfo->fileLen = mmfile_get_size(hFile);
+ if (pInfo->fileLen <= 0) {
debug_error(DEBUG, "file is too small.\n");
goto EXCEPTION;
}
goto exception;
}
- ret = mmfile_seek(privateData->fp, 0, MMFILE_SEEK_END);
- if (MMFILE_UTIL_FAIL == ret) {
- debug_error(DEBUG, "mmfile_seek\n");
+ privateData->filesize = mmfile_get_size(privateData->fp);
+ if (privateData->filesize <= 0) {
+ debug_error(DEBUG, "mmfile_get_size: too small\n");
ret = MMFILE_TAGS_FAIL;
goto exception;
}
-
- privateData->filesize = mmfile_tell(privateData->fp);
-
- mmfile_seek(privateData->fp, 0, MMFILE_SEEK_SET);
-
privateData->startOffset = 0;
privateData->endOffset = privateData->filesize;
/* Get file size. because sometimes waveinfo->size is wrong */
ret = mmfile_open(&fp, formatContext->uriFileName, MMFILE_RDONLY);
if (fp) {
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
mmfile_close(fp);
}
/*get file size*/
- mmfile_seek(fp, 0L, MMFILE_SEEK_END);
- src_size = mmfile_tell(fp);
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
+ src_size = mmfile_get_size(fp);
if (src_size < MMF_FILE_WAVE_HEADER_LEN) {
debug_error(DEBUG, "header is too small.\n");
goto failed;
int mmfile_write(MMFileIOHandle *h, unsigned char *buf, int size);
int64_t mmfile_seek(MMFileIOHandle *h, int64_t pos, int whence);
long long mmfile_tell(MMFileIOHandle *h);
+long long mmfile_get_size(MMFileIOHandle *h);
int mmfile_close(MMFileIOHandle *h);
}
EXPORT_API
+long long mmfile_get_size(MMFileIOHandle *handle)
+{
+ long long filesize = 0;
+ long long cur_pos = 0;
+
+ cur_pos = mmfile_tell(handle);
+ if (cur_pos < 0)
+ return MMFILE_IO_FAILED;
+
+ if (mmfile_seek(handle, 0L, MMFILE_SEEK_SET) < 0)
+ return MMFILE_IO_FAILED;
+
+ if (mmfile_seek(handle, 0L, MMFILE_SEEK_END) < 0)
+ return MMFILE_IO_FAILED;
+
+ filesize = mmfile_tell(handle);
+
+ if (mmfile_seek(handle, cur_pos, MMFILE_SEEK_SET) < 0)
+ debug_error(DEBUG, "failed to restore current position");
+
+ return filesize;
+}
+
+EXPORT_API
int mmfile_close(MMFileIOHandle *handle)
{
int ret = 0;
}
}
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
- mmfile_seek(fp, 0L, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_MP3_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");
}
}
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
- /* Initialize the members of handle */
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_AAC_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");
}
}
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
- /* Initialize the members of handle */
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_OGG_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");
}
}
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
- /* Initialize the members of handle */
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_MIDI_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");
}
}
- mmfile_seek(fp, 0L, MMFILE_SEEK_SET);
-
- /* Initialize the members of handle */
- mmfile_seek(fp, 0, MMFILE_SEEK_END);
- filesize = mmfile_tell(fp);
- mmfile_seek(fp, 0, MMFILE_SEEK_SET);
+ filesize = mmfile_get_size(fp);
if (filesize < _MMFILE_MP4_HEADER_LENGTH) {
debug_error(DEBUG, "header is too small.\n");