On 07/20/2010 09:51 PM, Paul Davis wrote:
> On Tue, Jul 20, 2010 at 7:48 AM, Patrick Shirkey
> <pshirkey@email-addr-hidden> wrote:
>
>
>>> A simple approach might be to just set a counter and have the
>>> audio-process count it down (in audio-samples). Once it reaches zero:
>>> play again.
>>>
>>>
>>>
>> The problem is how to set a counter that doesn't block the rest of the app
>> while it is in process.
>>
> i believe that robin's suggestion is the correct one. you don't want
> to attempt audio timing using the system clock unless you have a
> DLL/PLL that relates audio time to system time (and you don't).
> decisions about what to do as time progresses need to be made in the
> process() callback tree, not in the GUI or some other thread.
> so just countdown some number of samples, and then resume playing, as
> robin suggested. it won't block anything, anywhere.
>
I don't have any problem with counting down using the audio clock but
how do I translate that into seconds/milliseconds set in the ui?
At the moment the timer counts in seconds using this function
void *timer_thread(void *arg) {
int how_long = *((int*) arg);
sleep(how_long);
pthread_mutex_unlock(&timer_lock);
return NULL;
}
While it is counting I set the volume for the per track playback buffer
to zero. I also need to stop the playhead from moving but that is a
seperate issue.
Ideally the timer should count in milliseconds which I guess is handled
by changing the call to sleep to select instead?
ex.
void *timer_thread(void *arg) {
int how_long = *((int*) arg);
pause.tv_sec = how_long;
pause.tv_usec = 0;
(void) select(0, 0, 0, 0, &pause);
pthread_mutex_unlock(&timer_lock);
return NULL;
}
I'm not sure how to do that with audio samples instead. Happy to make it
work that way though if it is the best approach.
-- Patrick Shirkey Boost Hardware Ltd _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@email-addr-hidden http://lists.linuxaudio.org/listinfo/linux-audio-devReceived on Tue Jul 20 16:15:03 2010
This archive was generated by hypermail 2.1.8 : Tue Jul 20 2010 - 16:15:04 EEST