Re: Is there a way to figure out if the clocks of two snd_pcm_t's deviate? (snd_pcm_info_get_sync?)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 4 Sep 2009, Lennart Poettering wrote:

> Heya!
>
> I am looking for a way to find out whether the clocks of two
> snd_pcm_t's are perfectly in sync and don't deviate (or only deviate
> by a constant phase).
>
> i.e. for real duplex devices that use the same crystal for input and
> output this should tell me "Yes" for the playback snd_pcm_t tested
> against the recording snd_pcm_t; and for all other, unrelated audio
> devices it should return "No".
>
> I found snd_pcm_info_get_sync() in the docs, but its documentation is
> a bit terse, so I am wondering if this might be what I want. Is it?
>
> Does this (untested) code snippet do what I hope it does?

Hi,

Nope. The snd_pcm_info_get_sync() function identifies streams with 
"sample sync and sample synchronized start".

All standard soundcards have only one clock source, so if 
snd_pcm_info_get_card() number matches, the streams will most probably 
run in sync.

I cannot recall from my mind, if any card has two clock sources - maybe 
only old Gravis UltraSound hardware with GF1 and CS4231 chips, but it's 
history. Also, professional hardware can run with word clock sync (wire 
connection carrying sample clock) or S/PDIF clock sync. But it's matter of 
user configuration.

I would suggest to match card number as default for used streams and add 
an user option to modify the stream word clock configuration for your app.

 						Jaroslav

-----
Jaroslav Kysela <perex@xxxxxxxx>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux