summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEunhye Choi <eunhae1.choi@samsung.com>2021-11-04 11:44:40 +0900
committerEunhye Choi <eunhae1.choi@samsung.com>2021-11-04 14:36:54 +0900
commita7b3158bb2311417aca878174de02724c45c0453 (patch)
tree569f3e4d546fbcdbcd5301150adb3f5385e1f94b
parent6a30303858b50d82ff6ee796fd8665c8db5a20df (diff)
downloadlibmm-player-a7b3158bb2311417aca878174de02724c45c0453.tar.gz
libmm-player-a7b3158bb2311417aca878174de02724c45c0453.tar.bz2
libmm-player-a7b3158bb2311417aca878174de02724c45c0453.zip
- skip unsupported codec with reference to ini keyword Change-Id: I8e444f130d0ccfc69d5c6e4181546fecb4b7fa5f
-rw-r--r--packaging/libmm-player.spec2
-rw-r--r--src/include/mm_player_priv.h1
-rw-r--r--src/mm_player_gst.c23
-rw-r--r--src/mm_player_priv.c7
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