* of each string item.
*/
enum keyword_type {
- KEYWORD_EXCLUDE, // for element exclude keyworld
- KEYWORD_DUMP, // for dump element keyworld
- KEYWORD_A_SW_CODEC, // for audio sw codec
- KEYWORD_V_SW_CODEC // for video sw codec
+ KEYWORD_EXCLUDE, // for element exclude keyworld
+ KEYWORD_DUMP, // for dump element keyworld
+ KEYWORD_UNSUPPORTED_CODEC, // for un-supported codec
+ KEYWORD_A_SW_CODEC, // for audio sw codec
+ KEYWORD_V_SW_CODEC // for video sw codec
};
typedef struct __mm_player_ini {
gchar gst_param[5][PLAYER_INI_MAX_PARAM_STRLEN];
gchar exclude_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
+ gchar unsupported_codec_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
gboolean async_start;
gboolean disable_segtrap;
gint pcm_buffer_size;
/* default values if each values are not specified in inifile */
/* general */
-#define DEFAULT_AUDIO_EFFECT_ELEMENT ""
-#define DEFAULT_USE_AUDIO_EFFECT_PRESET FALSE
-#define DEFAULT_AUDIO_EFFECT_PRESET_LIST ""
-#define DEFAULT_AUDIO_EFFECT_PRESET_LIST_EARPHONE_ONLY ""
-#define DEFAULT_USE_AUDIO_EFFECT_CUSTOM FALSE
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST ""
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST_EARPHONE_ONLY ""
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_NUM 0
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_WIDTH ""
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_FREQ ""
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MIN 0
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MAX 0
-#define DEFAULT_AUDIO_EFFECT_CUSTOM_EXT_NUM 0
-#define DEFAULT_USE_SINK_HANDLER TRUE
-#define DEFAULT_SKIP_RESCAN TRUE
-#define DEFAULT_GENERATE_DOT FALSE
-#define DEFAULT_USE_SYSTEM_CLOCK TRUE
-#define DEFAULT_DELAY_BEFORE_REPEAT 50 /* msec */
-#define DEFAULT_EOS_DELAY 0 /* msec */
-#define DEFAULT_VIDEOSINK_OVERLAY "tizenwlsink"
-#define DEFAULT_VIDEOSINK_EVAS "evasimagesink"
-#define DEFAULT_VIDEOSINK_FAKE "fakesink"
-#define DEFAULT_AUDIORESAMPLER "audioresample"
-#define DEFAULT_AUDIOSINK "pulsesink"
-#define DEFAULT_CODEC_HW ""
-#define DEFAULT_CODEC_SW ""
-#define DEFAULT_GST_PARAM ""
-#define DEFAULT_EXCLUDE_KEYWORD ""
-#define DEFAULT_ASYNC_START TRUE
-#define DEFAULT_DISABLE_SEGTRAP TRUE
-#define DEFAULT_VIDEO_CONVERTER ""
-#define DEFAULT_VIDEO_PLAYBACK_SUPPORTED TRUE
-#define DEFAULT_LIVE_STATE_CHANGE_TIMEOUT 30 /* sec */
-#define DEFAULT_LOCALPLAYBACK_STATE_CHANGE_TIMEOUT 10 /* sec */
-#define DEFAULT_PCM_BUFFER_SIZE 51200 /* bytes */
-#define DEFAULT_NUM_OF_VIDEO_BO 10
-#define DEFAULT_TIMEOUT_OF_VIDEO_BO 10 /* sec */
+#define DEFAULT_AUDIO_EFFECT_ELEMENT ""
+#define DEFAULT_USE_AUDIO_EFFECT_PRESET FALSE
+#define DEFAULT_AUDIO_EFFECT_PRESET_LIST ""
+#define DEFAULT_AUDIO_EFFECT_PRESET_LIST_EARPHONE_ONLY ""
+#define DEFAULT_USE_AUDIO_EFFECT_CUSTOM FALSE
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST ""
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST_EARPHONE_ONLY ""
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_NUM 0
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_WIDTH ""
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_FREQ ""
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MIN 0
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MAX 0
+#define DEFAULT_AUDIO_EFFECT_CUSTOM_EXT_NUM 0
+#define DEFAULT_USE_SINK_HANDLER TRUE
+#define DEFAULT_SKIP_RESCAN TRUE
+#define DEFAULT_GENERATE_DOT FALSE
+#define DEFAULT_USE_SYSTEM_CLOCK TRUE
+#define DEFAULT_DELAY_BEFORE_REPEAT 50 /* msec */
+#define DEFAULT_EOS_DELAY 0 /* msec */
+#define DEFAULT_VIDEOSINK_OVERLAY "tizenwlsink"
+#define DEFAULT_VIDEOSINK_EVAS "evasimagesink"
+#define DEFAULT_VIDEOSINK_FAKE "fakesink"
+#define DEFAULT_AUDIORESAMPLER "audioresample"
+#define DEFAULT_AUDIOSINK "pulsesink"
+#define DEFAULT_CODEC_HW ""
+#define DEFAULT_CODEC_SW ""
+#define DEFAULT_GST_PARAM ""
+#define DEFAULT_EXCLUDE_KEYWORD ""
+#define DEFAULT_UNSUPPORTED_CODEC_KEYWORD ""
+#define DEFAULT_ASYNC_START TRUE
+#define DEFAULT_DISABLE_SEGTRAP TRUE
+#define DEFAULT_VIDEO_CONVERTER ""
+#define DEFAULT_VIDEO_PLAYBACK_SUPPORTED TRUE
+#define DEFAULT_LIVE_STATE_CHANGE_TIMEOUT 30 /* sec */
+#define DEFAULT_LOCALPLAYBACK_STATE_CHANGE_TIMEOUT 10 /* sec */
+#define DEFAULT_PCM_BUFFER_SIZE 51200 /* bytes */
+#define DEFAULT_NUM_OF_VIDEO_BO 10
+#define DEFAULT_TIMEOUT_OF_VIDEO_BO 10 /* sec */
/* http streaming */
-#define DEFAULT_HTTPSRC "souphttpsrc"
-#define DEFAULT_HTTP_USE_FILE_BUFFER FALSE
-#define DEFAULT_HTTP_RING_BUFFER_SIZE (20*1024*1024) /* bytes : 20MBytes */
-#define DEFAULT_HTTP_BUFFERING_LIMIT 99.0 /* percent */
-#define DEFAULT_HTTP_MAX_SIZE_BYTES 1048576 /* bytes : 1 MBytes */
-#define DEFAULT_HTTP_BUFFERING_TIME 1.2 /* sec */
-#define DEFAULT_HTTP_TIMEOUT -1 /* infinite retry */
+#define DEFAULT_HTTPSRC "souphttpsrc"
+#define DEFAULT_HTTP_USE_FILE_BUFFER FALSE
+#define DEFAULT_HTTP_RING_BUFFER_SIZE (20*1024*1024) /* bytes : 20MBytes */
+#define DEFAULT_HTTP_BUFFERING_LIMIT 99.0 /* percent */
+#define DEFAULT_HTTP_MAX_SIZE_BYTES 1048576 /* bytes : 1 MBytes */
+#define DEFAULT_HTTP_BUFFERING_TIME 1.2 /* sec */
+#define DEFAULT_HTTP_TIMEOUT -1 /* infinite retry */
/* dump buffer for debug */
-#define DEFAULT_DUMP_ELEMENT_KEYWORD ""
-#define DEFAULT_DUMP_ELEMENT_PATH "/tmp/"
+#define DEFAULT_DUMP_ELEMENT_KEYWORD ""
+#define DEFAULT_DUMP_ELEMENT_PATH "/tmp/"
/* NOTE : following content should be same with above default values */
/* FIXIT : need smarter way to generate default ini file. */
; comma separated list of tocken which elemnts has it in it's name will not be used \n\
element exclude keyword = \n\
\n\
+; comma separated list of tocken \n\
+unsupported codec keyword = \n\
+\n\
async start = yes \n\
\n\
; parameters for initializing gstreamer \n\
__get_element_list(ini,
iniparser_getstring(dict, "general:element exclude keyword", DEFAULT_EXCLUDE_KEYWORD), KEYWORD_EXCLUDE);
+ __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);
MMPLAYER_INI_GET_STRING(dict, ini->gst_param[1], "general:gstparam2", DEFAULT_GST_PARAM);
MMPLAYER_INI_GET_STRING(dict, ini->gst_param[2], "general:gstparam3", DEFAULT_GST_PARAM);
__get_element_list(ini, DEFAULT_CODEC_SW, KEYWORD_A_SW_CODEC);
__get_element_list(ini, DEFAULT_CODEC_SW, KEYWORD_V_SW_CODEC);
__get_element_list(ini, DEFAULT_EXCLUDE_KEYWORD, KEYWORD_EXCLUDE);
+ __get_element_list(ini, DEFAULT_UNSUPPORTED_CODEC_KEYWORD, KEYWORD_UNSUPPORTED_CODEC);
strncpy(ini->gst_param[0], DEFAULT_GST_PARAM, PLAYER_INI_MAX_PARAM_STRLEN - 1);
strncpy(ini->gst_param[1], DEFAULT_GST_PARAM, PLAYER_INI_MAX_PARAM_STRLEN - 1);
for (idx = 0; ini->dump_element_keyword[idx][0] != '\0'; idx++)
LOGD("dump_element_keyword [%d] : %s\n", idx, ini->dump_element_keyword[idx]);
+ for (idx = 0; ini->unsupported_codec_keyword[idx][0] != '\0'; idx++)
+ LOGD("unsupported_codec_keyword [%d] : %s\n", idx, ini->dump_element_keyword[idx]);
+
/* http streaming */
LOGD("httpsrc element : %s\n", ini->httpsrc_element);
LOGD("http buffering limit : %f \n", ini->http_buffering_limit);
break;
}
+ case KEYWORD_UNSUPPORTED_CODEC:
+ {
+ for (walk = list; *walk; walk++) {
+ strncpy(ini->unsupported_codec_keyword[i], *walk, (PLAYER_INI_MAX_STRLEN - 1));
+
+ g_strstrip(ini->unsupported_codec_keyword[i]);
+
+ ini->unsupported_codec_keyword[i][PLAYER_INI_MAX_STRLEN -1] = '\0';
+
+ i++;
+ }
+ /* mark last item to NULL */
+ ini->unsupported_codec_keyword[i][0] = '\0';
+ break;
+ }
case KEYWORD_V_SW_CODEC:
{
for (walk = list; *walk; walk++) {
MM_RESOURCE_MANAGER_APP_CLASS_MEDIA, __resource_release_cb, player,
&player->resource_manager)) {
LOGE("failed to initialize resource manager\n");
+ ret = MM_ERROR_PLAYER_INTERNAL;
goto ERROR;
}
/* filtering exclude keyword */
for (idx = 0; player->ini.exclude_element_keyword[idx][0] != '\0'; idx++) {
if (strstr(factory_name, player->ini.exclude_element_keyword[idx])) {
- LOGW("skipping [%s] by exculde keyword [%s]\n",
+ LOGW("skipping [%s] by exculde keyword [%s]",
factory_name, player->ini.exclude_element_keyword[idx]);
result = GST_AUTOPLUG_SELECT_SKIP;
}
}
+ for (idx = 0; player->ini.unsupported_codec_keyword[idx][0] != '\0'; idx++) {
+ if (caps_str && strstr(caps_str, player->ini.unsupported_codec_keyword[idx])) {
+ LOGW("skipping [%s] by unsupported codec keyword [%s]",
+ factory_name, player->ini.unsupported_codec_keyword[idx]);
+ result = GST_AUTOPLUG_SELECT_SKIP;
+ goto DONE;
+ }
+ }
+
/* exclude webm format */
/* NOTE : MSL have to post MM_ERROR_PLAYER_NOT_SUPPORTED_FORMAT
* because webm format is not supportable.