[0.6.201] add attribute about media stream input format 61/210061/2
authorEunhye Choi <eunhae1.choi@samsung.com>
Mon, 15 Jul 2019 09:54:56 +0000 (18:54 +0900)
committerEunhye Choi <eunhae1.choi@samsung.com>
Mon, 15 Jul 2019 11:32:39 +0000 (20:32 +0900)
- get input format information from ini file
  and assign it into player attribute structure
  with media_format_mimetype_e

Change-Id: Idfae4268be04d7b1d3331738a3770e1367840559

packaging/libmm-player.spec
src/include/mm_player.h
src/include/mm_player_attrs.h
src/include/mm_player_ini.h
src/mm_player_attrs.c
src/mm_player_ini.c

index 3efa2d8..b5f991b 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.200
+Version:    0.6.201
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 48f91a8..f036e0f 100644 (file)
  * rebuffer ms (int)
  */
 #define MM_PLAYER_REBUFFER_MS               "rebuffer_ms"
+
 /**
  * MM_PLAYER_AUDIO_OFFLOAD (int)
  */
 #define MM_PLAYER_AUDIO_OFFLOAD             "audio_offload"
 
 /**
+ * MM_PLAYER_AUDIO_OFFLOAD_FORMAT (int array)
+ */
+#define MM_PLAYER_AUDIO_OFFLOAD_FORMAT      "audio_offload_format"
+
+/**
  * MM_PLAYER_PITCH_CONTROL (int)
  */
 #define MM_PLAYER_PITCH_CONTROL             "pitch_control"
  */
 #define MM_PLAYER_PCM_EXT_SAMPLERATE        "pcm_extraction_samplerate"
 
+/**
+ * MM_PLAYER_MEDIA_STREAM_INPUT_FORMAT (int array)
+ */
+#define MM_PLAYER_MEDIA_STREAM_INPUT_FORMAT "media_stream_input_format"
+
 #define BUFFER_MAX_PLANE_NUM (4)
 
 /**
index 113ffd6..0955bc3 100644 (file)
@@ -91,6 +91,7 @@ typedef enum {
        MMPLAYER_ATTRS_PITCH_VALUE,             /* 60 */
        MMPLAYER_ATTRS_AUDIO_OFFLOAD,
        MMPLAYER_ATTRS_AUDIO_OFFLOAD_FORMAT,
+       MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT,
        MMPLAYER_ATTRS_NUM
 } mmplayer_attrs_id_e;
 
