Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Nilhcraiv <nilhcraiv@gmail.com>
To: Clemens Ladisch <clemens@ladisch.de>, alsa-devel@alsa-project.org
Subject: Re: Playback - Overwrite buffer with silence
Date: Sun, 12 Apr 2015 01:15:24 +0200	[thread overview]
Message-ID: <14caac41f10.2759.f6cded7c48a54b1428bcde82a72ee7d7@gmail.com> (raw)
In-Reply-To: <14caab5d6d0.2759.f6cded7c48a54b1428bcde82a72ee7d7@gmail.com>

Hello Clemens,

Fisrt of all thanks for your answer.

In my code there are error checking, of course. The code of this email 
thread is only just to simplify the question.

Clemens wrote:
It is impossible for the boundar to be zero.


I am sure, if you compile this code, "boundary" variable is always zero.
But the question is, How I can put silence data in buffer if the received 
data is not available at time? (to avoid under-run) Is the doc wrong?


#define FRAMES 240
#define PERIOD 1*FRAMES
#define BUFFER_SIZE PERIOD*2
#define CHANNELS 1
#define SAMPLE_RATE 48000

snd_pcm_hw_params_t *hwparams;
snd_pcm_sw_params_t *swparams;
int exact_rate,dir;
snd_pcm_uframes_t boundary=0;

snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
snd_pcm_hw_params_alloca(&hwparams);
snd_pcm_sw_params_alloca(&swparams);


/*PlayBack hw */
snd_pcm_open(&pcm_handle, "default", stream, 0);
snd_pcm_hw_params_any(pcm_handle, hwparams);
snd_pcm_hw_params_set_access(pcm_handle, hwparams,
SND_PCM_ACCESS_RW_INTERLEAVED);
snd_pcm_hw_params_set_format(pcm_handle, hwparams,
SND_PCM_FORMAT_S16_LE);
exact_rate = SAMPLE_RATE;
snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &exact_rate, 0);
snd_pcm_hw_params_set_channels(pcm_handle, hwparams, CHANNELS);
snd_pcm_hw_params_set_buffer_size(pcm_handle, hwparams, BUFFER_SIZE);
snd_pcm_hw_params(pcm_handle, hwparams);

/*Avoid under-run sw*/
snd_pcm_sw_params_current(pcm_handle, swparams);
snd_pcm_sw_params_get_boundary(swparams, &boundary); /*Here,
boundary is allways ZERO*/
snd_pcm_sw_params_set_silence_threshold(pcm_handle, swparams, 0);
/*According to the doc.*/
snd_pcm_sw_params_set_silence_size(pcm_handle, swparams, boundary);
/*According to the doc.*/
snd_pcm_sw_params(pcm_handle,swparams);
/*END Avoid under-run*/

snd_pcm_prepare(pcm_handle);


Thanks!




Nilhcraiv wrote:
> If I obtain the boundary for ring pointers in frames at the start 
> (snd_pcm_sw_params_get_boundary), the boundary is always zero.

It is impossible for the boundar to be zero.

> Here you can see a light version of my code (without error checking):

Error checking would be important.


Regards,
Clemens

  parent reply	other threads:[~2015-04-11 23:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-11 15:47 Playback - Overwrite buffer with silence Nilhcraiv
2015-04-11 20:05 ` Clemens Ladisch
     [not found]   ` <14caab5d6d0.2759.f6cded7c48a54b1428bcde82a72ee7d7@gmail.com>
2015-04-11 23:15     ` Nilhcraiv [this message]
2015-04-12  5:58       ` Clemens Ladisch
     [not found]         ` <14cb331e1c8.2759.f6cded7c48a54b1428bcde82a72ee7d7@gmail.com>
2015-04-13 14:45           ` Nilhcraiv
2015-04-14 12:37             ` Clemens Ladisch
2015-04-14 17:29               ` Nilhcraiv
2015-04-14 19:46                 ` Clemens Ladisch
2015-04-15  3:14                 ` Raymond Yau
     [not found]                   ` <552EBB90.8040707@gmail.com>
2015-04-15 19:40                     ` Clemens Ladisch
2015-04-16 18:32                       ` Nilhcraiv
2015-04-16 20:16                         ` Clemens Ladisch
2015-04-17  0:57                         ` Raymond Yau
2015-04-22 18:13                           ` Nilhcraiv

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=14caac41f10.2759.f6cded7c48a54b1428bcde82a72ee7d7@gmail.com \
    --to=nilhcraiv@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox