[alsa-devel] PCM delay compensation
Lennart Poettering
mznyfn at 0pointer.de
Mon Feb 23 17:24:32 CET 2009
On Mon, 23.02.09 08:45, Takashi Iwai (tiwai at suse.de) wrote:
>
> At Sun, 22 Feb 2009 00:45:04 +0100,
> Lennart Poettering wrote:
> >
> > On Tue, 07.10.08 17:32, Takashi Iwai (tiwai at suse.de) wrote:
> >
> > > Hi,
> >
> > Sorry for the overly long delay.
> > >
> > > the patch below (to the latest sound git tree) adds the extra delay
> > > count for USB-audio driver. This change will appear as the return
> > > value of snd_pcm_delay().
> > >
> > > Could you check whether it's appropriate behavior you've wanted?
> >
> > I have now tested this patch on the current 2.6.29-rc5 kernel. The
> > effect is that snd_pcm_delay() returns always increasing values, as if
> > the playback never proceeds. Most movie players which need that call
> > to synchronize video frames hence stall completely.
>
> OK, that's bad. However, the increased value of snd_pcm_delay() is
> exactly the effect. The usb-audio always prefetch the buffer in
> advance.
>
> That means, changing (or "fixing") snd_pcm_delay() would cause many
> regressions with many apps -- thus basically we are not allowed to
> change the semantics any more at this too late point.
>
> I feel it's better to introduce another kernel-side API to give a
> better sync/timing information, and mark snd_pcm_delay as obsolete for
> future (although we can never deprecate such a basic API).
No, snd_pcm_delay() with this patch is clearly broken: it apparently
increases at the same speed as the hw ptr, ignoring the app
ptr. i.e. after 5 min of playback the delay will be reported a 5 mins!
After 10 min of playback the delay will be reported as 10 mins!
This is *not* a simple incompatibility with mplayer. The patch is
borked. This has nothing to do with changing semantics and creating
incompatibilities.
Lennart
--
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net ICQ# 11060553
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
More information about the Alsa-devel
mailing list