index a733613..8f97576 100644 (file)
@@ -61,6 +61,7 @@ enum keyword_type {
        KEYWORD_V_SW_CODEC, // for video sw codec
        KEYWORD_A_OFFLOAD_DEVICE_TYPE,  // for audio device type which can support offload
        KEYWORD_A_OFFLOAD_MEDIA_FORMAT, // supported media format for audio offload
+       KEYWORD_MEDIA_STREAM_IN_FORMAT, // supported media format for external media stream
 };
 
 typedef struct {
@@ -77,6 +78,7 @@ typedef struct {
        gchar audio_offload_sink_element[PLAYER_INI_MAX_STRLEN];
        gchar audio_offload_device_type[PLAYER_INI_MAX_DEVICE_TYPE][PLAYER_INI_MAX_STRLEN];
        gchar audio_offload_media_format[PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT][PLAYER_INI_MAX_STRLEN];
+       gchar media_stream_input_format[PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT][PLAYER_INI_MAX_STRLEN];
        gboolean skip_rescan;
        gboolean generate_dot;
        gboolean use_system_clock;
index b0fb693..e53ca7b 100644 (file)
@@ -741,6 +741,17 @@ mmplayer_attrs_spec_t player_attrs[] = {
                {.count = 0},
                NULL,
        },
+       {
+               MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT, /* MM_PLAYER_MEDIA_STREAM_INPUT_FORMAT */
+               (char *)"media_stream_input_format",
+               MM_ATTRS_TYPE_INT,
+               MM_ATTRS_FLAG_RW,
+               {(void *)NULL},
+               MM_ATTRS_VALID_TYPE_INT_ARRAY,
+               {.int_array = NULL},
+               {.count = 0},
+               NULL,
+       },
 };
 
 /*===========================================================================================
@@ -834,6 +845,9 @@ static int __mmplayer_get_array_count(MMHandleType handle, int type)
        if (type == KEYWORD_A_OFFLOAD_MEDIA_FORMAT) {
                while (player->ini.audio_offload_media_format[i++][0])
                        count++;
+       } else if (type == KEYWORD_MEDIA_STREAM_IN_FORMAT) {
+               while (player->ini.media_stream_input_format[i++][0])
+                       count++;
        }
        return count;
 }
@@ -847,6 +861,8 @@ static media_format_mimetype_e __mmplayer_get_supported_format_mimetype(MMHandle
 
        if (type == KEYWORD_A_OFFLOAD_MEDIA_FORMAT) {
                name = player->ini.audio_offload_media_format[i];
+       } else if (type == KEYWORD_MEDIA_STREAM_IN_FORMAT) {
+               name = player->ini.media_stream_input_format[i];
        } else {
                LOGE("invalid ini type");
                goto EXIT;
@@ -854,6 +870,44 @@ static media_format_mimetype_e __mmplayer_get_supported_format_mimetype(MMHandle
 
        if (!strcmp(name, "MP3"))
                format = MEDIA_FORMAT_MP3;
+       else if (!strcmp(name, "AAC"))
+               format = MEDIA_FORMAT_AAC;
+       else if (!strcmp(name, "H264_SP"))
+               format = MEDIA_FORMAT_H264_SP;
+       else if (!strcmp(name, "H264_MP"))
+               format = MEDIA_FORMAT_H264_MP;
+       else if (!strcmp(name, "H264_HP"))
+               format = MEDIA_FORMAT_H264_HP;
+       else if (!strcmp(name, "PCM"))
+               format = MEDIA_FORMAT_PCM;
+       else if (!strcmp(name, "PCM_S16LE"))
+               format = MEDIA_FORMAT_PCM_S16LE;
+       else if (!strcmp(name, "PCM_S24LE"))
+               format = MEDIA_FORMAT_PCM_S24LE;
+       else if (!strcmp(name, "PCM_S32LE"))
+               format = MEDIA_FORMAT_PCM_S32LE;
+       else if (!strcmp(name, "PCM_S16BE"))
+               format = MEDIA_FORMAT_PCM_S16BE;
+       else if (!strcmp(name, "PCM_S24BE"))
+               format = MEDIA_FORMAT_PCM_S24BE;
+       else if (!strcmp(name, "PCM_S32BE"))
+               format = MEDIA_FORMAT_PCM_S32BE;
+       else if (!strcmp(name, "PCM_F32LE"))
+               format = MEDIA_FORMAT_PCM_F32LE;
+       else if (!strcmp(name, "PCM_F32BE"))
+               format = MEDIA_FORMAT_PCM_F32BE;
+       else if (!strcmp(name, "PCM_S16LE"))
+               format = MEDIA_FORMAT_PCM_U16LE;
+       else if (!strcmp(name, "PCM_U24LE"))
+               format = MEDIA_FORMAT_PCM_U24LE;
+       else if (!strcmp(name, "PCM_U32LE"))
+               format = MEDIA_FORMAT_PCM_U32LE;
+       else if (!strcmp(name, "PCM_U16BE"))
+               format = MEDIA_FORMAT_PCM_U16BE;
+       else if (!strcmp(name, "PCM_U24BE"))
+               format = MEDIA_FORMAT_PCM_U24BE;
+       else if (!strcmp(name, "PCM_U32BE"))
+               format = MEDIA_FORMAT_PCM_U32BE;
        else
                LOGE("FIXME: need to modify function to support more format");
 
@@ -908,6 +962,13 @@ static int __mmplayer_set_ini_to_valid_info(MMHandleType handle)
                player_attrs[MMPLAYER_ATTRS_AUDIO_OFFLOAD_FORMAT].validity_value_2.count = total_count;
        }
 
+       /* supported format of media stream input */
+       total_count = __mmplayer_get_available_format(handle, KEYWORD_MEDIA_STREAM_IN_FORMAT, &format);
+       if (format && total_count > 0) {
+               player_attrs[MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT].validity_value_1.int_array = format;
+               player_attrs[MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT].validity_value_2.count = total_count;
+       }
+
        return MM_ERROR_NONE;
 }
 
