[arch-commits] Commit in farstream-0.1/trunk (4 files)

Jan de Groot jgc at nymeria.archlinux.org
Thu Dec 12 11:06:40 UTC 2013


    Date: Thursday, December 12, 2013 @ 12:06:39
  Author: jgc
Revision: 201453

Update to branch snapshot, backport patch from 0.2.3 to fix fatal assertion with GStreamer, plug an additional memleak with that

Added:
  farstream-0.1/trunk/codec-discovery-intersect.patch
  farstream-0.1/trunk/rtp-memleak.patch
Modified:
  farstream-0.1/trunk/PKGBUILD
Deleted:
  farstream-0.1/trunk/farstream-0.1.2-introspection-tag-order.patch

-----------------------------------------------+
 PKGBUILD                                      |   38 ++++--
 codec-discovery-intersect.patch               |   72 +++++++++++++
 farstream-0.1.2-introspection-tag-order.patch |  132 ------------------------
 rtp-memleak.patch                             |   24 ++++
 4 files changed, 118 insertions(+), 148 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-12-12 05:19:50 UTC (rev 201452)
+++ PKGBUILD	2013-12-12 11:06:39 UTC (rev 201453)
@@ -5,7 +5,7 @@
 pkgname=farstream-0.1
 _pkgname=farstream
 pkgver=0.1.2
-pkgrel=2
+pkgrel=3
 pkgdesc="Audio/Video Communications Framework (legacy version)"
 arch=('i686' 'x86_64')
 url="http://www.freedesktop.org/wiki/Software/Farstream"
@@ -12,32 +12,38 @@
 license=('LGPL2.1')
 depends=('libnice' 'gstreamer0.10-base' 'gstreamer0.10-bad-plugins'
          'gstreamer0.10-good' 'gstreamer0.10-ffmpeg')
-makedepends=('gobject-introspection' 'gstreamer0.10-python' 'python2-gobject2')
-source=(http://freedesktop.org/software/$_pkgname/releases/$_pkgname/$_pkgname-$pkgver.tar.gz
+makedepends=('gobject-introspection' 'gstreamer0.10-python' 'python2-gobject2' 'git' 'gtk-doc')
+source=(git://git.collabora.co.uk/git/farstream.git#commit=54e28e95bed4f04bc95dae509c3724399c79fa29
         farstream-0.1.2-prefer-vp8.patch
-        farstream-0.1.2-introspection-tag-order.patch)
-sha256sums=('fa5a40597b47b59d124f7fd57f66704b030d576cdc0d90e107c7a592f05e73d9'
-            '5f8f2876bde0f21383b3d059c94914a2fcd63d45a1bb1b5cd2e2208cd2536da5'
-            'f540ea6f239e291f9ffc5b806cfea9f9cd0c4f13963e900719a5ee3a3f370124')
+        codec-discovery-intersect.patch
+        rtp-memleak.patch)
+sha256sums=('SKIP')
 
+prepare() {
+  cd farstream
+  patch -Np1 -i ../farstream-0.1.2-prefer-vp8.patch
+  patch -Np1 -i ../codec-discovery-intersect.patch
+  patch -Np1 -i ../rtp-memleak.patch
+}
+
 build() {
-  cd "$_pkgname-$pkgver"
-
-  patch -Np1 -i "$srcdir/farstream-0.1.2-prefer-vp8.patch"
-  patch -Np1 -i "$srcdir/farstream-0.1.2-introspection-tag-order.patch"
-
+  cd farstream
+  NOCONFIGURE=1 ./autogen.sh
   ./configure \
     --prefix=/usr \
     --with-package-name='Arch Linux Farstream 0.1 Package' \
     --with-package-origin='httpw://www.archlinux.org/' \
-    --disable-static
-  make
+    --enable-gtk-doc --disable-static
+  make -j1
 }
 
 package() {
-  cd "$_pkgname-$pkgver"
-
+  cd farstream
   make DESTDIR="$pkgdir" install
 }
 
 # vim:set ts=2 sw=2 et:
+sha256sums=('SKIP'
+            '5f8f2876bde0f21383b3d059c94914a2fcd63d45a1bb1b5cd2e2208cd2536da5'
+            '385d7c72e269bf48bd41937442d819a1e6d0f2472b903670a8a5555f5cb96586'
+            'b966312ccad90dd30b78ee2df49e9637b3b573e498668bcc58ac208f254440db')

