move ini paring func. to mediacodec_port 06/73906/2 accepted/tizen/common/20160613.144915 accepted/tizen/ivi/20160613.123542 accepted/tizen/mobile/20160613.123714 accepted/tizen/tv/20160613.123536 accepted/tizen/wearable/20160613.123604 submit/tizen/20160613.070227
authorSejun Park <sejun79.park@samsung.com>
Fri, 10 Jun 2016 04:29:52 +0000 (13:29 +0900)
committerSejun Park <sejun79.park@samsung.com>
Fri, 10 Jun 2016 04:37:36 +0000 (13:37 +0900)
Change-Id: I7717353245573132d26d034dd64c9278891f5f3d

include/media_codec_ini.h
include/media_codec_port.h
src/media_codec_ini.c
src/media_codec_port.c

index 75553dc..b51404e 100755 (executable)
@@ -19,6 +19,8 @@
 
 #include <glib.h>
 #include <mm_types.h>
+#include <media_codec.h>
+
 
 #ifdef __cplusplus
 extern "C" {
@@ -34,32 +36,42 @@ extern "C" {
 #define MEDIA_CODEC_MAX_VIDEO_CODEC 100
 #define MEDIA_CODEC_MAX_AUDIO_CODEC 100
 
+typedef struct _codec_list_t codec_list_t;
+typedef struct _codec_info_t codec_info_t;
+typedef struct _codec_t codec_t;
+typedef struct _mc_ini_t mc_ini_t;
+
+struct _codec_list_t {
+       gchar cname[MEDIA_CODEC_INI_MAX_STRLEN];
+       mediacodec_codec_type_e ctype;
+};
 
 typedef enum {
-    GST_PORT = 0,
-    FFMPEG_PORT,
-    CUSTOM_PORT,
+       GST_PORT = 0,
+       FFMPEG_PORT,
+       CUSTOM_PORT,
 } port_mode;
 
-typedef struct {
-    gchar name[MEDIA_CODEC_INI_MAX_STRLEN];
-    gchar mime[MEDIA_CODEC_INI_MAX_STRLEN];
-    gchar format[MEDIA_CODEC_INI_MAX_STRLEN];
-} codec_info_t;
+struct _codec_info_t {
+       gchar name[MEDIA_CODEC_INI_MAX_STRLEN];
+       gchar mime[MEDIA_CODEC_INI_MAX_STRLEN];
+       gchar format[MEDIA_CODEC_INI_MAX_STRLEN];
+};
 
-typedef struct {
-    gint codec_id;
-    codec_info_t codec_info[MEDIA_CODEC_MAX_CODEC_ROLE];
-} codec_t;
+struct _codec_t {
+       gint codec_id;
+       codec_info_t codec_info[MEDIA_CODEC_MAX_CODEC_ROLE];
+};
 
 
 /* @ mark means the item has tested */
-typedef struct __mc_ini {
-    port_mode port_type;
-    /* general */
-    gchar port_name[MEDIA_CODEC_INI_MAX_STRLEN];
-    codec_t  codec[MEDIA_CODEC_MAX_CODEC_TYPE];
-} mc_ini_t;
+struct _mc_ini_t {
+       int codec_list;
+       port_mode port_type;
+       /* general */
+       gchar port_name[MEDIA_CODEC_INI_MAX_STRLEN];
+       codec_t  codec[MEDIA_CODEC_MAX_CODEC_TYPE];
+};
 
 /*Default sink ini values*/
 /* General*/
@@ -68,7 +80,7 @@ typedef struct __mc_ini {
 /* FIXIT : need smarter way to generate default ini file. */
 /* FIXIT : finally, it should be an external file */
 #define MEDIA_CODEC_DEFAULT_INI \
-    "\
+"\
 [general] \n\
 \n\
 ;Add general config parameters here\n\
@@ -96,6 +108,8 @@ media_codec_port = GST_PORT \n\
 "
 
 int mc_ini_load(mc_ini_t *ini);
+media_format_mimetype_e _mc_convert_media_format_str_to_int(char *sformat);
+
 
 #ifdef __cplusplus
 }
index 5d3975c..e31dfd8 100755 (executable)
@@ -257,6 +257,10 @@ int mc_unset_buffer_status_cb(MMHandleType mediacodec);
 int mc_set_supported_codec_cb(MMHandleType mediacodec, mediacodec_supported_codec_cb callback, void* user_data);
 int _mediacodec_foreach_supported_codec(MMHandleType mediacodec, mediacodec_supported_codec_cb callback, void* user_data);
 
+void _mc_create_codec_map_from_ini(mc_handle_t *mc_handle, mc_codec_spec_t *spec_emul);
+void _mc_create_decoder_map_from_ini(mc_handle_t *mc_handle);
+void _mc_create_encoder_map_from_ini(mc_handle_t *mc_handle);
+
 #ifdef __cplusplus
 }
 #endif
index 79d5ccc..1bc2c86 100755 (executable)
 
 #define CNAME_SIZE 512
 
-typedef struct {
-       gchar cname[MEDIA_CODEC_INI_MAX_STRLEN];
-       mediacodec_codec_type_e ctype;
-} codec_list_t;
-
 static codec_list_t general_codec_list[] = {
        {"h261", MEDIACODEC_H261},
        {"h263", MEDIACODEC_H263},
@@ -302,7 +297,10 @@ int mc_ini_load(mc_ini_t *ini)
        int i = 0;
        dictionary *dict = NULL;
 
-       static const int codec_list = sizeof(general_codec_list) / sizeof(general_codec_list[0]);
+       /* get ini values */
+       memset(ini, 0, sizeof(mc_ini_t));
+
+       ini->codec_list = sizeof(general_codec_list) / sizeof(general_codec_list[0]);
 
        _mc_ini_check_ini_status();
 
@@ -325,14 +323,12 @@ int mc_ini_load(mc_ini_t *ini)
 #endif
        }
 
-       /* get ini values */
-       memset(ini, 0, sizeof(mc_ini_t));
 
        if (dict) {/* if dict is available */
                /* general */
                MEDIA_CODEC_INI_GET_STRING(dict, ini->port_name, "port_in_use:media_codec_port", DEFAULT_PORT);
                /* codec */
-               for (i = 0; i < codec_list; i++) {
+               for (i = 0; i < ini->codec_list; i++) {
                        memset(cname, 0x00, CNAME_SIZE);
                        snprintf(cname, CNAME_SIZE, "%s", general_codec_list[i].cname);
                        int len = strlen(cname);
@@ -351,7 +347,7 @@ int mc_ini_load(mc_ini_t *ini)
                LOGW("failed to load ini. using hardcoded default\n");
                /* general */
                snprintf(ini->port_name, sizeof(ini->port_name), "%s", DEFAULT_PORT);
-               for (i = 0; i < codec_list; i++) {
+               for (i = 0; i < ini->codec_list; i++) {
                        MEDIA_CODEC_GET_DEFAULT_LIST(ini->codec[i].codec_info[0].name,   DEFAULT_HW_DECODER_NAME);
                        MEDIA_CODEC_GET_DEFAULT_LIST(ini->codec[i].codec_info[0].mime,   DEFAULT_HW_DECODER_MIME);
                        MEDIA_CODEC_GET_DEFAULT_LIST(ini->codec[i].codec_info[0].format, DEFAULT_HW_DECODER_FORMAT);
@@ -379,7 +375,7 @@ int mc_ini_load(mc_ini_t *ini)
        }
        LOGD("The port is set to [%s] [%d]\n", ini->port_name, ini->port_type);
 
-       for (i = 0; i < codec_list; i++) {
+       for (i = 0; i < ini->codec_list; i++) {
                memset(cname, 0x00, CNAME_SIZE);
                snprintf(cname, CNAME_SIZE, "%s", general_codec_list[i].cname);
                int len = strlen(cname);
@@ -449,100 +445,4 @@ static gboolean _generate_default_ini(void)
        return TRUE;
 }
 #endif
-
-void _mc_create_decoder_map_from_ini(mc_handle_t *mediacodec)
-{
-       int indx = 0, count = 0;
-       int codec_list = sizeof(general_codec_list) / sizeof(general_codec_list[0]);
-       for (indx = 0; indx < codec_list; indx++) {
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[0].name, "")) {
-                       mediacodec->decoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
-                       mediacodec->decoder_map[count].hardware = 1; /* hardware */
-                       mediacodec->decoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[0].name;
-                       mediacodec->decoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[0].mime;
-                       mediacodec->decoder_map[count].type.out_format =
-                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[0].format);
-                       count++;
-               }
-
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[2].name, "")) {
-                       mediacodec->decoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
-                       mediacodec->decoder_map[count].hardware = 0; /* software */
-                       mediacodec->decoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[2].name;
-                       mediacodec->decoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[2].mime;
-                       mediacodec->decoder_map[count].type.out_format =
-                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[2].format);
-                       count++;
-               }
-       }
-       mediacodec->num_supported_decoder = count;
-       return;
-
-}
-
-void _mc_create_encoder_map_from_ini(mc_handle_t *mediacodec)
-{
-       int indx = 0, count = 0;
-       int codec_list = sizeof(general_codec_list) / sizeof(general_codec_list[0]);
-
-       for (indx = 0; indx < codec_list; indx++) {
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[1].name, "")) {
-                       mediacodec->encoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
-                       mediacodec->encoder_map[count].hardware = 1;
-                       mediacodec->encoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[1].name;
-                       mediacodec->encoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[1].mime;
-                       mediacodec->encoder_map[count].type.out_format =
-                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[1].format);
-                       count++;
-               }
-
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[3].name, "")) {
-                       mediacodec->encoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
-                       mediacodec->encoder_map[count].hardware = 0;
-                       mediacodec->encoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[3].name;
-                       mediacodec->encoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[3].mime;
-                       mediacodec->encoder_map[count].type.out_format =
-                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[3].format);
-                       count++;
-               }
-       }
-       mediacodec->num_supported_encoder = count;
-       return;
-
-}
-void _mc_create_codec_map_from_ini(mc_handle_t *mediacodec, mc_codec_spec_t *spec_emul)
-{
-       int indx = 0, count = 0;
-       int codec_list = sizeof(general_codec_list) / sizeof(general_codec_list[0]);
-       for (indx = 0; indx < codec_list; indx++) {
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[0].name, "")) {
-                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
-                       spec_emul[count].codec_type =  MEDIACODEC_DECODER | MEDIACODEC_SUPPORT_TYPE_HW;
-                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
-                       count++;
-               }
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[1].name, "")) {
-                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
-                       spec_emul[count].codec_type =  MEDIACODEC_ENCODER | MEDIACODEC_SUPPORT_TYPE_HW;
-                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
-                       count++;
-               }
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[2].name, "")) {
-                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
-                       spec_emul[count].codec_type =  MEDIACODEC_DECODER | MEDIACODEC_SUPPORT_TYPE_SW;
-                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
-                       count++;
-               }
-               if (strcmp(mediacodec->ini.codec[indx].codec_info[3].name, "")) {
-                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
-                       spec_emul[count].codec_type =  MEDIACODEC_ENCODER | MEDIACODEC_SUPPORT_TYPE_SW;
-                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
-                       count++;
-               }
-       }
-
-       mediacodec->num_supported_codecs = count;
-       return;
-}
-
 #endif /* #ifdef _MEDIA_CODEC_INI_C_ */
