当前位置:  技术问答>linux和unix

snd_pcm_ops的.pointer所實作的內容?

    来源: 互联网  发布时间:2016-06-04

    本文导语:  snd_pcm_ops的.pointer所實作的內容? 是在計算實際已傳出的資料嗎 我看datasheet沒有看到可以知道目前已傳輸的資料量 ACTL_PDST_LENGTH 0xB000_901C R/W DMA destination length register for play 不知這個是不是 以下是我用來參考的代...

snd_pcm_ops的.pointer所實作的內容?
是在計算實際已傳出的資料嗎
我看datasheet沒有看到可以知道目前已傳輸的資料量
ACTL_PDST_LENGTH 0xB000_901C R/W DMA destination length register for
play
不知這個是不是

以下是我用來參考的代碼
static snd_pcm_uframes_t snd_nxc2600_pointer(struct snd_pcm_substream *substream)
{
   struct audio_stream *stream = substream->private_data;
   snd_pcm_sframes_t result;
   result= bytes_to_frames(substream->runtime,
         stream->buffer_pos+
         stream->buffer_bytes-
         nxc2600_dma_get_current_transfer_count(stream->chno,0));
      );
   return result;
}

|
我猜測你是想問.pointer這個實例出來的內容吧?

這種結構體的賦值方式是gcc的擴展或者是C99裏面的一個新的feature,具體是哪個我記不清楚了。可以直接給結

構體的某個成員賦值。

|

  pointer callback

   static snd_pcm_uframes_t snd_xxx_pointer(struct snd_pcm_substream *substream)
                                                                                

   This callback is called when the PCM middle layer inquires the current
   hardware position on the buffer. The position must be returned in frames,
   ranging from 0 to buffer_size - 1.

   This is called usually from the buffer-update routine in the pcm middle
   layer, which is invoked when snd_pcm_period_elapsed() is called in the
   interrupt routine. Then the pcm middle layer updates the position and
   calculates the available space, and wakes up the sleeping poll threads,
   etc.

   This callback is also atomic.


建议你先看看 src/Documentation/sound/alas/ 下面的文档,里面的内容很重要...

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3