[alsa-devel] How to retrieve the final data being played by HW

Yu Hang hangy at fortemedia.com.cn
Thu Apr 29 11:46:26 CEST 2010

On 4/29/2010 5:19 PM, Mark Brown wrote:
> On Thu, Apr 29, 2010 at 05:15:38PM +0800, Yu Hang wrote:
>> For example, the 1st instance had mixes the data into destination
>> buffer, but 2nd instance haven't complete the mix operation. Would the
>> data in destination buffer be playing by HW?
>> Or there is some mechanism to guarantee the data will be played after
>> all mix operation is done.
> You need to ensure that the user configures the plugin stack
> appropriately to ensure that your plugin is the last one that's run, you
> can't do this purely from within your plugin.  Even if that's done you'd
> also need to rely on them not configuring any DSP in the hardware which
> would disrupt things.
 From the pcm_dmix.c, dmix plugin must be followed by HW plugin. Which 
means I cannot insert my own plugin below dmix. Unless I patch 
pcm_dmix.c, I cannot retrieve the final data. Or I can patch pcm_hw.c in 
order to achieve my goal.
Even if I patch pcm_hw.c, how can I know when the data is actually sent 
to HW?
I have totally no idea about ALSA driver mechanism. A biggest question 
is, how alsa lib (in user space) knows the HW needs new data (it must 
happen by interrupt) and feed HW with new data.

More information about the Alsa-devel mailing list