int mmfile_format_read_frame_ffmpg(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame);
int mmfile_format_read_tag_ffmpg(MMFileFormatContext *formatContext);
int mmfile_format_close_ffmpg(MMFileFormatContext *formatContext);
-static int getMimeType(int formatId, char *mimeType, int buf_size);
static int _mmf_mem_read(void *opaque, uint8_t *buf, int size);
static int64_t _mmf_mem_seek(void *opaque, int64_t pos, int whence);
av_register_all();
if (formatContext->filesrc->type == MM_FILE_SRC_TYPE_MEMORY) {
- if (getMimeType(formatContext->filesrc->memory.format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) {
+ if (mmfile_util_get_mimetype(formatContext->filesrc->memory.format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) {
debug_error(DEBUG, "error: Error in MIME Type finding\n");
return MMFILE_FORMAT_FAIL;
}
return ret_codecid;
}
-
-
-
-static int getMimeType(int formatId, char *mimeType, int buf_size)
-{
- int ret = 0; /*default: success*/
-
- switch (formatId) {
- case MM_FILE_FORMAT_3GP:
- case MM_FILE_FORMAT_MP4:
- snprintf(mimeType, buf_size, "video/3gpp");
- break;
- case MM_FILE_FORMAT_ASF:
- case MM_FILE_FORMAT_WMA:
- case MM_FILE_FORMAT_WMV:
- snprintf(mimeType, buf_size, "video/x-ms-asf");
- break;
- case MM_FILE_FORMAT_AVI:
- snprintf(mimeType, buf_size, "video/avi");
- break;
- case MM_FILE_FORMAT_OGG:
- snprintf(mimeType, buf_size, "video/ogg");
- break;
- case MM_FILE_FORMAT_REAL:
- snprintf(mimeType, buf_size, "video/vnd.rn-realmedia");
- break;
- case MM_FILE_FORMAT_AMR:
- snprintf(mimeType, buf_size, "audio/AMR");
- break;
- case MM_FILE_FORMAT_AAC:
- snprintf(mimeType, buf_size, "audio/aac");
- break;
- case MM_FILE_FORMAT_MP3:
- snprintf(mimeType, buf_size, "audio/mp3");
- break;
- case MM_FILE_FORMAT_AIFF:
- case MM_FILE_FORMAT_WAV:
- snprintf(mimeType, buf_size, "audio/wave");
- break;
- case MM_FILE_FORMAT_MID:
- snprintf(mimeType, buf_size, "audio/midi");
- break;
- case MM_FILE_FORMAT_MMF:
- snprintf(mimeType, buf_size, "audio/mmf");
- break;
- case MM_FILE_FORMAT_DIVX:
- snprintf(mimeType, buf_size, "video/divx");
- break;
- case MM_FILE_FORMAT_IMELODY:
- snprintf(mimeType, buf_size, "audio/iMelody");
- break;
- case MM_FILE_FORMAT_JPG:
- snprintf(mimeType, buf_size, "image/jpeg");
- break;
- case MM_FILE_FORMAT_AU:
- snprintf(mimeType, buf_size, "audio/basic");
- break;
- case MM_FILE_FORMAT_VOB:
- snprintf(mimeType, buf_size, "video/dvd");
- break;
- case MM_FILE_FORMAT_FLV:
- snprintf(mimeType, buf_size, "video/x-flv");
- break;
- case MM_FILE_FORMAT_QT:
- snprintf(mimeType, buf_size, "video/quicktime");
- break;
- case MM_FILE_FORMAT_MATROSKA:
- snprintf(mimeType, buf_size, "video/x-matroska");
- break;
- case MM_FILE_FORMAT_FLAC:
- snprintf(mimeType, buf_size, "audio/x-flac");
- break;
- case MM_FILE_FORMAT_M2TS:
- snprintf(mimeType, buf_size, "video/MP2T");
- break;
- case MM_FILE_FORMAT_M2PS:
- snprintf(mimeType, buf_size, "video/MP2P");
- break;
- case MM_FILE_FORMAT_M1AUDIO:
- snprintf(mimeType, buf_size, "audio/x-mpegaudio");
- break;
- case MM_FILE_FORMAT_M1VIDEO:
- snprintf(mimeType, buf_size, "video/mpeg");
- break;
- default:
- ret = -1;
- }
-
- debug_msg(RELEASE, "id: %d, mimetype: %s\n", formatId, mimeType);
-
- return ret;
-}
-
-
return tmp_offset;
}
-static int __getMimeType(int formatId, char *mimeType, int buf_size)
-{
- int ret = 0; /*default: success*/
-
- switch (formatId) {
- case MM_FILE_FORMAT_3GP:
- case MM_FILE_FORMAT_MP4:
- snprintf(mimeType, buf_size, "video/3gpp");
- break;
- case MM_FILE_FORMAT_ASF:
- case MM_FILE_FORMAT_WMA:
- case MM_FILE_FORMAT_WMV:
- snprintf(mimeType, buf_size, "video/x-ms-asf");
- break;
- case MM_FILE_FORMAT_AVI:
- snprintf(mimeType, buf_size, "video/avi");
- break;
- case MM_FILE_FORMAT_OGG:
- snprintf(mimeType, buf_size, "video/ogg");
- break;
- case MM_FILE_FORMAT_REAL:
- snprintf(mimeType, buf_size, "video/vnd.rn-realmedia");
- break;
- case MM_FILE_FORMAT_AMR:
- snprintf(mimeType, buf_size, "audio/AMR");
- break;
- case MM_FILE_FORMAT_AAC:
- snprintf(mimeType, buf_size, "audio/aac");
- break;
- case MM_FILE_FORMAT_MP3:
- snprintf(mimeType, buf_size, "audio/mp3");
- break;
- case MM_FILE_FORMAT_AIFF:
- case MM_FILE_FORMAT_WAV:
- snprintf(mimeType, buf_size, "audio/wave");
- break;
- case MM_FILE_FORMAT_MID:
- snprintf(mimeType, buf_size, "audio/midi");
- break;
- case MM_FILE_FORMAT_MMF:
- snprintf(mimeType, buf_size, "audio/mmf");
- break;
- case MM_FILE_FORMAT_DIVX:
- snprintf(mimeType, buf_size, "video/divx");
- break;
- case MM_FILE_FORMAT_IMELODY:
- snprintf(mimeType, buf_size, "audio/iMelody");
- break;
- case MM_FILE_FORMAT_JPG:
- snprintf(mimeType, buf_size, "image/jpeg");
- break;
- case MM_FILE_FORMAT_AU:
- snprintf(mimeType, buf_size, "audio/basic");
- break;
- case MM_FILE_FORMAT_VOB:
- snprintf(mimeType, buf_size, "video/dvd");
- break;
- case MM_FILE_FORMAT_FLV:
- snprintf(mimeType, buf_size, "video/x-flv");
- break;
- case MM_FILE_FORMAT_QT:
- snprintf(mimeType, buf_size, "video/quicktime");
- break;
- case MM_FILE_FORMAT_MATROSKA:
- snprintf(mimeType, buf_size, "video/x-matroska");
- break;
- case MM_FILE_FORMAT_FLAC:
- snprintf(mimeType, buf_size, "audio/x-flac");
- break;
- case MM_FILE_FORMAT_M2TS:
- snprintf(mimeType, buf_size, "video/MP2T");
- break;
- case MM_FILE_FORMAT_M2PS:
- snprintf(mimeType, buf_size, "video/MP2P");
- break;
- case MM_FILE_FORMAT_M1VIDEO:
- snprintf(mimeType, buf_size, "video/mpeg");
- break;
- case MM_FILE_FORMAT_M1AUDIO:
- snprintf(mimeType, buf_size, "audio/x-mpegaudio");
- break;
- default:
- ret = -1;
- break;
- }
-
- debug_msg(RELEASE, "id: %d, mimetype: %s\n", formatId, mimeType);
-
- return ret;
-}
-
extern const struct {
int (*Open)(MMFileFormatContext *fileContext);
int (*Valid)(MMFileIOHandle *pFileIO, const char *mmfileuri, int mp3FrameCnt);
return MMFILE_FORMAT_FAIL;
}
- if (__getMimeType(format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) {
+ if (mmfile_util_get_mimetype(format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) {
debug_error(DEBUG, "error: Error in MIME Type finding\n");
return MMFILE_FORMAT_FAIL;
}
#define MMFILE_FILE_EXT_MAX_LEN 7
int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat);
+int mmfile_util_get_mimetype(int formatId, char *mimeType, int buf_size);
/*////////////////////////////////////////////////////////////////////// */
{"video/mpeg", "mpegvideo", "mpeg"}, /*mpeg 1 video */
};
-
EXPORT_API
int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat)
{
return MMFILE_UTIL_SUCCESS;
}
+typedef struct {
+ int format;
+ char mimetype[MMFILE_MIMETYPE_MAX_LEN];
+} _mm_file_format_mime_type_s;
+
+const _mm_file_format_mime_type_s _mm_file_format_mimetype_table[] = {
+ { MM_FILE_FORMAT_3GP, "video/3gpp"},
+ { MM_FILE_FORMAT_MP4, "video/3gpp"},
+ { MM_FILE_FORMAT_ASF, "video/x-ms-asf"},
+ { MM_FILE_FORMAT_WMA, "video/x-ms-asf"},
+ { MM_FILE_FORMAT_WMV, "video/x-ms-asf"},
+ { MM_FILE_FORMAT_AVI, "video/avi"},
+ { MM_FILE_FORMAT_OGG, "video/ogg"},
+ { MM_FILE_FORMAT_REAL, "video/vnd.rn-realmedia"},
+ { MM_FILE_FORMAT_AMR, "audio/AMR"},
+ { MM_FILE_FORMAT_AAC, "audio/aac"},
+ { MM_FILE_FORMAT_MP3, "audio/mp3"},
+ { MM_FILE_FORMAT_AIFF, "audio/wave"},
+ { MM_FILE_FORMAT_WAV, "audio/wave"},
+ { MM_FILE_FORMAT_MID, "audio/midi"},
+ { MM_FILE_FORMAT_MMF, "audio/mmf"},
+ { MM_FILE_FORMAT_DIVX, "video/divx"},
+ { MM_FILE_FORMAT_IMELODY, "audio/iMelody"},
+ { MM_FILE_FORMAT_JPG, "image/jpeg"},
+ { MM_FILE_FORMAT_AU, "audio/basic"},
+ { MM_FILE_FORMAT_VOB, "video/dvd"},
+ { MM_FILE_FORMAT_FLV, "video/x-flv"},
+ { MM_FILE_FORMAT_QT, "video/quicktime"},
+ { MM_FILE_FORMAT_MATROSKA, "video/x-matroska"},
+ { MM_FILE_FORMAT_FLAC, "audio/x-flac"},
+ { MM_FILE_FORMAT_M2TS, "video/MP2T"},
+ { MM_FILE_FORMAT_M2PS, "video/MP2P"},
+ { MM_FILE_FORMAT_M1AUDIO, "audio/x-mpegaudio"},
+ { MM_FILE_FORMAT_M1VIDEO, "video/mpeg"},
+};
+
+int mmfile_util_get_mimetype(int formatId, char *mimeType, int buf_size)
+{
+ int i = 0;
+ int table_size = sizeof(_mm_file_format_mimetype_table) / sizeof(_mm_file_format_mime_type_s);
+
+ if (!mimeType) {
+ debug_error(DEBUG, "invalid mimeType\n");
+ return MMFILE_UTIL_FAIL;
+ }
+
+ for (i = 0; i < table_size; i++) {
+ if (_mm_file_format_mimetype_table[i].format == formatId) {
+ snprintf(mimeType, buf_size, "%s", _mm_file_format_mimetype_table[i].mimetype);
+ debug_msg(RELEASE, "id: %d, mimetype: %s\n", formatId, mimeType);
+ return MMFILE_UTIL_SUCCESS;
+ }
+ }
+ debug_error(RELEASE, "id: %d, mimetype: %s\n", formatId, mimeType);
+
+ return MMFILE_UTIL_FAIL;
+}