#define MEDIA_SVC_FILE_EXT_LEN_MAX 6 /**< Maximum file ext lenth*/
-/* Define data structures for media type and mime type */
-#define MEDIA_SVC_CATEGORY_UNKNOWN 0x00000000 /**< Default */
-#define MEDIA_SVC_CATEGORY_ETC 0x00000001 /**< ETC category */
-#define MEDIA_SVC_CATEGORY_IMAGE 0x00000002 /**< Image category */
-#define MEDIA_SVC_CATEGORY_VIDEO 0x00000004 /**< Video category */
-#define MEDIA_SVC_CATEGORY_MUSIC 0x00000008 /**< Music category */
-#define MEDIA_SVC_CATEGORY_SOUND 0x00000010 /**< Sound category */
-#define MEDIA_SVC_CATEGORY_PVR 0x00000020 /**< PVR category */
-#define MEDIA_SVC_CATEGORY_UHD 0x00000040 /**< UHD category */
-#define MEDIA_SVC_CATEGORY_SCSA 0x00000080 /**< SCSA category */
-#define MEDIA_SVC_CATEGORY_BOOK 0x00000100 /**< ebook category */
-
#define CONTENT_TYPE_NUM 5
#define MUSIC_MIME_NUM 29
#define SOUND_MIME_NUM 1
typedef struct {
char content_type[15];
- int category_by_mime;
+ media_svc_media_type_e media_type;
} _media_svc_content_table_s;
enum Exif_Orientation {
};
static const _media_svc_content_table_s content_category[CONTENT_TYPE_NUM] = {
- {"audio", MEDIA_SVC_CATEGORY_SOUND},
- {"image", MEDIA_SVC_CATEGORY_IMAGE},
- {"video", MEDIA_SVC_CATEGORY_VIDEO},
- {"application", MEDIA_SVC_CATEGORY_ETC},
- {"text", MEDIA_SVC_CATEGORY_ETC},
+ {"audio", MEDIA_SVC_MEDIA_TYPE_SOUND},
+ {"image", MEDIA_SVC_MEDIA_TYPE_IMAGE},
+ {"video", MEDIA_SVC_MEDIA_TYPE_VIDEO},
+ {"application", MEDIA_SVC_MEDIA_TYPE_OTHER},
+ {"text", MEDIA_SVC_MEDIA_TYPE_OTHER},
};
static const char music_mime_table[MUSIC_MIME_NUM][MIME_LENGTH] = {
return 0;
}
-static int __media_svc_get_content_type_from_mime(const char *path, const char *mimetype, int *category)
+static int __media_svc_get_media_type(const char *path, const char *mime_type, media_svc_media_type_e *media_type)
{
int idx = 0;
- media_svc_retvm_if(path == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "path is null");
- media_svc_retvm_if(mimetype == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "mimetype is null");
- media_svc_retvm_if(category == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "category is null");
+ media_svc_retvm_if(!path, MS_MEDIA_ERR_INVALID_PARAMETER, "path is null");
+ media_svc_retvm_if(!mime_type, MS_MEDIA_ERR_INVALID_PARAMETER, "mime_type is null");
+ media_svc_retvm_if(!media_type, MS_MEDIA_ERR_INVALID_PARAMETER, "media_type is null");
- *category = MEDIA_SVC_CATEGORY_UNKNOWN;
+ *media_type = MEDIA_SVC_MEDIA_TYPE_OTHER;
- /*categorize from mimetype */
+ /*categorize from mime_type */
for (idx = 0; idx < CONTENT_TYPE_NUM; idx++) {
- if (strncmp(mimetype, content_category[idx].content_type, strlen(content_category[idx].content_type)) == 0) {
- *category = (*category | content_category[idx].category_by_mime);
+ if (strncmp(mime_type, content_category[idx].content_type, strlen(content_category[idx].content_type)) == 0) {
+ *media_type = content_category[idx].media_type;
break;
}
}
/*in application type, exitst sound file ex) x-smafs, asf */
- if (*category & MEDIA_SVC_CATEGORY_ETC) {
+ if (*media_type == MEDIA_SVC_MEDIA_TYPE_OTHER) {
int prefix_len = strlen(content_category[3].content_type) + 1;
char *ext = NULL;
for (idx = 0; idx < SOUND_MIME_NUM; idx++) {
- if (strstr(mimetype + prefix_len, sound_mime_table[idx]) != NULL) {
- *category ^= MEDIA_SVC_CATEGORY_ETC;
- *category |= MEDIA_SVC_CATEGORY_SOUND;
+ if (strstr(mime_type + prefix_len, sound_mime_table[idx]) != NULL) {
+ *media_type = MEDIA_SVC_MEDIA_TYPE_SOUND;
break;
}
}
- if (strncasecmp(mimetype, "text/x-iMelody", strlen("text/x-iMelody")) == 0) {
- *category ^= MEDIA_SVC_CATEGORY_ETC;
- *category |= MEDIA_SVC_CATEGORY_SOUND;
- }
+ if (strncasecmp(mime_type, "text/x-iMelody", strlen("text/x-iMelody")) == 0)
+ *media_type = MEDIA_SVC_MEDIA_TYPE_SOUND;
/*"asf" must check video stream and then categorize in directly. */
ext = strrchr(path, '.');
err = mm_file_get_stream_info(path, &audio, &video);
if (err == 0) {
- if (audio > 0 && video == 0) {
- *category ^= MEDIA_SVC_CATEGORY_ETC;
- *category |= MEDIA_SVC_CATEGORY_MUSIC;
- } else {
- *category ^= MEDIA_SVC_CATEGORY_ETC;
- *category |= MEDIA_SVC_CATEGORY_VIDEO;
- }
+ if (audio > 0 && video == 0)
+ *media_type = MEDIA_SVC_MEDIA_TYPE_MUSIC;
+ else
+ *media_type = MEDIA_SVC_MEDIA_TYPE_VIDEO;
}
}
}
- if (g_str_has_suffix(mimetype, "epub+zip") || g_str_has_suffix(mimetype, "pdf")) {
- *category ^= MEDIA_SVC_CATEGORY_ETC;
- *category |= MEDIA_SVC_CATEGORY_BOOK;
- }
+ if (g_str_has_suffix(mime_type, "epub+zip") || g_str_has_suffix(mime_type, "pdf"))
+ *media_type = MEDIA_SVC_MEDIA_TYPE_BOOK;
}
/*check music file in sound files. */
- if (*category & MEDIA_SVC_CATEGORY_SOUND) {
+ if (*media_type == MEDIA_SVC_MEDIA_TYPE_SOUND) {
int prefix_len = strlen(content_category[0].content_type) + 1;
for (idx = 0; idx < MUSIC_MIME_NUM; idx++) {
- if (strcmp(mimetype + prefix_len, music_mime_table[idx]) == 0) {
- *category ^= MEDIA_SVC_CATEGORY_SOUND;
- *category |= MEDIA_SVC_CATEGORY_MUSIC;
+ if (strcmp(mime_type + prefix_len, music_mime_table[idx]) == 0) {
+ *media_type = MEDIA_SVC_MEDIA_TYPE_MUSIC;
break;
}
}
/*m3u file is playlist but mime type is "audio/x-mpegurl". but It has to be classified into MS_CATEGORY_ETC since playlist is not a sound track*/
- if (strncasecmp(mimetype, "audio/x-mpegurl", strlen("audio/x-mpegurl")) == 0) {
- *category ^= MEDIA_SVC_CATEGORY_SOUND;
- *category |= MEDIA_SVC_CATEGORY_ETC;
- }
- } else if (*category & MEDIA_SVC_CATEGORY_VIDEO) {
+ if (strncasecmp(mime_type, "audio/x-mpegurl", strlen("audio/x-mpegurl")) == 0)
+ *media_type = MEDIA_SVC_MEDIA_TYPE_OTHER;
+
+ } else if (*media_type == MEDIA_SVC_VIDEO_VIDEO) {
/*some video files don't have video stream. in this case it is categorize as music. */
char *ext = NULL;
/*"3gp" and "mp4" must check video stream and then categorize in directly. */
err = mm_file_get_stream_info(path, &audio, &video);
if (err == 0) {
if (audio > 0 && video == 0) {
- *category ^= MEDIA_SVC_CATEGORY_VIDEO;
- *category |= MEDIA_SVC_CATEGORY_MUSIC;
+ *media_type = MEDIA_SVC_MEDIA_TYPE_MUSIC;
}
}
- /*even though error occued in mm_file_get_stream_info return MS_MEDIA_ERR_NONE. fail means invalid media content. */
}
}
}
return MS_MEDIA_ERR_NONE;
}
-static int __media_svc_get_media_type(const char *path, const char *mime_type, media_svc_media_type_e *media_type)
-{
- int ret = MS_MEDIA_ERR_NONE;
- int category = 0;
-
- ret = __media_svc_get_content_type_from_mime(path, mime_type, &category);
- if (ret != MS_MEDIA_ERR_NONE)
- media_svc_error("__media_svc_get_content_type_from_mime failed : %d", ret);
-
- switch (category) {
- case MEDIA_SVC_CATEGORY_SOUND:
- *media_type = MEDIA_SVC_MEDIA_TYPE_SOUND;
- break;
- case MEDIA_SVC_CATEGORY_MUSIC:
- *media_type = MEDIA_SVC_MEDIA_TYPE_MUSIC;
- break;
- case MEDIA_SVC_CATEGORY_IMAGE:
- *media_type = MEDIA_SVC_MEDIA_TYPE_IMAGE;
- break;
- case MEDIA_SVC_CATEGORY_VIDEO:
- *media_type = MEDIA_SVC_MEDIA_TYPE_VIDEO;
- break;
- case MEDIA_SVC_CATEGORY_BOOK:
- *media_type = MEDIA_SVC_MEDIA_TYPE_BOOK;
- break;
- default:
- *media_type = MEDIA_SVC_MEDIA_TYPE_OTHER;
- }
-
- return ret;
-}
-
/*
drm_contentifo is not NULL, if the file is OMA DRM.
If the file is not OMA DRM, drm_contentinfo must be NULL.