📄 layer3.h
字号:
/* layer3.h Declarations for the Layer III decoder object */#ifndef LAYERIII_H#define LAYERIII_H#include "all.h"#include "l3type.h"#include "ibitstr.h"#include "obuffer.h"#include "bit_res.h"#include "header.h"#include "synfilt.h"#define SSLIMIT 18#define SBLIMIT 32/* Size of the table of whole numbers raised to 4/3 power. This may be adjusted for performance without any problems. */#define POW_TABLE_LIMIT 512class LayerIII_Decoder {public: LayerIII_Decoder(Ibitstream *stream0, Header *header0, SynthesisFilter *filtera, SynthesisFilter *filterb, Obuffer *buffer0, enum e_channels which_ch0); ~LayerIII_Decoder(); // Notify decoder that a seek is being made void seek_notify(); // Decode one frame, filling the buffer with the output samples void decode();private: // private data int32 is_1d[SBLIMIT*SSLIMIT]; real ro[2][SBLIMIT][SSLIMIT]; real lr[2][SBLIMIT][SSLIMIT]; real out_1d[SBLIMIT*SSLIMIT]; real prevblck[2][SBLIMIT*SSLIMIT]; real k[2][SBLIMIT*SSLIMIT]; int32 nonzero[2]; Ibitstream *stream; Header *header; SynthesisFilter *filter1, *filter2; Obuffer *buffer; enum e_channels which_channels; Bit_Reserve *br; III_side_info_t *si; III_scalefac_t scalefac; uint32 max_gr; int32 frame_start; int32 part2_start; uint32 channels; uint32 first_channel; uint32 last_channel; uint32 sfreq; // private member functions bool get_side_info(); void get_scale_factors(uint32 ch, uint32 gr); void get_LSF_scale_data(uint32 ch, uint32 gr); void get_LSF_scale_factors(uint32 ch, uint32 gr); void huffman_decode(uint32 ch, uint32 gr); void i_stereo_k_values(uint32 is_pos, uint32 io_type, uint32 i); void dequantize_sample(real xr[SBLIMIT][SSLIMIT], uint32 ch, uint32 gr); void reorder(real xr[SBLIMIT][SSLIMIT], uint32 ch, uint32 gr); void stereo(uint32 gr); void antialias(uint32 ch, uint32 gr); void hybrid(uint32 ch, uint32 gr); void do_downmix();};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -