diff options
author | Eunhye Choi <eunhae1.choi@samsung.com> | 2021-11-04 11:44:40 +0900 |
---|---|---|
committer | Eunhye Choi <eunhae1.choi@samsung.com> | 2021-11-04 14:36:54 +0900 |
commit | a7b3158bb2311417aca878174de02724c45c0453 (patch) | |
tree | 569f3e4d546fbcdbcd5301150adb3f5385e1f94b | |
parent | 6a30303858b50d82ff6ee796fd8665c8db5a20df (diff) | |
download | libmm-player-a7b3158bb2311417aca878174de02724c45c0453.tar.gz libmm-player-a7b3158bb2311417aca878174de02724c45c0453.tar.bz2 libmm-player-a7b3158bb2311417aca878174de02724c45c0453.zip |
[0.6.263] skip unsupported codecsubmit/tizen_6.0/20211104.053837accepted/tizen/6.0/unified/20211105.130123
- skip unsupported codec with reference to ini keyword
Change-Id: I8e444f130d0ccfc69d5c6e4181546fecb4b7fa5f
-rw-r--r-- | packaging/libmm-player.spec | 2 | ||||
-rw-r--r-- | src/include/mm_player_priv.h | 1 | ||||
-rw-r--r-- | src/mm_player_gst.c | 23 | ||||
-rw-r--r-- | src/mm_player_priv.c | 7 |
4 files changed, 22 insertions, 11 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 8658359..03fc1c1 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.252 +Version: 0.6.253 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_player_priv.h b/src/include/mm_player_priv.h index b8fabf0..ebb3f87 100644 --- a/src/include/mm_player_priv.h +++ b/src/include/mm_player_priv.h @@ -929,6 +929,7 @@ void _mmplayer_gst_decode_pad_removed(GstElement *elem, GstPad *new_pad, gpointe void _mmplayer_gst_decode_no_more_pads(GstElement *elem, gpointer data); void _mmplayer_gst_decode_drained(GstElement *bin, gpointer data); void _mmplayer_gst_about_to_finish(GstElement *bin, gpointer data); +int _mmplayer_update_not_supported_codec_info(mmplayer_t *player, const gchar *factory_class, const gchar *mime); void _mmplayer_gst_decode_unknown_type(GstElement *elem, GstPad *pad, GstCaps *caps, gpointer data); gboolean _mmplayer_gst_decode_autoplug_continue(GstElement *bin, GstPad *pad, GstCaps *caps, gpointer data); void _mmplayer_pipeline_complete(GstElement *decodebin, gpointer data); diff --git a/src/mm_player_gst.c b/src/mm_player_gst.c index e5e3aa4..9111fac 100644 --- a/src/mm_player_gst.c +++ b/src/mm_player_gst.c @@ -2915,6 +2915,7 @@ __mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * c mmplayer_t *player = (mmplayer_t *)data; mmplayer_track_type_e type = MM_PLAYER_TRACK_TYPE_MAX; GstCaps *caps = gst_stream_get_caps(stream); + GstStructure *caps_structure = NULL; gchar *caps_str = NULL; LOGD("Stream type %s flags 0x%x", @@ -2924,20 +2925,32 @@ __mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * c if (caps) { caps_str = gst_caps_to_string(caps); + caps_structure = gst_caps_get_structure(caps, 0); + const gchar *mime = gst_structure_get_name(caps_structure); + LOGD(" caps: %s", caps_str); + + for (int idx = 0; player->ini.unsupported_codec_keyword[idx][0] != '\0'; idx++) { + if (caps_str && strstr(caps_str, player->ini.unsupported_codec_keyword[idx])) { + LOGW("skip [%s] by unsupported codec keyword [%s]", + mime, player->ini.unsupported_codec_keyword[idx]); + + _mmplayer_update_not_supported_codec_info(player, NULL, mime); + ret = 0; + goto EXIT; + } + } } switch (stype) { case GST_STREAM_TYPE_AUDIO: { - GstStructure *caps_structure = NULL; gint samplerate = 0; gint channels = 0; type = MM_PLAYER_TRACK_TYPE_AUDIO; - if (caps) { - caps_structure = gst_caps_get_structure(caps, 0); + if (caps_structure) { gst_structure_get_int(caps_structure, "rate", &samplerate); gst_structure_get_int(caps_structure, "channels", &channels); @@ -2954,7 +2967,6 @@ __mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * c } case GST_STREAM_TYPE_VIDEO: { - GstStructure *caps_structure = NULL; gint stype = 0; gint width = 0; @@ -2973,8 +2985,7 @@ __mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * c goto EXIT; } - if (caps) { - caps_structure = gst_caps_get_structure(caps, 0); + if (caps_structure) { gst_structure_get_int(caps_structure, "width", &width); if (width != 0) { diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 8db03cc..374d4b3 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -156,7 +156,6 @@ static int __mmplayer_change_selector_pad(mmplayer_t *player, mmplayer_track_typ static gboolean __mmplayer_check_subtitle(mmplayer_t *player); static int __mmplayer_handle_missed_plugin(mmplayer_t *player); -static int __mmplayer_check_not_supported_codec(mmplayer_t *player, const gchar *factory_class, const gchar *mime); static void __mmplayer_add_sink(mmplayer_t *player, GstElement *sink, gboolean first); static void __mmplayer_del_sink(mmplayer_t *player, GstElement *sink); static void __mmplayer_release_signal_connection(mmplayer_t *player, mmplayer_signal_type_e type); @@ -6292,8 +6291,8 @@ ERROR: return FALSE; } -static int -__mmplayer_check_not_supported_codec(mmplayer_t *player, const gchar *factory_class, const gchar *mime) +int +_mmplayer_update_not_supported_codec_info(mmplayer_t *player, const gchar *factory_class, const gchar *mime) { MMPLAYER_FENTER(); @@ -6890,7 +6889,7 @@ _mmplayer_gst_decode_unknown_type(GstElement *elem, GstPad *pad, MMPLAYER_FREEIF(caps_str); /* There is no available codec. */ - __mmplayer_check_not_supported_codec(player, klass, mime); + _mmplayer_update_not_supported_codec_info(player, klass, mime); } gboolean |