Added: codec-discovery-intersect.patch
===================================================================
--- codec-discovery-intersect.patch	                        (rev 0)
+++ codec-discovery-intersect.patch	2013-12-12 11:06:39 UTC (rev 201453)
@@ -0,0 +1,72 @@
+From 50fffb08d941dce58ae48bf531faead8a4e22ed7 Mon Sep 17 00:00:00 2001
+From: Olivier Crête <olivier.crete at collabora.com>
+Date: Tue, 02 Apr 2013 23:13:06 +0000
+Subject: codec-discovery: Intersect different parts of the same caps to reduce them
+
+We do this because a caps may have the static payload in a separate structure from the encoding-name
+We just want both in the same structure
+---
+diff --git a/gst/fsrtpconference/fs-rtp-discover-codecs.c b/gst/fsrtpconference/fs-rtp-discover-codecs.c
+index 5530cc8..df316a4 100644
+--- a/gst/fsrtpconference/fs-rtp-discover-codecs.c
++++ b/gst/fsrtpconference/fs-rtp-discover-codecs.c
+@@ -384,7 +384,6 @@ validate_h263_codecs (CodecCap *codec_cap)
+   if (!rtp_struct)
+     return FALSE;
+ 
+-  /* If there no h263version, we accept everything */
+   encoding_name = gst_structure_get_string (rtp_struct, "encoding-name");
+ 
+   /* If there is no encoding name, we have a problem, lets refuse it */
+@@ -1300,15 +1299,44 @@ get_plugins_filtered_from_caps (FilterFunc filter,
+     else
+     {
+       gint i;
+-      for (i = 0; i < gst_caps_get_size (matched_caps); i++)
++      GPtrArray *capslist = g_ptr_array_new_with_free_func (
++        (GDestroyNotify) gst_caps_unref);
++
++      while (gst_caps_get_size (matched_caps) > 0)
+       {
+-        GstCaps *cur_caps =
+-            gst_caps_copy_nth (matched_caps, i);
++        GstCaps *stolencaps = gst_caps_new_full (
++          gst_caps_steal_structure (matched_caps, 0), NULL);
++        gboolean got_match = FALSE;
++
++        for (i = 0; i < capslist->len; i++)
++        {
++          GstCaps *intersect = gst_caps_intersect (stolencaps,
++              g_ptr_array_index (capslist, i));
++
++          if (gst_caps_is_empty (intersect))
++          {
++            gst_caps_unref (intersect);
++          }
++          else
++          {
++            got_match = TRUE;
++            gst_caps_unref (g_ptr_array_index (capslist, i));
++            g_ptr_array_index (capslist, i) = intersect;
++          }
++        }
++
++        if (got_match)
++          gst_caps_unref (stolencaps);
++        else
++          g_ptr_array_add (capslist, stolencaps);
+ 
+-        list = create_codec_cap_list (factory, direction, list, cur_caps);
+-        gst_caps_unref (cur_caps);
+       }
+       gst_caps_unref (matched_caps);
++
++      for (i = 0; i < capslist->len; i++)
++        list = create_codec_cap_list (factory, direction, list,
++            g_ptr_array_index (capslist, i));
++      g_ptr_array_unref (capslist);
+     }
+   }
+ 
+--
+cgit v0.9.0.3

