[Bug 705870] New: [audiobasesink] add callback for custom logic based on the sink's average skew value

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Aug 12 12:54:06 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=705870
  GStreamer | gst-plugins-base | git

           Summary: [audiobasesink] add callback for custom logic based on
                    the sink's average skew value
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: dv at pseudoterminal.org
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=251421)
 View: https://bugzilla.gnome.org/attachment.cgi?id=251421
 Review: https://bugzilla.gnome.org/review?bug=705870&attachment=251421

Average skew callback patch

Currently, if a drift between the pipeline and the audio clock happens, the
audiobasesink can make use of three methods: ignore it, or skew the playout
pointer (that is, dropping samples/inserting null samples), or resampling. The
resample method does not work very well, leaving the skew one as the method of
choice.

These hard cuts are very bad for audio quality. At high volumes, resulting
"clicks" may also damage speaker equipment. Without additional hardware
support, however, the sink cannot do anything more.

This patch introduces a new user-defined callback function. This callback is
invoked inside the sink's playback loop, each time the average skew value is
updated. The callback is passed the current avg_skew value. This way, custom
adjustments may be made. For example, if the audio hardware's clock is
controlled by a PLL, this PLL may be adjusted to let the audio output run
slightly faster or slower, depending on the skew.

With this patch, drifts <1ms can be reached, without having to reset the
playout pointer all the time.

-- 
Configure bugmail: https://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