Ignore:
Timestamp:
11/09/06 13:44:00 (18 years ago)
Author:
r2d
Message:
  • gapless playback should now be supported (not verified)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libmpcdec/branches/zorg/src/mpc_demux.c

    r104 r107  
    172172void mpc_demux_decode(mpc_demux * d, mpc_frame_info * i)
    173173{
    174         i->samples = 0;
    175         if (d->d->OverallFrames != 0 && d->d->DecodedFrames == d->d->OverallFrames)
    176                 return;
    177174        if (d->si.stream_version == 8) {
    178175                mpc_bits_reader r;
    179                 if (d->block_bits < 8){
     176                if (d->block_bits < 8 && (d->d->decoded_frames < d->d->frames || d->d->frames == 0)){
    180177                        mpc_block b;
    181178                        d->bits_reader.count &= -8;
     
    195192                d->block_bits -= (d->bits_reader.buff - r.buff) * 8 + r.count - d->bits_reader.count;
    196193        } else {
    197                 int frame_size;
    198194                mpc_bits_reader r;
    199195                mpc_demux_fill(d, MAX_FRAME_SIZE, MPC_BUFFER_FULL | MPC_BUFFER_SWAP);
    200                 frame_size = mpc_bits_read(&d->bits_reader, 20); // read frame size
     196                mpc_bits_read(&d->bits_reader, 20); // read frame size
    201197                r = d->bits_reader;
    202198                mpc_decoder_decode_frame(d->d, &d->bits_reader, i);
    203                 if ((d->bits_reader.buff - r.buff) * 8 + r.count - d->bits_reader.count != frame_size){
    204                         frame_size--;
    205                         frame_size += 1;
    206                 }
    207199        }
    208200}
     
    215207//      mpc_uint32_t  FrameBitCnt = 0;
    216208//
    217 //      if (d->DecodedFrames >= d->OverallFrames) {
     209//      if (d->decoded_frames >= d->OverallFrames) {
    218210//              return (mpc_uint32_t)(-1);                           // end of file -> abort decoding
    219211//      }
    220212//
    221213//     // add seeking info
    222 //      if (d->seeking_table_frames < d->DecodedFrames &&
    223 //                 (d->DecodedFrames & ((1 << d->seeking_pwr) - 1)) == 0) {
    224 //              d->seeking_table[d->DecodedFrames >> d->seeking_pwr] = mpc_decoder_bits_read(d);
    225 //              d->seeking_table_frames = d->DecodedFrames;
     214//      if (d->seeking_table_frames < d->decoded_frames &&
     215//                 (d->decoded_frames & ((1 << d->seeking_pwr) - 1)) == 0) {
     216//              d->seeking_table[d->decoded_frames >> d->seeking_pwr] = mpc_decoder_bits_read(d);
     217//              d->seeking_table_frames = d->decoded_frames;
    226218//                 }
    227219//
Note: See TracChangeset for help on using the changeset viewer.