Merge get_mime_type into get_format 26/251026/4
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 7 Jan 2021 04:10:40 +0000 (13:10 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 7 Jan 2021 07:58:28 +0000 (16:58 +0900)
Change-Id: I268030db389d9410c3cab7a09be65ac9814c7fe7
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
formats/ffmpeg/mm_file_format_ffmpeg.c
formats/ffmpeg/mm_file_format_frame.c
utils/include/mm_file_utils.h
utils/mm_file_util_locale.c
utils/mm_file_util_mime.c

index c775a30..fe28c7e 100644 (file)
@@ -298,7 +298,6 @@ int mmfile_format_open_ffmpg(MMFileFormatContext *formatContext)
        AVFormatContext     *pFormatCtx = NULL;
        AVInputFormat       *grab_iformat = NULL;
        char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0, };
-       char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0, };
        AVIOContext          *pIOCtx = NULL;
        MMFmemIOHandle *handle = NULL;
        uint8_t *avio_ctx_buffer = NULL;
@@ -326,12 +325,7 @@ int mmfile_format_open_ffmpg(MMFileFormatContext *formatContext)
 #endif
 
        if (formatContext->filesrc->type  == MM_FILE_SRC_TYPE_MEMORY) {
-               if (mmfile_util_get_mimetype(formatContext->filesrc->memory.format, mimeType, MMFILE_MIMETYPE_MAX_LEN) != MMFILE_UTIL_SUCCESS) {
-                       debug_error(DEBUG, "error: Error in MIME Type finding");
-                       return MMFILE_FORMAT_FAIL;
-               }
-
-               if (mmfile_util_get_ffmpeg_format(mimeType, ffmpegFormatName) != MMFILE_UTIL_SUCCESS) {
+               if (mmfile_util_get_ffmpeg_format(formatContext->filesrc->memory.format, ffmpegFormatName) != MMFILE_UTIL_SUCCESS) {
                        debug_error(DEBUG, "error: mmfile_util_get_ffmpeg_format");
                        return MMFILE_FORMAT_FAIL;
                }
index cc94bfe..5b4517c 100755 (executable)
@@ -533,7 +533,6 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize,
 {
        int ret = MMFILE_FORMAT_SUCCESS;
        int format = -1;
-       char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0, };
        char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0, };
        char *urifilename = NULL;
        AVFormatContext *pFormatCtx = NULL;
@@ -551,8 +550,7 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize,
        mmfile_register_io_all();
 
        mm_file_retvm_if_fails(DEBUG, __get_fileformat(urifilename, &format), MMFILE_FORMAT_FAIL);
-       mm_file_retvm_if_fails(DEBUG, mmfile_util_get_mimetype(format, mimeType, MMFILE_MIMETYPE_MAX_LEN) == MMFILE_UTIL_SUCCESS, MMFILE_FORMAT_FAIL);
-       mm_file_retvm_if_fails(DEBUG, mmfile_util_get_ffmpeg_format(mimeType, ffmpegFormatName) == MMFILE_UTIL_SUCCESS, MMFILE_FORMAT_FAIL);
+       mm_file_retvm_if_fails(DEBUG, mmfile_util_get_ffmpeg_format(format, ffmpegFormatName) == MMFILE_UTIL_SUCCESS, MMFILE_FORMAT_FAIL);
 
        grab_iformat = av_find_input_format(ffmpegFormatName);
        mm_file_retvm_if_fails(DEBUG, grab_iformat, MMFILE_FORMAT_FAIL);
index 280a43b..0338283 100755 (executable)
@@ -154,12 +154,8 @@ int                        mmfile_close(MMFileIOHandle *h);
 /*                            MIME  API                               // */
 /*////////////////////////////////////////////////////////////////////// */
 #define MMFILE_FILE_FMT_MAX_LEN 25
-#define MMFILE_MIMETYPE_MAX_LEN 40
-#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);
 
+int mmfile_util_get_ffmpeg_format(int formatId, char *ffmpegFormat);
 
 /*////////////////////////////////////////////////////////////////////// */
 /*                            PRINT API                               // */
index 6cb3ee1..e491ced 100755 (executable)
@@ -19,8 +19,6 @@
  *
  */
 
-#include <stdlib.h>
-#include <string.h>
 #include <vconf.h>
 
 #include "mm_file_debug.h"
index 585362f..f32be1f 100644 (file)
  *
  */
 
-#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;
-}