subband_layer_2.hh
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:2k
源码类别:

DVD

开发平台:

Unix_Linux

  1. #ifndef SUBBAND_LAYER_2_H
  2. #define SUBBAND_LAYER_2_H
  3. // class for layer II subbands in single channel mode:
  4. class SubbandLayer2 : public Subband {
  5.  protected:
  6.   uint32 subbandnumber;
  7.   uint32 allocation;
  8.   uint32 scfsi;
  9.   uint32 scalefactor1, scalefactor2, scalefactor3;
  10.   bool  grouping;
  11.   uint32 codelength;
  12.   uint32 quantizationsteps;
  13.   real  factor;
  14.   uint32 groupnumber;
  15.   uint32 samplenumber;
  16.   real  samples[3];
  17.   real  c, d;
  18.   uint32 get_allocationlength (Header *);
  19.   uint32 prepare_sample_reading (Header *, uint32, bool *, uint32 *, real *,
  20.  uint32 *, real *, real *);
  21. public:
  22. SubbandLayer2 (uint32 subbandnumber);
  23.   void read_allocation (AudioStream *, Header *, Crc16 *);
  24.   virtual void read_scalefactor_selection (AudioStream *, Crc16 *);
  25.   void read_scalefactor (AudioStream *, Header *);
  26.   bool read_sampledata (AudioStream *);
  27.   bool put_next_sample (e_channels, SynthesisFilter *, SynthesisFilter * = NULL);
  28. };
  29. // class for layer II subbands in joint stereo mode:
  30. class SubbandLayer2IntensityStereo : public SubbandLayer2 {
  31.  protected:
  32.   uint32 channel2_scfsi;
  33.   uint32 channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3;
  34.  public:
  35.        SubbandLayer2IntensityStereo (uint32 subbandnumber);
  36.   void read_allocation (AudioStream *stream, Header *header, Crc16 *crc){
  37.     SubbandLayer2::read_allocation (stream, header, crc);
  38.   }
  39.   void read_scalefactor_selection (AudioStream *, Crc16 *);
  40.   void read_scalefactor (AudioStream *, Header *);
  41.   bool read_sampledata (AudioStream *stream){
  42.     return SubbandLayer2::read_sampledata (stream);
  43.   }
  44.   bool put_next_sample (e_channels, SynthesisFilter *, SynthesisFilter *);
  45. };
  46. // class for layer II subbands in stereo mode:
  47. class SubbandLayer2Stereo : public SubbandLayer2 {
  48.  protected:
  49.   uint32 channel2_allocation;
  50.   uint32 channel2_scfsi;
  51.   uint32 channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3;
  52.   bool  channel2_grouping;
  53.   uint32 channel2_codelength;
  54.   uint32 channel2_quantizationsteps;
  55.   real  channel2_factor;
  56.   real  channel2_samples[3];
  57.   real  channel2_c, channel2_d;
  58.  public:
  59.   SubbandLayer2Stereo (uint32 subbandnumber);
  60.   void read_allocation (AudioStream *, Header *, Crc16 *);
  61.   void read_scalefactor_selection (AudioStream *, Crc16 *);
  62.   void read_scalefactor (AudioStream *, Header *);
  63.   bool read_sampledata (AudioStream *);
  64.   bool put_next_sample (e_channels, SynthesisFilter *, SynthesisFilter *);
  65. };
  66. #endif