Stream Decode

View: New views
1 Messages — Rating Filter:   Alert me  

Stream Decode

by Alexey V Paramonov-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.