rhythmbox r5543 - in trunk: . backends/gstreamer



Author: jmatthew
Date: Sun Jan 13 08:02:26 2008
New Revision: 5543
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=5543&view=rev

Log:
2008-01-13  Jonathan Matthew  <jonathan d14n org>

	* backends/gstreamer/rb-player-gst-xfade.c: (create_stream):
	For audio CD playback, try to disable paranoia mode and reduce read
	speed, and extract the device path from the URI fragment.  Fixes
	#507538.


Modified:
   trunk/ChangeLog
   trunk/backends/gstreamer/rb-player-gst-xfade.c

Modified: trunk/backends/gstreamer/rb-player-gst-xfade.c
==============================================================================
--- trunk/backends/gstreamer/rb-player-gst-xfade.c	(original)
+++ trunk/backends/gstreamer/rb-player-gst-xfade.c	Sun Jan 13 08:02:26 2008
@@ -1931,6 +1931,27 @@
 		g_object_set (stream->source, "iradio-mode", TRUE, NULL);
 	}
 
+	/* for audio CD playback, try to reduce read speed and disable error correction,
+	 * and handle our cdda://1#/dev/cdrom hack for specifying the device.
+	 */
+	if (g_str_has_prefix (uri, "cdda://")) {
+		GObjectClass *klass = G_OBJECT_GET_CLASS (stream->source);
+		if (g_object_class_find_property (klass, "paranoia-mode")) {
+			g_object_set (stream->source, "paranoia-mode", 0, NULL);
+		}
+		if (g_object_class_find_property (klass, "read-speed")) {
+			g_object_set (stream->source, "read-speed", 1, NULL);
+		}
+		if (g_object_class_find_property (klass, "device")) {
+			char *device;
+
+			device = g_utf8_strchr (uri, -1, '#');
+			if (device != NULL) {
+				g_object_set (stream->source, "device", device+1, NULL);
+			}
+		}
+	}
+
 	if (g_getenv ("USE_DECODEBIN2") != NULL) {
 		stream->decoder = gst_element_factory_make ("decodebin2", NULL);
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]