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

Reply via email to