Hi!
I have the following question - is it possible to decode a stream using MAD? For example: I have shoutcast stream and I read it in small portions (say, 40960 bytes), decode it and encode back to mp3 using LAME (chaning bitrate, samplerate, etc...).
The problem is that I have to call mad_stream_buffer with each piece of stream data, decode/encode it and then if I listen the resulting mp3 file - I notice "noise" between theese small decoded pieces. Seems like it happen not only with VBR files.
Pseudo-code:
while ( bytes = read(file_id, buff, SHOUT_BUFFER_LENGTH ) ) {
mad_stream_buffer(&stream, buff, bytes );
while(1){ mad_frame_decode(&frame,&stream) .... int ret = lame_encode_buffer( lameGlobalFlags, left, right, nsamples, mp3Buf, mp3Size ); // Play resulting mp3 data
}
}
Is it possible to decode a stream without theese "edge effects" ? May be I should not re-initialize MAD buffer after each read in some way? Please help.