[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