At Fri, 9 May 2008 23:51:17 +0530, Harsha priya gupta wrote:
Thanks a lot for this pointer. A quick question;
For the .pointer function, it says " This callback is called when the PCM middle layer inquires the current hardware position on the buffer."
Does the word "PCM middle layer" mean that the MMF like Helix / Gstreamer is continuously querying for hardware position on the buffer? Or does the player keep querying?
The PCM middle layer is the common PCM routines implemented in the ALSA driver. The pointer callback can be called from this PCM middle layer in a couple of ways: 1. called at update of period, typically via an IRQ handler 2. called at status update, e.g. snd_pcm_status()
I also see that this function gets called quiet a number of times. Is there a way to reduce these calls? My guess is that to reduce the number of calls to .pointer, MMF or player needs to be modified. Am I thinking right?
If the position inquiry on your hardware is too heavy, your pointer callback may return the last period position. The pointer callback must assure that the given position is in the current period. But, its accuracy isn't (so far) guaranteed.
Of course, this will give apps less information, and some apps won't work fluently. But, it's what you want.
Takashi
-Harsha
On Fri, May 9, 2008 at 4:26 PM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 7 May 2008 09:10:00 +0530, Harsha priya gupta wrote: > > Hi, > It would be really helpful if someone can help me understand why do we need > to implement .pointer and what does it need to do? I am facing an issue to > write a driver in this .pointer function. Please help > > Also if someone can point me to a document where all the playback_ops are > defined, it would be really helpful Did you check the page below? http://www.alsa-project.org/main/index.php/ALSA_Driver_Documentation Takashi
-- -Harsha