[gstreamer-plugins-bad-free] Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)

Hans de Goede jwrdegoede at fedoraproject.org
Fri Jun 8 16:31:24 UTC 2012


commit ef2d6c3f6695ead55e79af37e0e7c5334a5b929c
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Jun 8 18:31:28 2012 +0200

    Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
    
    - Re-enable building of -extras package accidentally disabled by the spec-file
      re-organization done in 0.10.23-3
    - Add teletextdec and musicbrainz plugins to -extras
    - Minor spec-file cleanups

 ...rabin-Fix-spelling-error-in-debug-logging.patch |   26 ++++
 ...dd-a-camerabin_create_view_finder_caps-he.patch |  121 ++++++++++++++++++++
 ...dd-gst_camerabin_get_video_source_propert.patch |   97 ++++++++++++++++
 ...et-src_filter-and-zoom_src_filter-caps-wh.patch |   74 ++++++++++++
 gstreamer-plugins-bad-free.spec                    |   51 ++++++---
 5 files changed, 351 insertions(+), 18 deletions(-)
---
diff --git a/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch b/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
new file mode 100644
index 0000000..f98e03a
--- /dev/null
+++ b/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
@@ -0,0 +1,26 @@
+From 62c58f011e7069aa45e980930cdfa2d937920a77 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 10:57:54 +0200
+Subject: [PATCH 1/4] gstcamerabin: Fix spelling error in debug logging
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index a17e02c..8a36970 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -1517,7 +1517,7 @@ gst_camerabin_set_capsfilter_caps (GstCameraBin * camera, GstCaps * new_caps)
+   if (camera->src_zoom_filter)
+     g_object_set (G_OBJECT (camera->src_zoom_filter), "caps", new_caps, NULL);
+   gst_camerabin_update_aspect_filter (camera, new_caps);
+-  GST_INFO_OBJECT (camera, "udpated");
++  GST_INFO_OBJECT (camera, "updated");
+ }
+ 
+ /*
+-- 
+1.7.10.2
+
diff --git a/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch b/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
new file mode 100644
index 0000000..3edb6ec
--- /dev/null
+++ b/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
@@ -0,0 +1,121 @@
+From a07a1138a8cf8ad1029845dfe4cfdf5a0a36e670 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 11:31:05 +0200
+Subject: [PATCH 2/4] camerabin: Add a camerabin_create_view_finder_caps()
+ helper function
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c |   72 +++++++++++++++++++++++-------------------
+ 1 file changed, 40 insertions(+), 32 deletions(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index 8a36970..3f87ff9 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -505,22 +505,15 @@ GST_BOILERPLATE_FULL (GstCameraBin, gst_camerabin, GstPipeline,
+  */
+ 
+ /*
+- * camerabin_setup_src_elements:
++ * camerabin_create_view_finder_caps:
+  * @camera: camerabin object
+  *
+- * This function updates camerabin capsfilters according
+- * to fps, resolution and zoom that have been configured
+- * to camerabin.
++ * This function creates new view_finder_caps, according to
++ * fps and resolution that have been configured to camerabin.
+  */
+-static void
+-camerabin_setup_src_elements (GstCameraBin * camera)
++static GstCaps *camerabin_create_view_finder_caps (GstCameraBin * camera)
+ {
+   GstStructure *st;
+-  GstCaps *new_caps;
+-  gboolean detect_framerate = FALSE;
+-
+-  /* clear video update status */
+-  camera->video_capture_caps_update = FALSE;
+ 
+   if (!camera->view_finder_caps) {
+     st = gst_structure_from_string (CAMERABIN_DEFAULT_VF_CAPS, NULL);
+@@ -529,39 +522,54 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+             0));
+   }
+ 
+-  gst_camerabin_monitor_video_source_properties (camera);
+-
+   if (camera->app_width > 0 && camera->app_height > 0) {
+     gst_structure_set (st,
+         "width", G_TYPE_INT, camera->app_width,
+         "height", G_TYPE_INT, camera->app_height, NULL);
+   }
+ 
+-  if (camera->app_fps_n > 0 && camera->app_fps_d > 0) {
+-    if (camera->night_mode) {
+-      GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
+-      camera->pre_night_fps_n = camera->app_fps_n;
+-      camera->pre_night_fps_d = camera->app_fps_d;
+-      detect_framerate = TRUE;
+-    } else {
+-      gst_structure_set (st,
+-          "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
+-          camera->app_fps_d, NULL);
+-      new_caps = gst_caps_new_full (st, NULL);
+-    }
++  if (!camera->night_mode && camera->app_fps_n > 0 && camera->app_fps_d > 0) {
++    gst_structure_set (st,
++        "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
++        camera->app_fps_d, NULL);
+   } else {
+-    GST_DEBUG_OBJECT (camera, "no framerate specified");
+-    detect_framerate = TRUE;
+-  }
+-
+-  if (detect_framerate) {
+-    GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
+     /* Remove old framerate if any */
+     if (gst_structure_has_field (st, "framerate")) {
+       gst_structure_remove_field (st, "framerate");
+     }
+-    new_caps = gst_caps_new_full (st, NULL);
++  }
++
++  /* The returned caps take ownership of the structure st */
++  return gst_caps_new_full (st, NULL);
++}
+ 
++/*
++ * camerabin_setup_src_elements:
++ * @camera: camerabin object
++ *
++ * This function updates camerabin capsfilters according
++ * to fps, resolution and zoom that have been configured
++ * to camerabin.
++ */
++static void
++camerabin_setup_src_elements (GstCameraBin * camera)
++{
++  GstCaps *new_caps;
++
++  /* clear video update status */
++  camera->video_capture_caps_update = FALSE;
++
++  gst_camerabin_monitor_video_source_properties (camera);
++
++  new_caps = camerabin_create_view_finder_caps (camera);
++
++  if (camera->night_mode || camera->app_fps_n <= 0 || camera->app_fps_d <= 0) {
++    if (camera->night_mode) {
++      GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
++      camera->pre_night_fps_n = camera->app_fps_n;
++      camera->pre_night_fps_d = camera->app_fps_d;
++    }
++    GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
+     /* Set allowed framerate for the resolution */
+     gst_camerabin_set_allowed_framerate (camera, new_caps);
+   }
+-- 
+1.7.10.2
+
diff --git a/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch b/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
new file mode 100644
index 0000000..3950bb7
--- /dev/null
+++ b/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
@@ -0,0 +1,97 @@
+From 1ef6977002ef18631f81646f198ef6a667ef8f73 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 11:41:17 +0200
+Subject: [PATCH 3/4] camerabin: Add
+ gst_camerabin_get_video_source_properties() helper
+ function
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c |   31 +++++++++++++++++++++++++------
+ 1 file changed, 25 insertions(+), 6 deletions(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index 3f87ff9..a36d5b5 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -347,6 +347,7 @@ static void gst_camerabin_scene_mode_notify_cb (GObject * video_source,
+     GParamSpec * pspec, gpointer user_data);
+ static void gst_camerabin_zoom_notify_cb (GObject * video_source,
+     GParamSpec * pspec, gpointer user_data);
++static void gst_camerabin_get_video_source_properties (GstCameraBin * camera);
+ static void gst_camerabin_monitor_video_source_properties (GstCameraBin *
+     camera);
+ static void gst_camerabin_configure_format (GstCameraBin * camera,
+@@ -528,6 +529,8 @@ static GstCaps *camerabin_create_view_finder_caps (GstCameraBin * camera)
+         "height", G_TYPE_INT, camera->app_height, NULL);
+   }
+ 
++  gst_camerabin_get_video_source_properties (camera);
++
+   if (!camera->night_mode && camera->app_fps_n > 0 && camera->app_fps_d > 0) {
+     gst_structure_set (st,
+         "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
+@@ -559,8 +562,6 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+   /* clear video update status */
+   camera->video_capture_caps_update = FALSE;
+ 
+-  gst_camerabin_monitor_video_source_properties (camera);
+-
+   new_caps = camerabin_create_view_finder_caps (camera);
+ 
+   if (camera->night_mode || camera->app_fps_n <= 0 || camera->app_fps_d <= 0) {
+@@ -574,6 +575,8 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+     gst_camerabin_set_allowed_framerate (camera, new_caps);
+   }
+ 
++  gst_camerabin_monitor_video_source_properties (camera);
++
+   /* Set default zoom method */
+   if (camera->src_zoom_scale) {
+     g_object_set (camera->src_zoom_scale, "method",
+@@ -2660,6 +2663,26 @@ gst_camerabin_zoom_notify_cb (GObject * video_source, GParamSpec * pspec,
+ }
+ 
+ /*
++ * gst_camerabin_monitor_get_video_source_properties:
++ * @camera: camerabin object
++ *
++ * Get properties from video source photography interface property scene mode.
++ *
++ */
++static void
++gst_camerabin_get_video_source_properties (GstCameraBin * camera)
++{
++  if (GST_IS_ELEMENT (camera->src_vid_src) &&
++      gst_element_implements_interface (camera->src_vid_src,
++          GST_TYPE_PHOTOGRAPHY)) {
++    gint scene_mode;
++    g_object_get (G_OBJECT (camera->src_vid_src), "scene-mode", &scene_mode,
++        NULL);
++    camera->night_mode = scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
++  }
++}
++
++/*
+  * gst_camerabin_monitor_video_source_properties:
+  * @camera: camerabin object
+  *
+@@ -2674,15 +2697,11 @@ gst_camerabin_monitor_video_source_properties (GstCameraBin * camera)
+   if (GST_IS_ELEMENT (camera->src_vid_src) &&
+       gst_element_implements_interface (camera->src_vid_src,
+           GST_TYPE_PHOTOGRAPHY)) {
+-    gint scene_mode;
+     GST_DEBUG_OBJECT (camera,
+         "connecting to %" GST_PTR_FORMAT " - notify::scene-mode",
+         camera->src_vid_src);
+     g_signal_connect (G_OBJECT (camera->src_vid_src), "notify::scene-mode",
+         (GCallback) gst_camerabin_scene_mode_notify_cb, camera);
+-    g_object_get (G_OBJECT (camera->src_vid_src), "scene-mode", &scene_mode,
+-        NULL);
+-    camera->night_mode = scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
+ 
+     GST_DEBUG_OBJECT (camera,
+         "connecting to %" GST_PTR_FORMAT " - notify::zoom",
+-- 
+1.7.10.2
+
diff --git a/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch b/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
new file mode 100644
index 0000000..ade66be
--- /dev/null
+++ b/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
@@ -0,0 +1,74 @@
+From 9ea00bf5e7043cab7da93abcb345b2f5c65285de Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 13:39:37 +0200
+Subject: [PATCH 4/4] camerabin: Set src_filter and zoom_src_filter caps while
+ creating the pipeline
+
+We (Fedora) have been receiving bug reports for cheese, about cheese
+taking 30-60 seconds before showing video, and pausing the same amount of
+time when changing the resolution for example.
+
+I've managed to reproduce this with a Logitech Webcam Pro 9000, which
+supports a large list of resolutions at about 5 different framerates /
+resolution, in my case with an unmodified gst-plugins-bad-0.10.23, the
+camerabin_create_src_elements function takes approx 7 seconds.
+
+Running under gdb and interrupting the execution during these 7 seconds
+consistenly points to gst_caps_intersect_full.
+
+Part of the problem is cheese setting the
+GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION flag, which means that after
+the first ffmpegcsp element in the pipe the total number of caps is
+x resolutions * y framerates * z formats, where both x (due to the camera)
+and z (due to ffmpegcsp) being large. intersecting this with the capabilities
+of other parts of the pipeline simply leads to an explosion of combinations
+which pegs my core i5 CPU @3.1GHz for 7 seconds!
+
+This patch fixes this issue by setting up the capsfilter elements in the pipe
+with an initial filter, greatly reducing the number of combinations when doing
+cap intersecting.
+
+This reduces the time spend in camerabin_create_src_elements from approx 7
+to 0.2 seconds. And when patching cheese to use the default camerabin flags,
+(so removing the first ffmpegcsp element) from approx 0.7 to 0.04 seconds
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index a36d5b5..6d7d30f 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -606,6 +606,7 @@ camerabin_create_src_elements (GstCameraBin * camera)
+   gboolean ret = FALSE;
+   GstBin *cbin = GST_BIN (camera);
+   gchar *driver_name = NULL;
++  GstCaps *filter_caps;
+ 
+   /* Add application set or default video src element */
+   if (!(camera->src_vid_src = gst_camerabin_setup_default_element (cbin,
+@@ -625,6 +626,10 @@ camerabin_create_src_elements (GstCameraBin * camera)
+           gst_camerabin_create_and_add_element (cbin, "capsfilter",
+               "src-capsfilter")))
+     goto done;
++
++  filter_caps = camerabin_create_view_finder_caps (camera);
++  g_object_set (G_OBJECT (camera->src_filter), "caps", filter_caps, NULL);
++
+   if (camera->flags & GST_CAMERABIN_FLAG_SOURCE_RESIZE) {
+     if (!(camera->src_zoom_crop =
+             gst_camerabin_create_and_add_element (cbin, "videocrop",
+@@ -638,6 +643,8 @@ camerabin_create_src_elements (GstCameraBin * camera)
+             gst_camerabin_create_and_add_element (cbin, "capsfilter",
+                 "src-resize-capsfilter")))
+       goto done;
++    g_object_set (G_OBJECT (camera->src_zoom_filter), "caps", filter_caps,
++                  NULL);
+   }
+   if (camera->app_video_filter) {
+     if (!gst_camerabin_add_element (cbin, camera->app_video_filter)) {
+-- 
+1.7.10.2
+
diff --git a/gstreamer-plugins-bad-free.spec b/gstreamer-plugins-bad-free.spec
index 655dbcc..7f7ac3c 100644
--- a/gstreamer-plugins-bad-free.spec
+++ b/gstreamer-plugins-bad-free.spec
@@ -6,15 +6,15 @@
 
 # Turn of extras package on RHEL.
 %if ! 0%{?rhel}
-%bcond_with extras
-%else
 %bcond_without extras
+%else
+%bcond_with extras
 %endif
 
 Summary: GStreamer streaming media framework "bad" plug-ins
 Name: gstreamer-plugins-bad-free
 Version: 0.10.23
-Release: 5%{?dist}
+Release: 6%{?dist}
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
 Group: Applications/Multimedia
@@ -26,7 +26,11 @@ Source: gst-plugins-bad-free-%{version}.tar.xz
 Source1: gst-p-bad-cleanup.sh
 # Based on upstream 04909e2c50e68
 Patch0: vp8enc-bitrate-fix.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+# https://bugzilla.gnome.org/show_bug.cgi?id=677698 / rhbz#797188
+Patch1: 0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
+Patch2: 0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
+Patch3: 0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
+Patch4: 0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
 
 Requires: %{gstreamer} >= %{gst_minver}
 BuildRequires: %{gstreamer}-devel >= %{gst_minver}
@@ -69,6 +73,7 @@ BuildRequires: libdc1394-devel
 %endif
 BuildRequires: libkate-devel
 BuildRequires: libmodplug-devel
+BuildRequires: libmusicbrainz-devel
 BuildRequires: libtimidity-devel
 BuildRequires: libvdpau-devel
 BuildRequires: opencv-devel
@@ -78,6 +83,7 @@ BuildRequires: slv2-devel
 BuildRequires: soundtouch-devel
 BuildRequires: wildmidi-devel
 BuildRequires: zbar-devel
+BuildRequires: zvbi-devel
 %endif
 
 Obsoletes: gstreamer-plugins-flumpegdemux < 0.10.15-9
@@ -116,6 +122,7 @@ sources (mythtv), sinks (fbdev) and effects (pitch) which are not used
 very much and require additional libraries to be installed.
 %endif
 
+
 %package devel
 Summary: Development files for the GStreamer media framework "bad" plug-ins
 Group: Development/Libraries
@@ -150,30 +157,32 @@ aren't tested well enough, or the code is not of good enough quality.
 %prep
 %setup -q -n gst-plugins-bad-%{version}
 %patch0 -p1 -b .vp8enc_bitrate
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 
+
 %build
 %configure \
     --with-package-name="Fedora gstreamer-plugins-bad package" \
     --with-package-origin="http://download.fedora.redhat.com/fedora" \
     %{!?with_extras:--disable-fbdev --disable-decklink --disable-linsys} \
     --enable-debug --disable-static --enable-gtk-doc --enable-experimental \
-    --disable-divx
+    --disable-divx --disable-dts --disable-faac --disable-faad --disable-nas \
+    --disable-mimic --disable-libmms --disable-mpeg2enc --disable-mplex \
+    --disable-neon --disable-openal --disable-rtmp --disable-xvid
+make %{?_smp_mflags}
 
-%{__make} %{?_smp_mflags}
 
 %install
-%{__rm} -rf %{buildroot}
-%{__make} install DESTDIR="%{buildroot}"
+make install DESTDIR="$RPM_BUILD_ROOT"
 %find_lang gst-plugins-bad-%{majorminor}
 
 # Clean out files that should not be part of the rpm.
-%{__rm} -f %{buildroot}%{_libdir}/gstreamer-%{majorminor}/*.la
-%{__rm} -f %{buildroot}%{_libdir}/*.la
-
-
-%clean
-%{__rm} -rf %{buildroot}
+rm $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
+rm $RPM_BUILD_ROOT%{_libdir}/*.la
 
 
 %post -p /sbin/ldconfig
@@ -182,7 +191,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 
 
 %files -f gst-plugins-bad-%{majorminor}.lang
-%defattr(-,root,root,-)
 %doc AUTHORS COPYING README REQUIREMENTS
 #%{_datadir}/gstreamer-%{majorminor}
 %{_libdir}/libgstbasecamerabinsrc-%{majorminor}.so.*
@@ -290,7 +298,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 
 %if %{with extras}
 %files extras
-%defattr(-,root,root,-)
 # Plugins with external dependencies
 %{_libdir}/gstreamer-%{majorminor}/libgstassrender.so
 %{_libdir}/gstreamer-%{majorminor}/libgstcdaudio.so
@@ -308,7 +315,9 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 %{_libdir}/gstreamer-%{majorminor}/libgstschro.so
 %{_libdir}/gstreamer-%{majorminor}/libgstsdl.so
 %{_libdir}/gstreamer-%{majorminor}/libgstsoundtouch.so
+%{_libdir}/gstreamer-%{majorminor}/libgstteletextdec.so
 %{_libdir}/gstreamer-%{majorminor}/libgsttimidity.so
+%{_libdir}/gstreamer-%{majorminor}/libgsttrm.so
 %{_libdir}/gstreamer-%{majorminor}/libgstvdpau.so
 %{_libdir}/gstreamer-%{majorminor}/libgstwildmidi.so
 %{_libdir}/gstreamer-%{majorminor}/libgstzbar.so
@@ -319,7 +328,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 %endif
 
 %files devel
-%defattr(-,root,root,-)
 %{_libdir}/libgstbasecamerabinsrc-%{majorminor}.so
 %{_libdir}/libgstbasevideo-%{majorminor}.so
 %{_libdir}/libgstcodecparsers-%{majorminor}.so
@@ -343,11 +351,18 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
 %{_libdir}/pkgconfig/gstreamer-plugins-bad-%{majorminor}.pc
 
 %files devel-docs
-%defattr(-,root,root,-)
 %doc %{_datadir}/gtk-doc/html/gst-plugins-bad-plugins-%{majorminor}
 %doc %{_datadir}/gtk-doc/html/gst-plugins-bad-libs-%{majorminor}
 
+
 %changelog
+* Fri Jun 08 2012 Hans de Goede <hdegoede at redhat.com> - 0.10.23-6
+- Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
+- Re-enable building of -extras package accidentally disabled by the spec-file
+  re-organization done in 0.10.23-3
+- Add teletextdec and musicbrainz plugins to -extras
+- Minor spec-file cleanups
+
 * Fri Jun 01 2012 Karsten Hopp <karsten at redhat.com> 0.10.23-5
 - bump release and rebuild (linked with old libs on PPC)
 


More information about the scm-commits mailing list