@@ -924,6 +985,13 @@ static int __mmplayer_release_ini_info(void)
                player_attrs[MMPLAYER_ATTRS_AUDIO_OFFLOAD_FORMAT].validity_value_2.count = 0;
        }
 
+       mem = (int *)(player_attrs[MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT].validity_value_1.int_array);
+       if (mem) {
+               free(mem);
+               player_attrs[MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT].validity_value_1.int_array = NULL;
+               player_attrs[MMPLAYER_ATTRS_MEDIA_STREAM_INPUT_FORMAT].validity_value_2.count = 0;
+       }
+
        MMPLAYER_FLEAVE();
        return MM_ERROR_NONE;
 }
index 588c732..6ae73a5 100644 (file)
@@ -179,6 +179,9 @@ mm_player_ini_load(mmplayer_ini_t *ini)
                        iniparser_getstring(dict, "general:audio offload media format", DEFAULT_EMPTY_VALUE), KEYWORD_A_OFFLOAD_MEDIA_FORMAT);
 
                __get_element_list(ini,
+                       iniparser_getstring(dict, "general:media stream input format", DEFAULT_EMPTY_VALUE), KEYWORD_MEDIA_STREAM_IN_FORMAT);
+
+               __get_element_list(ini,
                        iniparser_getstring(dict, "general:unsupported codec keyword", DEFAULT_UNSUPPORTED_CODEC_KEYWORD), KEYWORD_UNSUPPORTED_CODEC);
 
                MMPLAYER_INI_GET_STRING(dict, ini->gst_param[0], "general:gstparam1", DEFAULT_GST_PARAM);
@@ -229,6 +232,7 @@ mm_player_ini_load(mmplayer_ini_t *ini)
                __get_element_list(ini, DEFAULT_CODEC_SW, KEYWORD_V_SW_CODEC);
                __get_element_list(ini, DEFAULT_A_OFFLOAD_DEVICE_TYPE, KEYWORD_A_OFFLOAD_DEVICE_TYPE);
                __get_element_list(ini, DEFAULT_EMPTY_VALUE, KEYWORD_A_OFFLOAD_MEDIA_FORMAT);
+               __get_element_list(ini, DEFAULT_EMPTY_VALUE, KEYWORD_MEDIA_STREAM_IN_FORMAT);
                __get_element_list(ini, DEFAULT_EXCLUDE_KEYWORD, KEYWORD_EXCLUDE);
                __get_element_list(ini, DEFAULT_UNSUPPORTED_CODEC_KEYWORD, KEYWORD_UNSUPPORTED_CODEC);
 
@@ -273,6 +277,8 @@ mm_player_ini_load(mmplayer_ini_t *ini)
                LOGD("audio_offload_device_type [%d] : %s", idx, ini->audio_offload_device_type[idx]);
        for (idx = 0; ini->audio_offload_media_format[idx][0] != '\0'; idx++)
                LOGD("audio_offload_media_format [%d] : %s", idx, ini->audio_offload_media_format[idx]);
+       for (idx = 0; ini->media_stream_input_format[idx][0] != '\0'; idx++)
+               LOGD("media_stream_input_format [%d] : %s", idx, ini->media_stream_input_format[idx]);
        LOGD("generate dot : %d", ini->generate_dot);
        LOGD("use system clock(video only) : %d", ini->use_system_clock);
        LOGD("live state change timeout(sec) : %d", ini->live_state_change_timeout);
@@ -502,6 +508,9 @@ __get_element_list(mmplayer_ini_t *ini, gchar *str, int keyword_type)
        case KEYWORD_A_OFFLOAD_MEDIA_FORMAT:
                ini_keyword = ini->audio_offload_media_format;
                break;
+       case KEYWORD_MEDIA_STREAM_IN_FORMAT:
+               ini_keyword = ini->media_stream_input_format;
+               break;
        default:
                goto EXIT;
                break;