From: Eunhye Choi Date: Mon, 15 Jul 2019 09:54:56 +0000 (+0900) Subject: [0.6.201] add attribute about media stream input format X-Git-Tag: accepted/tizen/unified/20190722.074808~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b05eb4f986a30cf502fbe4b5ae82b7f34f1d0084;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.201] add attribute about media stream input format - get input format information from ini file and assign it into player attribute structure with media_format_mimetype_e Change-Id: Idfae4268be04d7b1d3331738a3770e1367840559 --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 3efa2d8..b5f991b 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -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 diff --git a/src/include/mm_player.h b/src/include/mm_player.h index 48f91a8..f036e0f 100644 --- a/src/include/mm_player.h +++ b/src/include/mm_player.h @@ -275,12 +275,18 @@ * 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" @@ -305,6 +311,11 @@ */ #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) /** diff --git a/src/include/mm_player_attrs.h b/src/include/mm_player_attrs.h index 113ffd6..0955bc3 100644 --- a/src/include/mm_player_attrs.h +++ b/src/include/mm_player_attrs.h @@ -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; diff --git a/src/include/mm_player_ini.h b/src/include/mm_player_ini.h index a733613..8f97576 100644 --- a/src/include/mm_player_ini.h +++ b/src/include/mm_player_ini.h @@ -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; diff --git a/src/mm_player_attrs.c b/src/mm_player_attrs.c index b0fb693..e53ca7b 100644 --- a/src/mm_player_attrs.c +++ b/src/mm_player_attrs.c @@ -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; } diff --git a/src/mm_player_ini.c b/src/mm_player_ini.c index 588c732..6ae73a5 100644 --- a/src/mm_player_ini.c +++ b/src/mm_player_ini.c @@ -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;