Updated to current API..

This commit is contained in:
Jaroslav Kysela 2000-02-04 10:07:20 +00:00
parent 924d53cccc
commit 5c946996db
2 changed files with 11 additions and 8 deletions

View file

@ -152,6 +152,7 @@ void showstat(snd_pcm_t *handle, int channel, snd_pcm_channel_status_t *rstatus)
printf("%s:\n", str); printf("%s:\n", str);
printf(" status = %i\n", status.status); printf(" status = %i\n", status.status);
printf(" position = %u\n", status.scount); printf(" position = %u\n", status.scount);
printf(" free = %i\n", status.free);
if (rstatus) if (rstatus)
*rstatus = status; *rstatus = status;
} }
@ -230,11 +231,11 @@ int main(void)
// latency = 4096 - 16; // latency = 4096 - 16;
setscheduler(); 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)); printf("Playback open error: %s\n", snd_strerror(err));
return 0; 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)); printf("Record open error: %s\n", snd_strerror(err));
return 0; return 0;
} }
@ -274,8 +275,8 @@ int main(void)
} }
showstat(phandle, SND_PCM_CHANNEL_PLAYBACK, &pstatus); showstat(phandle, SND_PCM_CHANNEL_PLAYBACK, &pstatus);
showstat(chandle, SND_PCM_CHANNEL_CAPTURE, &cstatus); showstat(chandle, SND_PCM_CHANNEL_CAPTURE, &cstatus);
snd_pcm_flush_capture(chandle); snd_pcm_capture_flush(chandle);
snd_pcm_flush_playback(phandle); snd_pcm_playback_flush(phandle);
if (ok) { if (ok) {
printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n", printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n",
pstatus.stime.tv_sec, pstatus.stime.tv_sec,

View file

@ -2,11 +2,13 @@
#include <string.h> #include <string.h>
#include "../include/asoundlib.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; snd_pcm_channel_info_t chninfo;
int err; int err;
bzero(&chninfo, sizeof(chninfo));
chninfo.channel = channel;
if ((err = snd_pcm_channel_info(handle, &chninfo))<0) { if ((err = snd_pcm_channel_info(handle, &chninfo))<0) {
fprintf(stderr, "channel info error: %s\n", snd_strerror(err)); fprintf(stderr, "channel info error: %s\n", snd_strerror(err));
return; return;
@ -146,7 +148,7 @@ void info(void)
snd_pcm_info_t info; snd_pcm_info_t info;
int err; 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)); fprintf(stderr, "open error: %s\n", snd_strerror(err));
return; return;
} }
@ -162,9 +164,9 @@ void info(void)
printf(" playback : %i\n", info.playback); printf(" playback : %i\n", info.playback);
printf(" capture : %i\n", info.capture); printf(" capture : %i\n", info.capture);
if (info.flags & SND_PCM_INFO_PLAYBACK) 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) if (info.flags & SND_PCM_INFO_CAPTURE)
info_channel(handle, "Capture"); info_channel(handle, SND_PCM_CHANNEL_CAPTURE, "Capture");
snd_pcm_close(handle); snd_pcm_close(handle);
} }