[alsa-devel] basic question on .pointer function
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
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
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?
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?
-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
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
participants (2)
-
Harsha priya gupta
-
Takashi Iwai