printf("%s:\n", str);
printf(" status = %i\n", status.status);
printf(" position = %u\n", status.scount);
+ printf(" free = %i\n", status.free);
if (rstatus)
*rstatus = status;
}
// latency = 4096 - 16;
setscheduler();
- if ((err = snd_pcm_open(&phandle, pcard, pdevice, SND_PCM_OPEN_STREAM_PLAYBACK)) < 0) {
+ if ((err = snd_pcm_open(&phandle, pcard, pdevice, SND_PCM_OPEN_PLAYBACK)) < 0) {
printf("Playback open error: %s\n", snd_strerror(err));
return 0;
}
- if ((err = snd_pcm_open(&chandle, ccard, cdevice, SND_PCM_OPEN_STREAM_CAPTURE)) < 0) {
+ if ((err = snd_pcm_open(&chandle, ccard, cdevice, SND_PCM_OPEN_CAPTURE)) < 0) {
printf("Record open error: %s\n", snd_strerror(err));
return 0;
}
}
showstat(phandle, SND_PCM_CHANNEL_PLAYBACK, &pstatus);
showstat(chandle, SND_PCM_CHANNEL_CAPTURE, &cstatus);
- snd_pcm_flush_capture(chandle);
- snd_pcm_flush_playback(phandle);
+ snd_pcm_capture_flush(chandle);
+ snd_pcm_playback_flush(phandle);
if (ok) {
printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n",
pstatus.stime.tv_sec,
#include <string.h>
#include "../include/asoundlib.h"
-void info_channel(snd_pcm_t *handle, char *id)
+void info_channel(snd_pcm_t *handle, int channel, char *id)
{
snd_pcm_channel_info_t chninfo;
int err;
+ bzero(&chninfo, sizeof(chninfo));
+ chninfo.channel = channel;
if ((err = snd_pcm_channel_info(handle, &chninfo))<0) {
fprintf(stderr, "channel info error: %s\n", snd_strerror(err));
return;
snd_pcm_info_t info;
int err;
- if ((err = snd_pcm_open(&handle, 0, 0, SND_PCM_OPEN_PLAYBACK))<0) {
+ if ((err = snd_pcm_open(&handle, 0, 0, SND_PCM_OPEN_DUPLEX))<0) {
fprintf(stderr, "open error: %s\n", snd_strerror(err));
return;
}
printf(" playback : %i\n", info.playback);
printf(" capture : %i\n", info.capture);
if (info.flags & SND_PCM_INFO_PLAYBACK)
- info_channel(handle, "Playback");
+ info_channel(handle, SND_PCM_CHANNEL_PLAYBACK, "Playback");
if (info.flags & SND_PCM_INFO_CAPTURE)
- info_channel(handle, "Capture");
+ info_channel(handle, SND_PCM_CHANNEL_CAPTURE, "Capture");
snd_pcm_close(handle);
}