guix-commits
[Top][All Lists]
Advanced

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

01/02: gnu: gstreamer: Fix buffer offset problem.


From: guix-commits
Subject: 01/02: gnu: gstreamer: Fix buffer offset problem.
Date: Sat, 29 Jun 2019 17:23:29 -0400 (EDT)

mbakke pushed a commit to branch master
in repository guix.

commit 55d1d9eb2f0051404d0562622d5d85b701f5a973
Author: Marius Bakke <address@hidden>
Date:   Sat Jun 29 19:07:40 2019 +0200

    gnu: gstreamer: Fix buffer offset problem.
    
    * gnu/packages/patches/gstreamer-buffer-reset-offset.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    * gnu/packages/gstreamer.scm (gstreamer)[source](patches): New field.
    [arguments]: Do not disable any tests.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/gstreamer.scm                         | 15 +-----
 .../patches/gstreamer-buffer-reset-offset.patch    | 59 ++++++++++++++++++++++
 3 files changed, 62 insertions(+), 13 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 8f63d0b..0f4cb2a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -901,6 +901,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/guile-relocatable.patch                 \
   %D%/packages/patches/guile-rsvg-pkgconfig.patch              \
   %D%/packages/patches/guile-emacs-fix-configure.patch         \
+  %D%/packages/patches/gstreamer-buffer-reset-offset.patch     \
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch       \
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk2-theme-paths.patch                  \
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 2a818e0..13c2c2f 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -110,6 +110,7 @@ arrays of data.")
       (uri (string-append
             "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-";
             version ".tar.xz"))
+      (patches (search-patches "gstreamer-buffer-reset-offset.patch"))
       (sha256
        (base32
         "003wy1p1in85p9sr5jsyhbnwqaiwz069flwkhyx7qhxy31qjz3hf"))))
@@ -119,19 +120,7 @@ arrays of data.")
      `(#:configure-flags
        (list (string-append "--with-html-dir="
                             (assoc-ref %outputs "doc")
-                            "/share/gtk-doc/html"))
-
-       ,@(if (not (target-64bit?))
-           ;; Skip test that fails on 32-bit systems:
-           ;; <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/316>.
-           `(#:phases (modify-phases %standard-phases
-                        (add-before 'check 'disable-gstbufferpool-test
-                          (lambda _
-                            (substitute* "tests/check/Makefile"
-                              (("^[[:blank:]]+gst/gstbufferpool.*$")
-                               ""))
-                              #t))))
-           '())))
+                            "/share/gtk-doc/html"))))
     (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/patches/gstreamer-buffer-reset-offset.patch 
b/gnu/packages/patches/gstreamer-buffer-reset-offset.patch
new file mode 100644
index 0000000..024892a
--- /dev/null
+++ b/gnu/packages/patches/gstreamer-buffer-reset-offset.patch
@@ -0,0 +1,59 @@
+Fix a buffer offset problem in GStreamer 1.16.  Initially reported by Mark H.
+Weaver in 
<https://lists.gnu.org/archive/html/guix-devel/2019-06/msg00140.html>.
+
+See also <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/316>.
+
+From 1734c9fc1a4f99b165383ae1eb02f04e0844a00c Mon Sep 17 00:00:00 2001
+From: Nicolas Dufresne <address@hidden>
+Date: Sat, 29 Jun 2019 09:22:05 -0400
+Subject: [PATCH] bufferpool: Fix the buffer size reset code
+
+The offset in gst_buffer_resize() is additive. So to move back the
+offset to zero, we need to pass the opposite of the current offset. This
+was raised through the related unit test failingon 32bit as on 64bit
+the alignment padding was enough to hide the issue. The test was
+modified to also fail on 64bit. This patch will remove spurious
+assertions like:
+
+  assertion 'bufmax >= bufoffs + offset + size' failed
+
+Fixes #316
+---
+ gst/gstbufferpool.c             | 7 +++++--
+ tests/check/gst/gstbufferpool.c | 2 +-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c
+index e5c7a5872..619860e63 100644
+--- a/gst/gstbufferpool.c
++++ b/gst/gstbufferpool.c
+@@ -1222,8 +1222,11 @@ default_reset_buffer (GstBufferPool * pool, GstBuffer * 
buffer)
+   GST_BUFFER_OFFSET_END (buffer) = GST_BUFFER_OFFSET_NONE;
+ 
+   /* if the memory is intact reset the size to the full size */
+-  if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY))
+-    gst_buffer_resize (buffer, 0, pool->priv->size);
++  if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY)) {
++    gsize offset;
++    gst_buffer_get_sizes (buffer, &offset, NULL);
++    gst_buffer_resize (buffer, -offset, pool->priv->size);
++  }
+ 
+   /* remove all metadata without the POOLED flag */
+   gst_buffer_foreach_meta (buffer, remove_meta_unpooled, pool);
+diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c
+index f0c3c8d8e..dd9b2dc03 100644
+--- a/tests/check/gst/gstbufferpool.c
++++ b/tests/check/gst/gstbufferpool.c
+@@ -190,7 +190,7 @@ GST_START_TEST (test_buffer_modify_discard)
+   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
+   buffer_track_destroy (buf, &dcount);
+   /* do resize, as we didn't modify the memory, pool should reuse this buffer 
*/
+-  gst_buffer_resize (buf, 5, 2);
++  gst_buffer_resize (buf, 8, 2);
+   gst_buffer_unref (buf);
+ 
+   /* buffer should've gone back into pool */
+-- 
+2.22.0
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]