خرید بک لینک

Vote count: 0

I'm trying to write a fullduplex test that copies audio in to audio out. sio_onmove does not get called. I have no idea why. Here's my code so far:

#include <stdio.h>
#include <stdlib.h>

#include <sndio.h>

unsigned char buf[0xffff];

struct sio_hdl *hdl;

void cb(void *arg, int delta) {
 int l;
 printf("call %dn", delta);
 for(;;) {
  l = sio_read(hdl, buf, delta);
  if(l==0) break;
  sio_write(hdl, buf, l);
 }
}

int main(void) {
 int m, i;
 struct sio_par par;
 struct sio_cap cap;

 hdl = sio_open("rsnd/0", SIO_PLAY | SIO_REC , 1);


 sio_getcap(hdl, &cap);

 sio_initpar( &par);

 par.bits = cap.enc[0].bits;
 par.bps = cap.enc[0].bps;
 par.sig = cap.enc[0].sig;
 par.le = cap.enc[0].le;
 par.msb = cap.enc[0].msb;
 par.rchan=cap.rchan[0];
 par.pchan=cap.pchan[0];
 par.rate =cap.rate[0];

 par.appbufsz = 1024;

 sio_setpar(hdl, &par);

 sio_onmove(hdl, cb, NULL);

 sio_start(hdl);

 for(;;)
  sleep(1);

}

I'm initializing rsnd/0 for recording and play back. The parameters I'm initializing from a getcap call. I'm then setting cb as the callback for onmove. I then start audio. From there I loop forever doing nothing

asked 2 mins ago

برچسب: نویسنده: استخدام کار تاريخ: يکشنبه 30 خرداد 1395 ساعت: 11:59

صفحه بندی