rygel r406 - trunk/src/rygel
- From: zeeshanak svn gnome org
- To: svn-commits-list gnome org
- Subject: rygel r406 - trunk/src/rygel
- Date: Mon, 29 Dec 2008 16:10:03 +0000 (UTC)
Author: zeeshanak
Date: Mon Dec 29 16:10:03 2008
New Revision: 406
URL: http://svn.gnome.org/viewvc/rygel?rev=406&view=rev
Log:
Choose the highest ranking RTP depayloader.
Modified:
trunk/src/rygel/rygel-gst-stream.vala
Modified: trunk/src/rygel/rygel-gst-stream.vala
==============================================================================
--- trunk/src/rygel/rygel-gst-stream.vala (original)
+++ trunk/src/rygel/rygel-gst-stream.vala Mon Dec 29 16:10:03 2008
@@ -133,17 +133,28 @@
private dynamic Element? get_best_depay (GLib.List<PluginFeature> features,
Caps caps) {
- dynamic Element depay = null;
+ var relevant_factories = new GLib.List<ElementFactory> ();
+ // First construct a list of relevant factories
foreach (PluginFeature feature in features) {
var factory = (ElementFactory) feature;
if (factory.can_sink_caps (caps)) {
- depay = ElementFactory.make (factory.get_name (), null);
- break;
+ relevant_factories.append (factory);
}
}
- return depay;
+ if (relevant_factories.length () == 0) {
+ // No relevant factory available, hence no depayloader
+ return null;
+ }
+
+ // Then sort the list through their ranks
+ relevant_factories.sort (this.compare_factories);
+
+ // create an element of the top ranking factory and return it
+ var factory = relevant_factories.data;
+
+ return ElementFactory.make (factory.get_name (), null);
}
private bool rtp_depay_filter (PluginFeature feature) {
@@ -156,6 +167,13 @@
return factory.get_klass ().contains ("Depayloader");
}
+ private static int compare_factories (void *a, void *b) {
+ ElementFactory factory_a = (ElementFactory) a;
+ ElementFactory factory_b = (ElementFactory) b;
+
+ return (int) (factory_b.get_rank () - factory_a.get_rank ());
+ }
+
private void on_new_buffer (Element sink,
Buffer buffer,
Pad pad) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]