Changeset 6 for trunk/src/mpc_decoder.c


Ignore:
Timestamp:
08/12/06 16:24:59 (18 years ago)
Author:
zorg
Message:

Update to 1.2.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mpc_decoder.c

    r3 r6  
    312312    memset(d->Q               , 0, sizeof d->Q                );
    313313    memset(d->MS_Flag         , 0, sizeof d->MS_Flag          );
     314}
     315
     316mpc_uint32_t
     317mpc_decoder_decode_frame(mpc_decoder *d, mpc_uint32_t *in_buffer,
     318                         mpc_uint32_t in_len, MPC_SAMPLE_FORMAT *out_buffer)
     319{
     320  unsigned int i;
     321  mpc_decoder_reset_bitstream_decode(d);
     322  if (in_len > sizeof(d->Speicher)) in_len = sizeof(d->Speicher);
     323  memcpy(d->Speicher, in_buffer, in_len);
     324#ifdef MPC_LITTLE_ENDIAN
     325  for (i = 0; i < (in_len + 3) / 4; i++)
     326    d->Speicher[i] = swap32(d->Speicher[i]);
     327#endif
     328  d->dword = d->Speicher[0];
     329  switch (d->StreamVersion) {
     330    case 0x04:
     331    case 0x05:
     332    case 0x06:
     333        mpc_decoder_read_bitstream_sv6(d);
     334        break;
     335    case 0x07:
     336    case 0x17:
     337        mpc_decoder_read_bitstream_sv7(d);
     338        break;
     339    default:
     340        return (mpc_uint32_t)(-1);
     341  }
     342  mpc_decoder_requantisierung(d, d->Max_Band);
     343  mpc_decoder_synthese_filter_float(d, out_buffer);
     344  return mpc_decoder_bits_read(d);
    314345}
    315346
     
    865896    {
    866897        idx   = mpc_decoder_huffman_decode_fast(d, d->HuffHdr);
    867         *ResL = (idx!=4) ? *(ResL-1) + idx : mpc_decoder_bitstream_read(d, 4);
     898        *ResL = (idx!=4) ? *(ResL-1) + idx : (int) mpc_decoder_bitstream_read(d, 4);
    868899
    869900        idx   = mpc_decoder_huffman_decode_fast(d, d->HuffHdr);
    870         *ResR = (idx!=4) ? *(ResR-1) + idx : mpc_decoder_bitstream_read(d, 4);
     901        *ResR = (idx!=4) ? *(ResR-1) + idx : (int) mpc_decoder_bitstream_read(d, 4);
    871902
    872903        if (d->MS_used && !(*ResL==0 && *ResR==0)) {
     
    902933            case 1:
    903934                idx  = mpc_decoder_huffman_decode_fast(d, d->HuffDSCF);
    904                 L[0] = (idx!=8) ? L[2] + idx : mpc_decoder_bitstream_read(d, 6);
     935                L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    905936                idx  = mpc_decoder_huffman_decode_fast(d, d->HuffDSCF);
    906                 L[1] = (idx!=8) ? L[0] + idx : mpc_decoder_bitstream_read(d, 6);
     937                L[1] = (idx!=8) ? L[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    907938                L[2] = L[1];
    908939                break;
    909940            case 3:
    910941                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    911                 L[0] = (idx!=8) ? L[2] + idx : mpc_decoder_bitstream_read(d, 6);
     942                L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    912943                L[1] = L[0];
    913944                L[2] = L[1];
     
    915946            case 2:
    916947                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    917                 L[0] = (idx!=8) ? L[2] + idx : mpc_decoder_bitstream_read(d, 6);
     948                L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    918949                L[1] = L[0];
    919950                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    920                 L[2] = (idx!=8) ? L[1] + idx : mpc_decoder_bitstream_read(d, 6);
     951                L[2] = (idx!=8) ? L[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    921952                break;
    922953            case 0:
    923954                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    924                 L[0] = (idx!=8) ? L[2] + idx : mpc_decoder_bitstream_read(d, 6);
     955                L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    925956                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    926                 L[1] = (idx!=8) ? L[0] + idx : mpc_decoder_bitstream_read(d, 6);
     957                L[1] = (idx!=8) ? L[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    927958                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    928                 L[2] = (idx!=8) ? L[1] + idx : mpc_decoder_bitstream_read(d, 6);
     959                L[2] = (idx!=8) ? L[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    929960                break;
    930961            default:
     
    942973            case 1:
    943974                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    944                 R[0] = (idx!=8) ? R[2] + idx : mpc_decoder_bitstream_read(d, 6);
     975                R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    945976                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    946                 R[1] = (idx!=8) ? R[0] + idx : mpc_decoder_bitstream_read(d, 6);
     977                R[1] = (idx!=8) ? R[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    947978                R[2] = R[1];
    948979                break;
    949980            case 3:
    950981                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    951                 R[0] = (idx!=8) ? R[2] + idx : mpc_decoder_bitstream_read(d, 6);
     982                R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    952983                R[1] = R[0];
    953984                R[2] = R[1];
     
    955986            case 2:
    956987                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    957                 R[0] = (idx!=8) ? R[2] + idx : mpc_decoder_bitstream_read(d, 6);
     988                R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    958989                R[1] = R[0];
    959990                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    960                 R[2] = (idx!=8) ? R[1] + idx : mpc_decoder_bitstream_read(d, 6);
     991                R[2] = (idx!=8) ? R[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    961992                break;
    962993            case 0:
    963994                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    964                 R[0] = (idx!=8) ? R[2] + idx : mpc_decoder_bitstream_read(d, 6);
     995                R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    965996                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    966                 R[1] = (idx!=8) ? R[0] + idx : mpc_decoder_bitstream_read(d, 6);
     997                R[1] = (idx!=8) ? R[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    967998                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
    968                 R[2] = (idx!=8) ? R[1] + idx : mpc_decoder_bitstream_read(d, 6);
     999                R[2] = (idx!=8) ? R[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
    9691000                break;
    9701001            default:
     
    11751206}
    11761207
    1177 static void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si)
     1208void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si)
    11781209{
    11791210    mpc_decoder_reset_synthesis(d);
     
    12551286{
    12561287    mpc_uint32_t fpos = 0;
     1288    (void) StreamVersion;
    12571289    switch ( d->StreamVersion ) {                                                  // setting position to the beginning of the data-bitstream
    12581290    case  0x04: fpos =  48; break;
Note: See TracChangeset for help on using the changeset viewer.