rpms/gstreamer-plugins-base/F-11 gst-cdparanoia-buffering.patch, NONE, 1.1 gstreamer-plugins-base.spec, 1.74, 1.75

Bastien Nocera hadess at fedoraproject.org
Wed Jun 24 13:35:07 UTC 2009


Author: hadess

Update of /cvs/pkgs/rpms/gstreamer-plugins-base/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29658

Modified Files:
	gstreamer-plugins-base.spec 
Added Files:
	gst-cdparanoia-buffering.patch 
Log Message:
* Wed Jun 24 2009 Bastien Nocera <bnocera at redhat.com> 0.10.23-3
- Reduce the buffer size in cdparanoia for cdparanoia 10.2 (#507453)

gst-cdparanoia-buffering.patch:

--- NEW FILE gst-cdparanoia-buffering.patch ---
diff --git a/ext/cdparanoia/gstcdparanoiasrc.c b/ext/cdparanoia/gstcdparanoiasrc.c
index fc755f7..c5bdf3c 100644
--- a/ext/cdparanoia/gstcdparanoiasrc.c
+++ b/ext/cdparanoia/gstcdparanoiasrc.c
@@ -43,13 +43,15 @@ enum
   PROP_READ_SPEED,
   PROP_PARANOIA_MODE,
   PROP_SEARCH_OVERLAP,
-  PROP_GENERIC_DEVICE
+  PROP_GENERIC_DEVICE,
+  PROP_CACHE_SIZE
 };
 
 #define DEFAULT_READ_SPEED               4 /* avoid mad spinning ad noise */
 #define DEFAULT_SEARCH_OVERLAP          -1
 #define DEFAULT_PARANOIA_MODE            PARANOIA_MODE_FRAGMENT
 #define DEFAULT_GENERIC_DEVICE           NULL
+#define DEFAULT_CACHE_SIZE              -1
 
 GST_DEBUG_CATEGORY_STATIC (gst_cd_paranoia_src_debug);
 #define GST_CAT_DEFAULT gst_cd_paranoia_src_debug
@@ -125,6 +127,7 @@ gst_cd_paranoia_src_init (GstCdParanoiaSrc * src, GstCdParanoiaSrcClass * klass)
   src->paranoia_mode = DEFAULT_PARANOIA_MODE;
   src->read_speed = DEFAULT_READ_SPEED;
   src->generic_device = g_strdup (DEFAULT_GENERIC_DEVICE);
+  src->cache_size = DEFAULT_CACHE_SIZE;
 }
 
 static void
@@ -158,6 +161,11 @@ gst_cd_paranoia_src_class_init (GstCdParanoiaSrcClass * klass)
           "Force minimum overlap search during verification to n sectors", -1,
           75, DEFAULT_SEARCH_OVERLAP,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CACHE_SIZE,