index 4e94746..468efde 100755 (executable)
@@ -749,5 +749,101 @@ int mc_get_packet_pool(MMHandleType mediacodec, media_packet_pool_h *pool)
        return ret;
 }
 
+void _mc_create_decoder_map_from_ini(mc_handle_t *mediacodec)
+{
+       int indx = 0, count = 0;
+       int codec_list = mediacodec->ini.codec_list;
+       for (indx = 0; indx < codec_list; indx++) {
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[0].name, "")) {
+                       mediacodec->decoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
+                       mediacodec->decoder_map[count].hardware = 1; /* hardware */
+                       mediacodec->decoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[0].name;
+                       mediacodec->decoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[0].mime;
+                       mediacodec->decoder_map[count].type.out_format =
+                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[0].format);
+                       count++;
+               }
+
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[2].name, "")) {
+                       mediacodec->decoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
+                       mediacodec->decoder_map[count].hardware = 0; /* software */
+                       mediacodec->decoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[2].name;
+                       mediacodec->decoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[2].mime;
+                       mediacodec->decoder_map[count].type.out_format =
+                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[2].format);
+                       count++;
+               }
+       }
+       mediacodec->num_supported_decoder = count;
+       return;
+
+}
+
+void _mc_create_encoder_map_from_ini(mc_handle_t *mediacodec)
+{
+       int indx = 0, count = 0;
+       int codec_list = mediacodec->ini.codec_list;
+
+       for (indx = 0; indx < codec_list; indx++) {
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[1].name, "")) {
+                       mediacodec->encoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
+                       mediacodec->encoder_map[count].hardware = 1;
+                       mediacodec->encoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[1].name;
+                       mediacodec->encoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[1].mime;
+                       mediacodec->encoder_map[count].type.out_format =
+                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[1].format);
+                       count++;
+               }
+
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[3].name, "")) {
+                       mediacodec->encoder_map[count].id = mediacodec->ini.codec[indx].codec_id;
+                       mediacodec->encoder_map[count].hardware = 0;
+                       mediacodec->encoder_map[count].type.factory_name = mediacodec->ini.codec[indx].codec_info[3].name;
+                       mediacodec->encoder_map[count].type.mime = mediacodec->ini.codec[indx].codec_info[3].mime;
+                       mediacodec->encoder_map[count].type.out_format =
+                               _mc_convert_media_format_str_to_int(mediacodec->ini.codec[indx].codec_info[3].format);
+                       count++;
+               }
+       }
+       mediacodec->num_supported_encoder = count;
+       return;
+
+}
+void _mc_create_codec_map_from_ini(mc_handle_t *mediacodec, mc_codec_spec_t *spec_emul)
+{
+       int indx = 0, count = 0;
+       int codec_list = mediacodec->ini.codec_list;
+
+       for (indx = 0; indx < codec_list; indx++) {
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[0].name, "")) {
+                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
+                       spec_emul[count].codec_type =  MEDIACODEC_DECODER | MEDIACODEC_SUPPORT_TYPE_HW;
+                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
+                       count++;
+               }
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[1].name, "")) {
+                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
+                       spec_emul[count].codec_type =  MEDIACODEC_ENCODER | MEDIACODEC_SUPPORT_TYPE_HW;
+                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
+                       count++;
+               }
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[2].name, "")) {
+                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
+                       spec_emul[count].codec_type =  MEDIACODEC_DECODER | MEDIACODEC_SUPPORT_TYPE_SW;
+                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
+                       count++;
+               }
+               if (strcmp(mediacodec->ini.codec[indx].codec_info[3].name, "")) {
+                       spec_emul[count].codec_id = mediacodec->ini.codec[indx].codec_id;
+                       spec_emul[count].codec_type =  MEDIACODEC_ENCODER | MEDIACODEC_SUPPORT_TYPE_SW;
+                       spec_emul[count].port_type =  MEDIACODEC_PORT_TYPE_GST;
+                       count++;
+               }
+       }
+
+       mediacodec->num_supported_codecs = count;
+       LOGE("supported codecs :%d", count);
+       return;
+}