*
*/
-#include <stdlib.h>
-#include <string.h>
#include "mm_file_debug.h"
#include "mm_file_utils.h"
-typedef struct _mmfileavmimetype {
- char mimetype[MMFILE_MIMETYPE_MAX_LEN];
- char ffmpegFormat[MMFILE_FILE_FMT_MAX_LEN];
- char extension[MMFILE_FILE_EXT_MAX_LEN];
-} MMFileAVMimeType;
-
-static const MMFileAVMimeType MMFILE_FFMPEG_MIME_TABLE[] = {
- {"audio/mpeg", "mp3", "mp3"},
- {"audio/mp3", "mp3", "mp3"},
- {"audio/mpg3", "mp3", "mp3"},
- {"audio/mpeg3", "mp3", "mp3"},
- {"audio/mpg", "mp3", "mp3"},
- {"audio/x-mpeg", "mp3", "mp3"},
- {"audio/x-mp3", "mp3", "mp3"},
- {"audio/x-mpeg3", "mp3", "mp3"},
- {"audio/x-mpg", "mp3", "mp3"},
- {"audio/x-mpegaudio", "mp3", "mp3"}, /*10 */
-
- {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"},
- {"video/h263", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"},
- {"video/3gp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"},
- {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"},
- {"video/mp4v-es", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"video/dvd", "mov,mp4,m4a,3gp,3g2,mj2", "mpeg"},
- {"audio/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, /*17 */
-
- {"video/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"video/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"video/x-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"video/x-pv-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"audio/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"audio/MP4A-LATM", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"audio/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"},
- {"audio/m4a", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, /*25 */
- {"video/quicktime", "mov,mp4,m4a,3gp,3g2,mj2", "mov"},
-
- {"video/avi", "avi", "avi"},
- {"video/divx", "divx", "divx"},
-
- {"audio/x-ms-asf", "asf", "asf"},
- {"video/x-ms-asf", "asf", "asf"},
- {"video/x-ms-asf", "asf", "asf"},
-
- {"video/x-ms-wmv", "asf", "wmv"},
- {"audio/wma", "asf", "wma"},
- {"audio/x-ms-wma", "asf", "wma"},
-
- {"audio/wave", "wav", "wav"}, /* Not Sure */
- {"audio/wav", "wav", "wav"}, /* Not Sure */
- {"audio/x-wave", "wav", "wav"}, /* Not Sure */
- {"audio/x-wav", "wav", "wav"}, /* Not Sure */
-
- {"audio/aac", "aac", "aac"}, /* Not Sure */
- {"audio/g72", "aac", "aac"}, /* Not Sure */ /*39 */
-
- {"audio/AMR", "amr", "amr"}, /* Not Sure */
- {"audio/amr-wb", "amr", "amr"}, /* Not Sure */
- {"audio/x-amr", "amr", "amr"}, /* Not Sure */
-
- {"audio/x-mid", "mid", "mid"}, /* Not Sure */
- {"audio/x-midi", "mid", "mid"}, /* Not Sure */
- {"audio/mid", "mid", "mid"}, /* Not Sure */
- {"audio/midi", "mid", "mid"}, /* Not Sure */
- {"audio/mid", "mid", "mid"}, /* Not Sure */ /*47 */
-
- {"audio/iMelody", "imy", "imy"}, /* Not Sure */
- {"audio/imelody", "imy", "imy"}, /* Not Sure */
- {"audio/melody", "imy", "imy"}, /* Not Sure */
- {"audio/imy", "imy", "imy"}, /* Not Sure */
- {"audio/x-iMelody", "imy", "imy"}, /* Not Sure */
-
- {"audio/basic", "snd", ""}, /* Not Sure */
- {"audio/pmd", "pmd", ""}, /* Not Sure */
- {"audio/sp-midi", "smp", ""}, /* Not Sure */ /*55 */
-
- {"audio/mmf", "mmf", "mmf"}, /* Not Sure */
- {"audio/smaf", "mmf", "mmf"}, /* Not Sure */
- {"audio/x-mmf", "mmf", "mmf"}, /* Not Sure */
- {"audio/x-smaf", "mmf", "mmf"}, /* Not Sure */
-
- {"audio/xmf", "xmf", "xmf"}, /* Not Sure */
- {"audio/mobile-xmf", "xmf", "xmf"}, /* Not Sure */
- {"audio/x-xmf", "xmf", "xmf"}, /* Not Sure */ /*62 */
-
- {"audio/vnd.rn-realaudio", "rm", ""}, /* Not Sure */
- {"audio/x-pn-multirate-realaudio", "rm", ""}, /* Not Sure */
- {"audio/x-pn-multirate-realaudio-live", "rm", ""}, /* Not Sure */
- {"video/vnd.rn-realvideo", "rm", ""}, /* Not Sure */
- {"video/vnd.rn-realmedia", "rm", ""}, /* Not Sure */
- {"video/x-pn-multirate-realvideo", "rm", ""}, /* Not Sure */ /*68 */
-
- {"video/ogg", "ogg", "ogg"},
- {"video/theora", "ogg", "ogg"},
- {"audio/ogg", "ogg", "ogg"},
- {"audio/x-ogg", "ogg", "ogg"},
- {"audio/vorbis", "ogg", "ogg"}, /*73 */
-
- {"audio/x-flac", "flac", "flac"}, /*74 */
- {"video/x-flv", "flv", "flv"}, /*75 */
- {"video/MP2T", "mpegts", "ts"},
- {"video/MP2P", "mpeg", "mpg"},
- {"video/mpeg", "mpegvideo", "mpeg"}, /*mpeg 1 video */
- {"video/x-matroska", "matroska,webm", "mkv"}, /*mpeg 1 video */
+static const char * _mm_file_format_table[MM_FILE_FORMAT_NUM] = {
+ [MM_FILE_FORMAT_3GP] = "mov,mp4,m4a,3gp,3g2,mj2",
+ [MM_FILE_FORMAT_ASF] = "asf",
+ [MM_FILE_FORMAT_AVI] = "avi",
+ [MM_FILE_FORMAT_MATROSKA] = "matroska,webm",
+ [MM_FILE_FORMAT_MP4] = "mov,mp4,m4a,3gp,3g2,mj2",
+ [MM_FILE_FORMAT_OGG] = "ogg",
+ [MM_FILE_FORMAT_QT] = "mov,mp4,m4a,3gp,3g2,mj2",
+ [MM_FILE_FORMAT_REAL] = "rm",
+ [MM_FILE_FORMAT_AMR] = "amr",
+ [MM_FILE_FORMAT_AAC] = "aac",
+ [MM_FILE_FORMAT_MP3] = "mp3",
+ [MM_FILE_FORMAT_AIFF] = "wav",
+ [MM_FILE_FORMAT_AU] = "snd",
+ [MM_FILE_FORMAT_WAV] = "wav",
+ [MM_FILE_FORMAT_MID] = "mid",
+ [MM_FILE_FORMAT_MMF] = "mmf",
+ [MM_FILE_FORMAT_DIVX] = "divx",
+ [MM_FILE_FORMAT_FLV] = "flv",
+ [MM_FILE_FORMAT_VOB] = "mov,mp4,m4a,3gp,3g2,mj2",
+ [MM_FILE_FORMAT_IMELODY] = "imy",
+ [MM_FILE_FORMAT_WMA] = "asf",
+ [MM_FILE_FORMAT_WMV] = "asf",
+ [MM_FILE_FORMAT_FLAC] = "flac",
+ [MM_FILE_FORMAT_M2TS] = "mpegts",
+ [MM_FILE_FORMAT_M2PS] = "mpeg",
+ [MM_FILE_FORMAT_M1VIDEO] = "mpegvideo",
+ [MM_FILE_FORMAT_M1AUDIO] = "mp3",
};
-
-int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat)
+int mmfile_util_get_ffmpeg_format(int formatId, char *ffmpegFormat)
{
- int i = 0;
- int table_size = sizeof(MMFILE_FFMPEG_MIME_TABLE) / sizeof(MMFileAVMimeType);
+ mm_file_retvm_if_fails(DEBUG, formatId >= 0 && formatId < MM_FILE_FORMAT_NUM, MMFILE_UTIL_FAIL);
- if (NULL == mime || NULL == ffmpegFormat) {
- debug_error(DEBUG, "error: mmfile_util_get_format\n");
+ if (!_mm_file_format_table[formatId]) {
+ debug_error(DEBUG, "Unsupported format id[%d]", formatId);
return MMFILE_UTIL_FAIL;
}
- for (i = 0; i < table_size; i++) {
- if (!g_ascii_strcasecmp(MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) {
- break;
- }
- }
-
- if (i == table_size) {
- debug_error(DEBUG, "error: not found[%s]\n", mime);
- return MMFILE_UTIL_FAIL;
- }
-
- memcpy(ffmpegFormat, MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat, strlen(MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat));
+ g_snprintf(ffmpegFormat, MMFILE_FILE_FMT_MAX_LEN, "%s", _mm_file_format_table[formatId]);
+ debug_msg(RELEASE, "format id[%d] ffmpeg Format[%s]", formatId, ffmpegFormat);
return MMFILE_UTIL_SUCCESS;
}
-
-typedef struct {
- int format;
- char mimetype[MMFILE_MIMETYPE_MAX_LEN];
-} _mm_file_format_mime_type_s;
-
-static 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;
-}