All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ed Wildgoose <lists@wildgooses.com>
To: Paul Davis <paul@linuxaudiosystems.com>
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: RME9632 Precise Pointer option problem (attn Thomas Charbonnel)
Date: Mon, 27 Sep 2004 19:45:23 +0100	[thread overview]
Message-ID: <41585FC3.9030300@wildgooses.com> (raw)
In-Reply-To: <200409271112.i8RBC6Qc017508@localhost.localdomain>


>its not. you have to keep in mind that RME designed this hardware
>around the ASIO model, in which the h/w ptr position is  essentially
>irrelevant. consequently, the way in which the ptr is updated is not
>particularly reliable.
>  
>

Agreed.  Seems to be that way.  Just wondering if someone has some specs 
for the card and perhaps it can be made better...?


>>quite accurate estimating the current point location based on counting 
>>ticks since we started and noting when we add new data, etc.
>>    
>>
>
>you should probably first explain why you want to do this. as i
>mentioned, the h/w design is really centered on straightforward double
>buffering - the application works on one "buffer" and the hardware
>works on the other. 
>
>when you add data to the buffer makes no difference to the location of
>the hw ptr, btw.
>  
>

Many video players clock themselves to the video stream to decide 
exactly when to display the next video frame.  This is not so silly 
because we can be fairly sure the audio clock and system clock will 
diverge through time, so clocking video to audio is the best way to keep 
the in sync (without exotic altenatives).

Unfortunately you should be able to clearly see that if the audio clock 
can only be observed to the nearest full buffer then we are going to get 
some pretty visible jitter even with 1024 sample buffers (which is 
exactly what I see on screen).  Working around this is non-trivial 
really, yeah sure you can use your own clock, but it's still non-trivial 
to recover the audio clock bearing in mind that you only get infrequent 
glipses of it, and even then only the clock is quantised to the size of 
the audio buffer (ie large). 

My idea was that either in every application (tedious), or perhaps at 
the driver level: everytime we are woken up to check the card then we 
can have a look at how full the buffers are (eg when we add data is a 
good time).  At the point that we notice the buffers move from two full 
to one full we can assume that our accurate pointer must have crossed 
the magic boundary and we can determine a bound on the audio clock.  In 
the meantime we take our clock estimate and offset it based on the 
system clock ticks.

Over time (eg several mins) we can probably also obtain a reasonable 
estimate of the audio clock offset compared with the sys clock - this 
might be useful to refine the estimation even further.

Would a patch to do something like this in the driver be accepted (ie 
make the accurate pointer option do this estimation process instead)?  
Adding to each application has potential, but is obviously a pain to do 
it for Xine, mplayer, Ogle, etc, etc)

Does this make sense?

Ed W



-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php

  reply	other threads:[~2004-09-27 18:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-27  9:20 RME9632 Precise Pointer option problem (attn Thomas Charbonnel) Ed Wildgoose
2004-09-27 11:12 ` Paul Davis
2004-09-27 18:45   ` Ed Wildgoose [this message]
2004-09-27 14:07 ` Manuel Jander
2004-09-27 20:11   ` Paul Davis

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=41585FC3.9030300@wildgooses.com \
    --to=lists@wildgooses.com \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=paul@linuxaudiosystems.com \
    /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.