Ktam3874/pitx software guide – Kontron KTAM3874-pITX User Manual

Page 97

Advertising
background image

KTD-S0057-I

Page 93 Linux® Programming Examples (DebianTM)


KTAM3874/pITX Software Guide


static int set_swparams (snd_pcm_t *handle, snd_pcm_sw_params_t *swparams)
{
int

err;

/* get the current swparams */

err = snd_pcm_sw_params_current (handle, swparams);

if (err < 0)

{

printf ("Unable to determine current swparams for playback: %s\n", snd_strerror (err));

return

err;

}

/* start the transfer when the buffer is almost full: (buffer_size / avail_min) * avail_min */

err = snd_pcm_sw_params_set_start_threshold (handle, swparams, (buffer_size / period_size) * period_size);

if (err < 0)

{

printf ("Unable to set start threshold mode for playback: %s\n", snd_strerror (err));

return

err;

}

/* allow the transfer when at least period_size samples can be processed */

/* or disable this mechanism when period event is enabled (aka interrupt like style processing) */

err = snd_pcm_sw_params_set_avail_min (handle, swparams, period_event ? buffer_size : period_size);

if (err < 0)

{

printf ("Unable to set avail min for playback: %s\n", snd_strerror (err));

return

err;

}

/* enable period events when requested */

if

(period_event)

{

err = snd_pcm_sw_params_set_period_event (handle, swparams, 1);

if (err < 0)

{

printf ("Unable to set period event: %s\n", snd_strerror (err));

return

err;

}

}

/* write the parameters to the playback device */

err = snd_pcm_sw_params (handle, swparams);

if (err < 0)

{

printf ("Unable to set sw params for playback: %s\n", snd_strerror (err));

return

err;

}

return

0;

}

Advertising
This manual is related to the following products: