Article View: es.comp.os.linux.programacion
Article #12864tarjeta de sonido en full-duplex
From: Alberto Hernando
Date: Tue, 08 May 2001 20:38
Date: Tue, 08 May 2001 20:38
105 lines
3205 bytes
3205 bytes
Hola.
Intento programar para procesar sonido en tiempo real y full duplex. Tengo
este esbozo de c�digo, que s�lo pretende repetir por el altavoz lo que
entra por el micro, sin ning�n procesado. Pero no me funciona. He le�do las
indicaciones de OSS, pero no consigo lo que quiero. Mis nivel de
programaci�n es bastante b�sico. Alguien me puede decir lo que falla?
Gracias
#include <stdio.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <sys/soundcard.h>
#include <fcntl.h>
#define veces 100
#define buffer_size 1024
int dsp;
int enable_bits;
FILE *datos;
unsigned char valor[buffer_size];
int i,j,s;
char leer_dsp(int fs)
{
dsp=open("/dev/dsp",O_RDWR,0);
ioctl (dsp,SNDCTL_DSP_SETDUPLEX,0);
/*printf ("dsp=%i\n",dsp);*/
ioctl (dsp, SNDCTL_DSP_SAMPLESIZE, 8);
ioctl (dsp, SNDCTL_DSP_CHANNELS, 1);
ioctl (dsp, SNDCTL_DSP_SPEED, &fs);
/*ioctl (dsp, SNDCTL_DSP_RESET, 0);*/
read(dsp,valor,buffer_size);
/*printf ("valor=%i\n",valor);*/
/*printf("leo \n");*/
close(dsp);
}
void escribir_dsp(int fs)
{
/* repito lo que acabo de grabar */
dsp=open("/dev/dsp",O_RDWR,0);
ioctl(dsp,SNDCTL_DSP_SETDUPLEX,0);
/*printf ("dsp=%i\n",dsp);*/
ioctl (dsp, SNDCTL_DSP_SAMPLESIZE, 8);
ioctl (dsp, SNDCTL_DSP_CHANNELS, 1);
ioctl (dsp, SNDCTL_DSP_SPEED, &fs);
/*bloqueo la salida*/
enable_bits= ~PCM_ENABLE_OUTPUT;
ioctl(dsp, SNDCTL_DSP_SETTRIGGER, &enable_bits);
/*escribo en el buffer de salida, pero no debe sonar*/
printf("escribo bloqueado \n");
write(dsp,valor,buffer_size);
/*ahora permito que suene*/
enable_bits= PCM_ENABLE_OUTPUT;
ioctl(dsp,SNDCTL_DSP_SETTRIGGER,&enable_bits);
printf ("desbloqueo y suena\n\n\n\n");
close(dsp);
}
int main()
{
int fs=8000;
i=0;
s=1;
/*while (i<veces)*/
while (1)
{
/*full duplex*/
/* captura de datos */
leer_dsp(fs);
/* procesado */
/* repito lo que acabo de grabar */
escribir_dsp(fs);
}
return 0;
}
Technical Details
Message-ID:
<dfl9d9.in.ln@127.0.0.1>Path:
arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!127.0.0.1!nobodyShow Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,47b3d91b5e09de63,start X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-05-08 11:51:05 PST Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!127.0.0.1!nobody From: Alberto Hernando <alb.ertoQUITA@ESTOwanadoo.es> Newsgroups: es.comp.os.linux.programacion Subject: tarjeta de sonido en full-duplex Date: Tue, 8 May 2001 20:38:05 +0000 Organization: Wanadoo Lines: 107 Message-ID: <dfl9d9.in.ln@127.0.0.1> NNTP-Posting-Host: 62-36-157-112.dialup.uni2.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8Bit X-Trace: m2wpersoisp01.wanadoo.es 989347270 28747 62.36.157.112 (8 May 2001 18:41:10 GMT) X-Complaints-To: usenet@wanadoo.es NNTP-Posting-Date: Tue, 8 May 2001 18:41:10 +0000 (UTC) User-Agent: KNode/0.4