All of lore.kernel.org
 help / color / mirror / Atom feed
From: alejandro <alejandro@openstudionetworks.com>
To: alsa-devel@lists.sourceforge.net
Subject: IO streams sync
Date: Tue, 20 Jun 2006 12:38:32 +0200	[thread overview]
Message-ID: <4497D028.5060604@openstudionetworks.com> (raw)
In-Reply-To: <mailman.4401.1150734905.2958.alsa-devel@lists.sourceforge.net>

Lee Revell escribió:

>On Mon, 2006-06-19 at 18:17 +0200, alejandro wrote:
>  
>
>>Hello,
>>
>>Is there any document describing the ALSA components and functions?
>>Particularly the link between audio I/O and timers, in order to frame 
>>accurate sync multiple audio cards and video.
>>    
>>
>
>You probably want to be using JACK for this.  ALSA is just a low level
>HAL.  There are some patches floating around that add video capabilities
>("videojack").
>
>Lee
>
>  
>
James Courtier-Dutton escribió:

>alejandro wrote:
>
>>Hello,
>>
>>Is there any document describing the ALSA components and functions?
>>Particularly the link between audio I/O and timers, in order to frame 
>>accurate sync multiple audio cards and video.
>>
>>Thank you,
>>
>
>
>Alejandro,
>
>This is achieved using the snd_pcm_delay() function call.
>It gives you a measure of the number of samples between the current
>write pointer and the codec output.
>I.e. If you call snd_pcm_writei() now, it will be snd_pcm_delay() sample
>frames duration until the sample reach the speakers.
>So, from that you can accurately predict the exact time that a
>particular sample will reach the speakers, and therefore keep video in
>sync with it.
>This method is used in xine  (http://xinehq.de)
>See the audio_out.c loop.
>
>One then combines this with a resampler (as xine does), to adjust for
>clock speed differences between sound cards and the system timer, so
>this prevents sync drift.
>
>James
>
>
>

Lee and James,

It is not possible to sync two interfaces if we don't have timestamped
frame numbering (UST/MSC pairs). That means that we need to know, from a
common clock, the time at which a (numbered) frame will be output or was
input from a jack. Current time is not usable, because obviously there
is an unknown delay between function calls. If the system is not able to
produce timestamp/frame count pairs, there is no possibility to sync
audio streams or audio to video streams. I have looked at JACK, and the
situation is the same as with the ALSA API.

There are cards in the market with such timestamped operations supported
in the hardware and proprietary APIs, but is there a way to accessing
these operations from ALSA or JACK?

Thank you,

Alejandro


-- 
Alejandro Palencia
Open Studio Networks
+34 932054354

       reply	other threads:[~2006-06-20 10:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.4401.1150734905.2958.alsa-devel@lists.sourceforge.net>
2006-06-20 10:38 ` alejandro [this message]
2006-06-20 20:18   ` IO streams sync James Courtier-Dutton
     [not found] <mailman.3908.1150727591.2958.alsa-devel@lists.sourceforge.net>
2006-06-19 16:17 ` alejandro
2006-06-19 16:21   ` Lee Revell
2006-06-19 19:05   ` James Courtier-Dutton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4497D028.5060604@openstudionetworks.com \
    --to=alejandro@openstudionetworks.com \
    --cc=alsa-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.