📄 libqccpackwav.h
字号:
const QccWAVWavelet *wavelet, const QccWAVPerceptualWeights *perceptual_weights);/* zerotree.c */#define QCCWAVZEROTREE_MAGICNUM "ZT"#define QCCWAVZEROTREE_SYMBOLSIGNIFICANT 1#define QCCWAVZEROTREE_SYMBOLINSIGNIFICANT 2 /* isolated zero */#define QCCWAVZEROTREE_SYMBOLZTROOT 3#define QCCWAVZEROTREE_SYMBOLTEMP 4#define QCCWAVZEROTREE_NUMSYMBOLS 4#define QCCWAVZEROTREE_WHOLETREE -1typedef struct{ QccString filename; QccString magic_num; int major_version; int minor_version; int image_num_cols; int image_num_rows; double image_mean; int num_levels; /* num_subbands = 3*num_levels + 1 */ int num_subbands; int alphabet_size; int *num_cols; /* 0:(num_subbands - 1) */ int *num_rows; /* 0:(num_subbands - 1) */ char ***zerotree; /* 0:(num_subbands - 1) */} QccWAVZerotree;int QccWAVZerotreeInitialize(QccWAVZerotree *zerotree);int QccWAVZerotreeCalcSizes(const QccWAVZerotree *zerotree);int QccWAVZerotreeAlloc(QccWAVZerotree *zerotree);void QccWAVZerotreeFree(QccWAVZerotree *zerotree);int QccWAVZerotreePrint(const QccWAVZerotree *zerotree);int QccWAVZerotreeNullSymbol(const char symbol);int QccWAVZerotreeMakeSymbolNull(char *symbol);int QccWAVZerotreeMakeSymbolNonnull(char *symbol);int QccWAVZerotreeMakeFullTree(QccWAVZerotree *zerotree);int QccWAVZerotreeMakeEmptyTree(QccWAVZerotree *zerotree);int QccWAVZerotreeRead(QccWAVZerotree *zerotree);int QccWAVZerotreeWrite(const QccWAVZerotree *zerotree);int QccWAVZerotreeCarveOutZerotree(QccWAVZerotree *zerotree, int subband, int row, int col);int QccWAVZerotreeUndoZerotree(QccWAVZerotree *zerotree, int subband, int row, int col);/* subband_pyramid3D.c */#define QCCWAVSUBBANDPYRAMID3D_MAGICNUM "SP3"#define QCCWAVSUBBANDPYRAMID3D_DYADIC 0#define QCCWAVSUBBANDPYRAMID3D_PACKET 1typedef struct{ QccString filename; QccString magic_num; int major_version; int minor_version; int transform_type; int temporal_num_levels; int spatial_num_levels; int num_frames; int num_rows; int num_cols; int origin_frame; int origin_row; int origin_col; int subsample_pattern_frame; int subsample_pattern_row; int subsample_pattern_col; QccVolume volume;} QccWAVSubbandPyramid3D;int QccWAVSubbandPyramid3DInitialize(QccWAVSubbandPyramid3D *subband_pyramid);int QccWAVSubbandPyramid3DAlloc(QccWAVSubbandPyramid3D *subband_pyramid);void QccWAVSubbandPyramid3DFree(QccWAVSubbandPyramid3D *subband_pyramid);int QccWAVSubbandPyramid3DNumLevelsToNumSubbandsDyadic(int num_levels);int QccWAVSubbandPyramid3DNumLevelsToNumSubbandsPacket(int temporal_num_levels, int spatial_num_levels);int QccWAVSubbandPyramid3DNumSubbandsToNumLevelsDyadic(int num_subbands);int QccWAVSubbandPyramid3DCalcLevelFromSubbandDyadic(int subband, int num_levels);int QccWAVSubbandPyramid3DCalcLevelFromSubbandPacket(int subband, int temporal_num_levels, int spatial_num_levels, int *temporal_level, int *spatial_level);int QccWAVSubbandPyramid3DSubbandSize(const QccWAVSubbandPyramid3D *subband_pyramid, int subband, int *subband_num_frames, int *subband_num_rows, int *subband_num_cols);int QccWAVSubbandPyramid3DSubbandOffsets(const QccWAVSubbandPyramid3D *subband_pyramid, int subband, int *frame_offset, int *row_offset, int *col_offset);int QccWAVSubbandPyramid3DPrint(const QccWAVSubbandPyramid3D *subband_pyramid);int QccWAVSubbandPyramid3DRead(QccWAVSubbandPyramid3D *subband_pyramid);int QccWAVSubbandPyramid3DWrite(const QccWAVSubbandPyramid3D *subband_pyramid);int QccWAVSubbandPyramid3DCopy(QccWAVSubbandPyramid3D *subband_pyramid1, const QccWAVSubbandPyramid3D *subband_pyramid2);int QccWAVSubbandPyramid3DZeroSubband(QccWAVSubbandPyramid3D *subband_pyramid, int subband);int QccWAVSubbandPyramid3DSubtractMean(QccWAVSubbandPyramid3D *subband_pyramid, double *mean, const QccSQScalarQuantizer *quantizer);int QccWAVSubbandPyramid3DAddMean(QccWAVSubbandPyramid3D *subband_pyramid, double mean);int QccWAVSubbandPyramid3DDWT(QccWAVSubbandPyramid3D *subband_pyramid, int transform_type, int temporal_num_levels, int spatial_num_levels, const QccWAVWavelet *wavelet);int QccWAVSubbandPyramid3DInverseDWT(QccWAVSubbandPyramid3D *subband_pyramid, const QccWAVWavelet *wavelet);int QccWAVSubbandPyramid3DShapeAdaptiveDWT(QccWAVSubbandPyramid3D *subband_pyramid, QccWAVSubbandPyramid3D *mask, int transform_type, int temporal_num_levels, int spatial_num_levels, const QccWAVWavelet *wavelet);int QccWAVSubbandPyramid3DInverseShapeAdaptiveDWT(QccWAVSubbandPyramid3D *subband_pyramid, QccWAVSubbandPyramid3D *mask, const QccWAVWavelet *wavelet);int QccWAVSubbandPyramid3DPacketToDyadic(QccWAVSubbandPyramid3D *subband_pyramid, int num_levels);int QccWAVSubbandPyramid3DDyadicToPacket(QccWAVSubbandPyramid3D *subband_pyramid, int temporal_num_levels, int spatial_num_levels);/* sfq.c */#define QCCWAVSFQ_MEANQUANTIZER_STEPSIZE 1.0#define QCCWAVSFQ_BASEBANDQUANTIZER_START_STEPSIZE 7.6#define QCCWAVSFQ_BASEBANDQUANTIZER_END_STEPSIZE 32.0#define QCCWAVSFQ_BASEBANDQUANTIZER_INCREMENT 0.1#define QCCWAVSFQ_HIGHPASSQUANTIZER_START_STEPSIZE 7.6#define QCCWAVSFQ_HIGHPASSQUANTIZER_END_STEPSIZE 32.0#define QCCWAVSFQ_HIGHPASSQUANTIZER_INCREMENT 0.1#define QCCWAVSFQ_PREDICTOR 3#define QCCWAVSFQ_ZEROTREE_STARTSUBBAND 1int QccWAVsfqWaveletAnalysis(const QccIMGImageComponent *input_image, QccWAVSubbandPyramid *subband_pyramid, QccWAVZerotree *zerotree, const QccSQScalarQuantizer *mean_quantizer, const QccWAVWavelet *wavelet, const QccWAVPerceptualWeights *perceptual_weights, double lambda);int QccWAVsfqBasebandEncode(const QccWAVSubbandPyramid *subband_pyramid, QccWAVZerotree *zerotree, QccSQScalarQuantizer *baseband_quantizer, QccChannel *channels, double lambda, QccIMGImageComponent *reconstructed_baseband);int QccWAVsfqHighpassEncode(const QccWAVSubbandPyramid *subband_pyramid, QccWAVZerotree *zerotree, QccSQScalarQuantizer *highpass_quantizer, QccChannel *channels, double lambda, int *high_tree_thresholds, int *low_tree_thresholds, QccIMGImageComponent *reconstructed_baseband);int QccWAVsfqDecode(QccBitBuffer *input_buffer, QccIMGImageComponent *output_image, QccWAVZerotree *zerotree, const QccSQScalarQuantizer *baseband_quantizer, const QccSQScalarQuantizer *highpass_quantizer, int *high_tree_thresholds, int *low_tree_thresholds, QccChannel *channels, const QccWAVWavelet *wavelet, const QccWAVPerceptualWeights *perceptual_weights);int QccWAVsfqAssembleBitstreamHeader(const QccWAVZerotree *zerotree, const QccSQScalarQuantizer *mean_quantizer, const QccSQScalarQuantizer *baseband_quantizer, const QccSQScalarQuantizer *highpass_quantizer, const int *high_tree_thresholds, const int *low_tree_thresholds, QccBitBuffer *output_buffer, int *num_output_bits);int QccWAVsfqDisassembleBitstreamHeader(QccWAVZerotree *zerotree, QccSQScalarQuantizer *mean_quantizer, QccSQScalarQuantizer *baseband_quantizer, QccSQScalarQuantizer *highpass_quantizer, int *no_tree_prediction, QccBitBuffer *input_buffer);int QccWAVsfqAssembleBitstream(const QccWAVZerotree *zerotree, const QccSQScalarQuantizer *mean_quantizer, const QccSQScalarQuantizer *baseband_quantizer, const QccSQScalarQuantizer *highpass_quantizer, const QccChannel *channels, const int *high_tree_thresholds, const int *low_tree_thresholds, QccBitBuffer *output_buffer, double *rate_header, double *rate_zerotree, double *rate_channels);int QccWAVsfqDisassembleBitstreamZerotree(int num_subbands, int *high_tree_thresholds, int *low_tree_thresholds, int *zerotree_symbols, QccBitBuffer *input_buffer);int QccWAVsfqDisassembleBitstreamChannel(QccENTArithmeticModel *model, QccWAVZerotree *zerotree, QccChannel *channels, int subband, QccBitBuffer *input_buffer);/* sr.c */int QccWAVsrEncode(const QccIMGImageComponent *image, QccBitBuffer *buffer, const QccSQScalarQuantizer *quantizer, int num_levels, const QccWAVWavelet *wavelet, const QccWAVPerceptualWeights *perceptual_weights);int QccWAVsrDecodeHeader(QccBitBuffer *buffer, int *num_levels, int *num_rows, int *num_cols, QccSQScalarQuantizer *quantizer, double *image_mean);int QccWAVsrDecode(QccBitBuffer *buffer, QccIMGImageComponent *image, const QccSQScalarQuantizer *quantizer, int num_levels, const QccWAVWavelet *wavelet, const QccWAVPerceptualWeights *perceptual_weights, double image_mean);/* wdr.c */typedef struct{ int row; int col; unsigned int index;} QccWAVwdrCoefficientBlock;int QccWAVwdrEncodeHeader(QccBitBuffer *buffer, int num_levels, int num_rows, int num_cols, double image_mean,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -