⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter9.h

📁 資料壓縮的原理與應用 SPIHT三個串列的運算之C程式
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef chapter9H
#define chapter9H
#include <iostream.h>
#define SPIHT_TYPE_A 0
#define SPIHT_TYPE_B 1
#define SPIHT_ENCODE 0
#define SPIHT_DECODE 1#define BITBUFFER_INPUT 0#define BITBUFFER_OUTPUT 1
#define WAVFILTERBANK_PHASE_EVEN 0
#define WAVFILTERBANK_PHASE_ODD 1
#define WAVWAVELET_PHASE_EVEN WAVFILTERBANK_PHASE_EVEN
#define WAVWAVELET_PHASE_ODD WAVFILTERBANK_PHASE_ODD

//---------------------------------------------------------------------------

    typedef struct
    {
        char *filename;
        int num_levels;
        int num_rows;
        int num_cols;
        int origin_row;
        int origin_col;
        float matrix[8][8];
    } WAVSubbandPyramid;

    typedef struct
    {        int row;        int col;    } SPIHTCoefficient;
    typedef struct ListNodeStruct
    {
        int row;
        int col;        int type;        struct ListNodeStruct *previous;
        struct ListNodeStruct *next;
    } ListNode;

    typedef struct
    {
        ListNode *start;
        ListNode *end;
    } List;

    typedef unsigned char BitBufferChar;
    typedef struct
    {
        char *filename;
        FILE *fileptr;
        int type;
        int bit_cnt;
        int byte_cnt;
        int bits_to_go;
        BitBufferChar buffer;
    } BitBuffer;

    void SPIHTAlgorithmInitialize(float, float *, SPIHTCoefficient *,
                                List *, List *);
    int ListAppendNode(List *, ListNode *);
    int ListRemoveNode(List *, ListNode *);
    int ListDeleteNode(List *, ListNode *);
    void ListFreeNode(ListNode *);
    void ListFree(List *);
    int SPIHTSortingPass(WAVSubbandPyramid *, BitBuffer *, float,
                               List *, List *, List *, int);    int SPIHTTypeA(WAVSubbandPyramid *, BitBuffer *,
                         ListNode *, ListNode **, float,
                         List *, List *, List *, int);
    int SPIHTTypeB(WAVSubbandPyramid *, BitBuffer *,
                         ListNode *, ListNode **, float,                         List *, int);    int SPIHTInputOutputSignificanceBits(WAVSubbandPyramid *, BitBuffer *,
                                               ListNode *, float, int);    int SPIHTInputOutput(BitBuffer *, int *, int);
    int SPIHTDescendantsSignificance(WAVSubbandPyramid *,
                                           int, int, float);    int SPIHTLSignificance(WAVSubbandPyramid *, int, int, float);
    int SPIHTGetOffspring(WAVSubbandPyramid *,
                                int, int, int *, int *);    int WAVSubbandPyramidSubbandResolution(const WAVSubbandPyramid *,
                                          int *, int *);
    float SPIHTMaximumCoefficient(WAVSubbandPyramid *, int, int);
    int BitBufferPutBit(BitBuffer *, int);
    int BitBufferGetBit(BitBuffer *, int);
    int FileWriteChar(FILE *, char);

#endif
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -