Re: Discarding the first few frames inside the kernel

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

 



Hi,

On Jan 19 2016 03:21, Ankhit Vivekananda wrote:
I am interfacing the ICS43432 MEMS microphone with McBSP interface. The
data sheet of the ICS43432 microphone shows that it takes about 4.5ms
(16kHz sampling rate) for startup. Because of this, I hear a transient
noise at the beginning of every stream. Is there in any way I can discard
the frames inside the kernel space itself before reading the samples using
snd_pcm_readi() call?

I was able to mute the first few frames after the readi() call, but would
want to know if I could do it before the readi() call itself inside the
kernel space.

If the data transmission starts in 'struct snd_pcm_ops.prepare' callback of the driver, we can wait what we want, because ALSA PCM core guarantees to call it in process context.

In userspace, this looks like (here I describe in alsa-lib API):
 - calling snd_pcm_hw_params()
   - snd_pcm_prepare() is called library internal
     * struct snd_pcm_ops.prepare() is called in kernel mode.
       * mute
       * start data transmission
       * wait for the 4.5ms or somewhat
       * return
     * return
   - return
 - PCM frame operation such as snd_pcm_writei()
   * snd_pcm_ops.trigger(TRIGGER_START) is called in kernel mode.
     * demute
   * PCM frames starts to be transferred from userspace.


Regards

Takashi Sakamoto
_______________________________________________
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