[gstreamer-bugs] [Bug 341818] New: Poor concurrent performance of the Matroska demuxer

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Mon May 15 01:57:54 PDT 2006


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=341818
 GStreamer | gst-plugins-good | Ver: HEAD CVS

           Summary: Poor concurrent performance of the Matroska demuxer
           Product: GStreamer
           Version: HEAD CVS
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: jindrich.makovicka at itonis.tv
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: Unspecified
   GNOME milestone: Unspecified


Currently, the ebml reader of the Matroska demuxer (ebml-read.c) makes a heavy
use of gst_buffer_create_sub() to extract data from the main buffer. The
problem is, that creating and destroying of the subbuffer involve calls to
GLib's type identification machinery, and require a serialization using one
global mutex.
This is expensive performance-wise, and many concurrent instances of this
plugin running, it leads to fatal mutex contention.

The attached patch modifies ebml-read.c to simply use pointers instead of a
subbuffer where possible. The gst_ebml_read_peek_bytes() function now accepts
two parameters for a return value, GstBuffer ** and guint **, and returns the
subbuffer or just a data pointer any of them which is non-null. Inside
ebml-read, which does mostly trivial actions, and would discard the subbuffer
immediately, the pointers are used exclusively. Outside of ebml-read, the
subbuffers are exported as before.

We observed at least a ten-fold performance increase in the terms of concurent
streams after this change.


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list