From b0ec886cb97eb072b8cf73b2bc9894d7103921ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 9 May 2013 15:05:21 +0200 Subject: [PATCH] playbin2: Chose more balanced metric to compare ranks of decoder/sink combinations --- gst/playback/gstplaybin2.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c index 35fc9d9300..29cebdb321 100644 --- a/gst/playback/gstplaybin2.c +++ b/gst/playback/gstplaybin2.c @@ -3314,7 +3314,7 @@ avelement_compare (gconstpointer p1, gconstpointer p2) { GstAVElement *v1, *v2; GstPluginFeature *fd1, *fd2, *fs1, *fs2; - gint diff, v1_rank, v2_rank; + gint64 diff, v1_rank, v2_rank; v1 = (GstAVElement *) p1; v2 = (GstAVElement *) p2; @@ -3325,14 +3325,16 @@ avelement_compare (gconstpointer p1, gconstpointer p2) fd2 = (GstPluginFeature *) v2->dec; v1_rank = - gst_plugin_feature_get_rank (fd1) + gst_plugin_feature_get_rank (fs1); + gst_plugin_feature_get_rank (fd1) * gst_plugin_feature_get_rank (fs1); v2_rank = - gst_plugin_feature_get_rank (fd2) + gst_plugin_feature_get_rank (fs2); + gst_plugin_feature_get_rank (fd2) * gst_plugin_feature_get_rank (fs2); /* comparison based on the rank */ diff = v2_rank - v1_rank; - if (diff != 0) - return diff; + if (diff < 0) + return -1; + else if (diff > 0) + return 1; /* comparison based on number of common caps features */ diff = v2->n_comm_cf - v1->n_comm_cf;