+      g_param_spec_int ("cache-size", "Cache size",
+          "Set CD cache size to n sectors", -1,
+          G_MAXINT, DEFAULT_CACHE_SIZE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /* FIXME: we don't really want signals for this, but messages on the bus,
    * but then we can't check any longer whether anyone is interested in them */
@@ -245,6 +253,8 @@ gst_cd_paranoia_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
 
   if (src->search_overlap != -1)
     paranoia_overlapset (src->p, src->search_overlap);
+  if (src->cache_size != -1)
+    paranoia_cachemodel_size (src->p, src->cache_size);
 
   src->next_sector = -1;
 
@@ -442,6 +452,10 @@ gst_cd_paranoia_src_set_property (GObject * object, guint prop_id,
       src->search_overlap = g_value_get_int (value);
       break;
     }
+    case PROP_CACHE_SIZE:{
+      src->cache_size = g_value_get_int (value);
+      break;
+    }
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -471,6 +485,9 @@ gst_cd_paranoia_src_get_property (GObject * object, guint prop_id,
     case PROP_SEARCH_OVERLAP:
       g_value_set_int (value, src->search_overlap);
       break;
+    case PROP_CACHE_SIZE:
+      g_value_set_int (value, src->cache_size);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff --git a/ext/cdparanoia/gstcdparanoiasrc.h b/ext/cdparanoia/gstcdparanoiasrc.h
index c9f5ba0..6cec23c 100644
--- a/ext/cdparanoia/gstcdparanoiasrc.h
+++ b/ext/cdparanoia/gstcdparanoiasrc.h
@@ -63,6 +63,7 @@ struct _GstCdParanoiaSrc {
   gint             paranoia_mode;
   gint             read_speed;
   gint             search_overlap;
+  gint             cache_size;
 
   gchar           *generic_device;
 };
diff --git a/ext/cdparanoia/gstcdparanoiasrc.c b/ext/cdparanoia/gstcdparanoiasrc.c
index c5bdf3c..e89482b 100644
--- a/ext/cdparanoia/gstcdparanoiasrc.c
+++ b/ext/cdparanoia/gstcdparanoiasrc.c
@@ -161,9 +161,16 @@ gst_cd_paranoia_src_class_init (GstCdParanoiaSrcClass * klass)
           "Force minimum overlap search during verification to n sectors", -1,
           75, DEFAULT_SEARCH_OVERLAP,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstCdParanoiaSrc:cache-size
+   *
+   * Set CD cache size to n sectors (-1 = auto)
+   *
+   * Since: 0.10.24
+   */
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CACHE_SIZE,
       g_param_spec_int ("cache-size", "Cache size",
-          "Set CD cache size to n sectors", -1,
+          "Set CD cache size to n sectors (-1 = auto)", -1,
           G_MAXINT, DEFAULT_CACHE_SIZE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
@@ -201,7 +208,7 @@ static gboolean
 gst_cd_paranoia_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
 {
   GstCdParanoiaSrc *src = GST_CD_PARANOIA_SRC (cddabasesrc);
-  gint i;
+  gint i, cache_size;
 
   GST_DEBUG_OBJECT (src, "trying to open device %s (generic-device=%s) ...",
       device, GST_STR_NULL (src->generic_device));
@@ -250,11 +257,23 @@ gst_cd_paranoia_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
     goto init_failed;
 
   paranoia_modeset (src->p, src->paranoia_mode);
+  GST_INFO_OBJECT (src, "set paranoia mode to 0x%02x", src->paranoia_mode);
 
-  if (src->search_overlap != -1)
+  if (src->search_overlap != -1) {
     paranoia_overlapset (src->p, src->search_overlap);
-  if (src->cache_size != -1)
-    paranoia_cachemodel_size (src->p, src->cache_size);
+    GST_INFO_OBJECT (src, "search overlap set to %u", src->search_overlap);
+  }
+
+  cache_size = src->cache_size;
+  if (cache_size == -1) {
+    /* if paranoia mode is low (the default), assume we're doing playback */
+    if (src->paranoia_mode <= PARANOIA_MODE_FRAGMENT)
+      cache_size = 150;
+    else
+      cache_size = paranoia_cachemodel_size (src->p, -1);
+  }
+  paranoia_cachemodel_size (src->p, cache_size);
+  GST_INFO_OBJECT (src, "set cachemodel size to %u", cache_size);
 
   src->next_sector = -1;
 


Index: gstreamer-plugins-base.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gstreamer-plugins-base/F-11/gstreamer-plugins-base.spec,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -p -r1.74 -r1.75
--- gstreamer-plugins-base.spec	19 Jun 2009 14:58:10 -0000	1.74
+++ gstreamer-plugins-base.spec	24 Jun 2009 13:34:36 -0000	1.75
@@ -5,7 +5,7 @@
 
 Name: 		%{gstreamer}-plugins-base
 Version: 	0.10.23
-Release:  	2%{?dist}
+Release:  	3%{?dist}
 Summary: 	GStreamer streaming media framework base plug-ins
 
 Group: 		Applications/Multimedia
@@ -18,6 +18,9 @@ Patch0:		gstpb-0.10.15-cd-speed.patch
 # http://bugzilla.gnome.org/show_bug.cgi?id=586356
 # https://bugzilla.redhat.com/show_bug.cgi?id=506767
 Patch1:		0001-Move-plugin-selector-to-gst-plugins-base.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=507453
+# http://bugzilla.gnome.org/show_bug.cgi?id=586331
+Patch2:		gst-cdparanoia-buffering.patch
 BuildRequires:	automake autoconf libtool
 
 Requires:       %{gstreamer} >= %{_gst}
@@ -58,6 +61,7 @@ This package contains a set of well-main
 %setup -q -n gst-plugins-base-%{version}
 %patch0 -p1 -b .cd-speed
 %patch1 -p1 -b .input-selector
+%patch2 -p1 -b .cdparanoia
 libtoolize -f
 autoreconf
 
@@ -254,6 +258,9 @@ GStreamer Base Plugins library developme
 %doc %{_datadir}/gtk-doc/html/gst-plugins-base-plugins-%{majorminor}
 
 %changelog
+* Wed Jun 24 2009 Bastien Nocera <bnocera at redhat.com> 0.10.23-3
+- Reduce the buffer size in cdparanoia for cdparanoia 10.2 (#507453)
+
 * Fri Jun 19 2009 Bastien Nocera <bnocera at redhat.com> 0.10.23-2
 - Move input-selector plugin from -bad to -base (#506767)
 




More information about the fedora-extras-commits mailing list