Jaroslav Kysela wrote:
On Wed, 17 Sep 2003, James Courtier-Dutton wrote:


Output from sending stereo sound to the "dmix" device.
bash-2.05b# cat status
state: RUNNING
trigger_time: 1063822024.640173000
tstamp      : 1063822060.456968000
delay       : -1719463
avail       : 1731463
avail_max   : 1731463
-----
hw_ptr      : 1719463
appl_ptr    : 0
bash-2.05b#

Output from sending stereo sound to the "front" device.
bash-2.05b# cat status
state: RUNNING
trigger_time: 1063823309.038609000
tstamp      : 1063823320.869677000
delay       : 14161
avail       : 2223
avail_max   : 3586
-----
hw_ptr      : 567983
appl_ptr    : 582144

As you can see, the "front" device acts correctly, with all the pointers
acting as they should.
But with "dmix", all the pointers are wrong.
This is particularly problematic for me, as I need a properly
functioning "delay" value for my application.

This is using alsa from 2.6test5 kernel.


This is absolutely ok. The device is running in no-xrun mode, because
multi-applications have access to it. The dmix plugin has own hw_ptr and
appl_ptr for each instance and mangles the information from kernel to
correct values to follow the ALSA API.

What is your problem? The resolution of the dmix plugin is always one
period (to make things faster), but it's not a problem to add the slow
calls.

Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs



The problem is that my application relies on a correct "delay" value, so that it can use it to keep sound/video in sync.


An example of more status output while playing a .wav file with aplay -D dmix. Each "cat status" is typed in quickly after each other.

bash-2.05b# cat status
state: RUNNING
trigger_time: 1063888806.325296000
tstamp      : 1063888809.954270000
delay       : -174225
avail       : 186225
avail_max   : 186225
-----
hw_ptr      : 174225
appl_ptr    : 0
bash-2.05b# cat status
state: RUNNING
trigger_time: 1063888806.325296000
tstamp      : 1063888810.491712000
delay       : -200026
avail       : 212026
avail_max   : 212026
-----
hw_ptr      : 200026
appl_ptr    : 0
bash-2.05b# cat status
state: RUNNING
trigger_time: 1063888806.325296000
tstamp      : 1063888811.036897000
delay       : -226198
avail       : 238198
avail_max   : 238198
-----
hw_ptr      : 226198
appl_ptr    : 0

As you can see, the sound is being played, and comes out of the speakers, and there are no xruns, because if there were I would hear them.
For the "dmix" device.
As the buffer size is 12000, avail/avail_max should never reach a value > buffer_size.
delay should never reach a size > buffer_size (12000).


My guess is that delay = appl_ptr - hw_ptr, and thus the reason for it being negative.

Cheers
James



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to