Hi,
I need to play a 128bit stereo mp3 file. Im tryng to
use lame library to do, but I obtain a noised pcm
frames.
what's wrong?
#include <stdio.h>
#include<fcntl.h>
#include<stdlib.h>
#include<unistd.h>
#include <sys/ioctl.h>
#include <linux/soundcard.h>
#include "lame.h"
FILE *rec;
FILE *raw;
mp3data_struct mp3str;
mp3data_struct *mp3data;
short int pcm_l[1152],pcm_r[1152];
unsigned char buf[200];
int ret,len,ARG;
int audio;
int main()
{
mp3data=&mp3str;
rec=fopen("test.mp3","r");
raw=fopen("raw.raw","w");
audio=open("/dev/dsp",O_RDWR);
if (audio < 0) {
perror("open of /dev/dsp failed");
exit(1);
}
lame_decode_init();
while(mp3data->header_parsed!=1)
{
len=fread(buf,1,sizeof(buf),rec);
ret=lame_decode1_headers(buf, len,
pcm_l, pcm_r, mp3data);
}
printf
("stereo=%i\nsamlpr=%i\nbitrate=%i\nmode%i\nmode_ext=%i\nframesize%i\nnsamp=%d\ntotalfr=%i",mp3data->stereo,mp3data->samplerate,mp3data->bitrate,mp3data->mode,mp3data->mode_ext,mp3data->framesize,mp3data->nsamp,mp3data->totalframes,mp3data->framenum);
mp3data->header_parsed=0;
ARG=mp3data->samplerate/2;
ioctl(audio,SOUND_PCM_WRITE_RATE,&ARG);
ioctl(audio,SOUND_PCM_READ_RATE,&ARG);
printf("\nrate = %i\n",ARG);
ARG=mp3data->stereo;
ioctl(audio, SOUND_PCM_WRITE_CHANNELS, &ARG);
ARG=16;
ioctl(audio, SOUND_PCM_WRITE_BITS,&ARG);
write(audio,pcm_l,ret);
write(audio,pcm_r,ret);
fwrite(pcm_l,sizeof(short),ret,raw);
fwrite(pcm_r,sizeof(short),ret,raw);
do{
while((len>0)&&(ret<1))
{
len=fread(buf,1,sizeof(buf),rec);
ret=lame_decode(buf,
len, pcm_l, pcm_r);
}
printf("ret=%i",ret);
mp3data->header_parsed=0;
write(audio,pcm_l,ret);
write(audio,pcm_r,ret);
fwrite(pcm_l,sizeof(short),ret,raw);
fwrite(pcm_r,sizeof(short),ret,raw);
ret=0;
}while (len>0);
lame_decode_exit();
fclose(rec);
fclose(raw);
return 0;
}
thank's
__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com
_______________________________________________
mp3encoder mailing list
[EMAIL PROTECTED]
http://minnie.tuhs.org/mailman/listinfo/mp3encoder