Deleted: farstream-0.1.2-introspection-tag-order.patch
===================================================================
--- farstream-0.1.2-introspection-tag-order.patch	2013-12-12 05:19:50 UTC (rev 201452)
+++ farstream-0.1.2-introspection-tag-order.patch	2013-12-12 11:06:39 UTC (rev 201453)
@@ -1,132 +0,0 @@
-From 39450457190675716c8e66700e35b05334a6a1a0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete at collabora.com>
-Date: Fri, 25 May 2012 17:06:59 -0400
-Subject: [PATCH] Gtk-doc tags belong after the description
-
----
- farstream/fs-session.c |   16 +++++++---------
- farstream/fs-stream.c  |   15 ++++++---------
- 2 files changed, 13 insertions(+), 18 deletions(-)
-
-diff --git a/farstream/fs-session.c b/farstream/fs-session.c
-index 80794d1..abb1bc3 100644
---- a/farstream/fs-session.c
-+++ b/farstream/fs-session.c
-@@ -270,9 +270,6 @@ fs_session_class_init (FsSessionClass *klass)
-   /**
-    * FsSession:codec-preferences:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the current preferences list for the local codecs. It is
-    * set by the user to specify the codec options and priorities. The user may
-    * change its value with fs_session_set_codec_preferences() at any time
-@@ -283,6 +280,9 @@ fs_session_class_init (FsSessionClass *klass)
-    * or %FS_CODEC_ID_ANY. If the encoding name is "reserve-pt", then the
-    * payload type of the codec will be "reserved" and not be used by any
-    * dynamically assigned payload type.
-+   *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_CODEC_PREFERENCES,
-@@ -296,9 +296,6 @@ fs_session_class_init (FsSessionClass *klass)
-   /**
-    * FsSession:codecs:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the list of codecs used for this session. It will include the
-    * codecs and payload type used to receive media on this session. It will
-    * also include any configuration parameter that must be transmitted reliably
-@@ -317,6 +314,8 @@ fs_session_class_init (FsSessionClass *klass)
-    * It is a #GList of #FsCodec. User must free this codec list using
-    * fs_codec_list_destroy() when done.
-    *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_CODECS,
-@@ -329,9 +328,6 @@ fs_session_class_init (FsSessionClass *klass)
-   /**
-    * FsSession:codecs-without-config:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the same list of codecs as #FsSession:codecs without
-    * the configuration information that describes the data sent. It is suitable
-    * for configurations where a list of codecs is shared by many senders.
-@@ -349,6 +345,8 @@ fs_session_class_init (FsSessionClass *klass)
-    * It is a #GList of #FsCodec. User must free this codec list using
-    * fs_codec_list_destroy() when done.
-    *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_CODECS_WITHOUT_CONFIG,
-diff --git a/farstream/fs-stream.c b/farstream/fs-stream.c
-index b9e1320..110641d 100644
---- a/farstream/fs-stream.c
-+++ b/farstream/fs-stream.c
-@@ -176,13 +176,12 @@ fs_stream_class_init (FsStreamClass *klass)
-   /**
-    * FsStream:remote-codecs:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the list of remote codecs for this stream. They must be set by the
-    * user as soon as they are known using fs_stream_set_remote_codecs()
-    * (generally through external signaling). It is a #GList of #FsCodec.
-    *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_REMOTE_CODECS,
-@@ -195,15 +194,14 @@ fs_stream_class_init (FsStreamClass *klass)
-   /**
-    * FsStream:negotiated-codecs:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the list of negotiatied codecs, it is the same list as the list
-    * of #FsCodec from the parent #FsSession, except that the codec config data
-    * has been replaced with the data from the remote codecs for this stream.
-    * This is the list of #FsCodec used to receive data from this stream.
-    * It is a #GList of #FsCodec.
-    *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_NEGOTIATED_CODECS,
-@@ -216,9 +214,6 @@ fs_stream_class_init (FsStreamClass *klass)
-   /**
-    * FsStream:current-recv-codecs:
-    *
--   * Type: GLib.List(FsCodec)
--   * Transfer: full
--   *
-    * This is the list of codecs that have been received by this stream.
-    * The user must free the list if fs_codec_list_destroy().
-    * The "farstream-recv-codecs-changed" message is send on the #GstBus
-@@ -228,6 +223,8 @@ fs_stream_class_init (FsStreamClass *klass)
-    * also be emitted if the pad already exists, but the source material that
-    * will come to it is different.
-    *
-+   * Type: GLib.List(FsCodec)
-+   * Transfer: full
-    */
-   g_object_class_install_property (gobject_class,
-       PROP_CURRENT_RECV_CODECS,
--- 
-1.7.8.6
-

Added: rtp-memleak.patch
===================================================================
--- rtp-memleak.patch	                        (rev 0)
+++ rtp-memleak.patch	2013-12-12 11:06:39 UTC (rev 201453)
@@ -0,0 +1,24 @@
+From 10b3d38560ec53d980d13240559e6758c1113e21 Mon Sep 17 00:00:00 2001
+From: Havard Graff <havard.graff at gmail.com>
+Date: Thu, 21 Mar 2013 12:46:11 +0000
+Subject: fs-rtp-discover-codecs: plug memoryleak
+
+use g_list_delete_link to free the list as well
+---
+(limited to 'gst/fsrtpconference')
+
+diff --git a/gst/fsrtpconference/fs-rtp-discover-codecs.c b/gst/fsrtpconference/fs-rtp-discover-codecs.c
+index df316a4..c663225 100644
+--- a/gst/fsrtpconference/fs-rtp-discover-codecs.c
++++ b/gst/fsrtpconference/fs-rtp-discover-codecs.c
+@@ -536,7 +536,7 @@ remove_duplicates (GList *list)
+       if (gst_caps_is_equal (codec_cap1->rtp_caps, codec_cap2->rtp_caps))
+       {
+         codec_cap_free (codec_cap2);
+-        walk1 = g_list_remove_link (walk1, walk2);
++        walk1 = g_list_delete_link (walk1, walk2);
+         goto again;
+       }
+     }
+--
+cgit v0.9.0.3




More information about the arch-commits mailing list