Re: callbacks order while capturing from Line-IN

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

 



On Fri, 17 Dec 2010, Manu Abraham wrote:

On Fri, Dec 17, 2010 at 10:28 AM, Manu Abraham <abraham.manu@xxxxxxxxx> wrote:
Hi,

By now I am a bit confused.

I am seeing a certain pattern in which the callbacks are invoked:

- hw_params()
- prepare()
- trigger(); // Start DMA
- pointer();
     Â--> gets data after interrupt is handled
- trigger(); // Stop DMA
- prepare();
- trigger(); // Start DMA
- pointer();
     --> gets data after interrupt is handled

..
..

and so on.

Is this the right behaviour that's expected from a function ALSA
capture driver ?
I am trying to understand why there is Start DMA, Stop DMA, Start DMA, Stop DMA
in a cyclic fashion for each of the interrupts in my setup.


To test my theory that a STOP cmd after an interrupt was giving me the
same buffer location, I did commented out the STOP cmd, as well,
allowing the START cmd to run only if the streaming engine has not
START 'ed.

This allows the interrupt handler to fire correctly with the correct
buffer indices, as seen in the following logs.

http://pastebin.ca/2021840

The problem is that,

1. I don't understand why the application issues a CMD to STOP/START,
after each interrupt.
2. The STOP/START cmds reinitializes the Streaming engine to start
with buffer index:0, therefore always buffer position is at the very
beginning of the buffer.

I believe that your pointer callback is buggy so the midlevel code things that you had and overrun.

http://www.alsa-project.org/main/index.php/XRUN_Debug

					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