Esempio n. 1
0
static
int play(struct audio_play *play)
{
  struct buffer *buffer;
  unsigned int len;

  if (set_pause(0) == -1)
    return -1;

  buffer = &output[bindex];

  /* wait for block to finish playing */

  if (buffer->pcm_length == 0 && wait(buffer) == -1)
    return -1;

  /* prepare block */

  len = audio_pcm(&buffer->pcm_data[buffer->pcm_length], play->nsamples,
		  play->samples[0], play->samples[1], play->mode, play->stats);

  buffer->pcm_length += len;

  if (buffer->pcm_length + MAX_NSAMPLES * samplesize * 2 >
      samplerate * samplesize * 2) {
    write_dev(wave_handle, buffer);

    bindex = (bindex + 1) % NBUFFERS;
    output[bindex].pcm_length = 0;
  }

  return 0;
}
Esempio n. 2
0
static
int play(struct audio_play *play)
{
  unsigned char data[MAX_NSAMPLES * 2 * 2];
  unsigned int len;

  len = audio_pcm(data, play->nsamples, play->samples[0], play->samples[1],
		  play->mode, play->stats);

  return output(data, len);
}
Esempio n. 3
0
static
int play(struct audio_play *play)
{
  unsigned char data[MAX_NSAMPLES * 4 * 2];
  unsigned int len;

  len = audio_pcm(data, play->nsamples, play->samples[0], play->samples[1],
		  play->mode, play->stats);

  buffer.data = data;
  buffer.len  = len;

  while (buffer.len)
    AuHandleEvents(server);

  return 0;
}
Esempio n. 4
0
static
int play(struct audio_play *play)
{
  struct buffer *buffer;
  unsigned int len;

  if (set_pause(0) == -1)
    return -1;

  if (output[bindex].pcm_nsamples + play->nsamples > MAX_NSAMPLES &&
      drain() == -1)
    return -1;

  buffer = &output[bindex];

  /* wait for block to finish playing */

  if (buffer->pcm_nsamples == 0) {
    if (buff_wait(buffer) == -1)
      return -1;

    buffer->pcm_length = 0;
  }

  /* prepare block */

  len = audio_pcm(&buffer->pcm_data[buffer->pcm_length], play->nsamples,
		  play->samples[0], play->samples[1], play->mode, play->stats);

  buffer->pcm_nsamples += play->nsamples;
  buffer->pcm_length   += len;

  if (buffer->pcm_nsamples >= NQUEUESAMPLES &&
      drain() == -1)
    return -1;

  return 0;
}
Esempio n. 5
0
static
int play(struct audio_play *play)
{
    int err, len;
    char *ptr;

    ptr = buf;
    len = play->nsamples;

    audio_pcm(ptr, len, play->samples[0], play->samples[1],
              play->mode, play->stats);

    while (len > 0) {

        err = snd_pcm_mmap_writei(alsa_handle, ptr, len);

        if (err == -EAGAIN)
            continue;

        if (err < 0) {
            if (xrun_recovery(alsa_handle, err) < 0) {
                audio_error = snd_strerror(err);
                return -1;

            }
            break;
        }

        len -= err;
        ptr += err * sample_size;

    }

    return 0;

}