MMPLAYER_FLEAVE();
}
+static gboolean
+__mmplayer_stream_equal(gconstpointer stream1, gconstpointer stream2)
+{
+ const gchar *stream1_id = gst_stream_get_stream_id((GstStream *)stream1);
+ const gchar *stream2_id = gst_stream_get_stream_id((GstStream *)stream2);
+
+ return (g_strcmp0(stream1_id, stream2_id) == 0);
+}
+
+static gboolean
+__mmplayer_has_duplicated_stream(mmplayer_t *player, GstStreamType stype, GstStream *stream)
+{
+ mmplayer_track_type_e type = MM_PLAYER_TRACK_TYPE_MAX;
+ MMPLAYER_FENTER();
+ MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE);
+
+ switch (stype) {
+ case GST_STREAM_TYPE_AUDIO:
+ type = MM_PLAYER_TRACK_TYPE_AUDIO;
+ break;
+ case GST_STREAM_TYPE_VIDEO:
+ type = MM_PLAYER_TRACK_TYPE_VIDEO;
+ break;
+ case GST_STREAM_TYPE_TEXT:
+ type = MM_PLAYER_TRACK_TYPE_TEXT;
+ break;
+ default:
+ LOGD("Skip not supported stream stype");
+ return FALSE;
+ }
+
+ return g_ptr_array_find_with_equal_func(player->track[type].streams, stream, __mmplayer_stream_equal, NULL);
+}
+
static gint
__mmplayer_gst_select_stream (GstElement * uridecodebin, GstStreamCollection * collection,
GstStream * stream, gpointer data)
gst_stream_get_stream_flags(stream));
LOGD(" ID: %s", gst_stream_get_stream_id(stream));
+ if (__mmplayer_has_duplicated_stream(player, stype, stream)) {
+ LOGD("Already added stream, skip it");
+ ret = 0;
+ goto EXIT;
+ }
+
if (caps) {
caps_str = gst_caps_to_string(caps);
caps_structure = gst_caps_get_structure(caps, 0);