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

📄 spiht.h

📁 spiht的压缩解压缩c编写的
💻 H
字号:
#ifndef SPIHT_H
#define SPIHT_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdarg.h>

#ifndef MAXDOUBLE
#define MAXDOUBLE 1.7976931348623157e+308
#endif

#ifndef MAXFLOAT
#define MAXFLOAT 3.40282347e+38F
#endif

#define M_SQRT2 1.4142135623730950

/*   parse.c   */
int QccParseParametersVA(int argc, char *argv[], const char *format,
                         va_list ap);
int QccParseParameters(int argc, char *argv[], const char *format, ...);

/*   string.c  */
#define QCCSTRINGLEN 1200
typedef char QccString[QCCSTRINGLEN + 1];
void QccStringMakeNull(QccString qccstring);
int QccStringNull(const QccString qccstring);
void QccConvertToQccString(QccString qccstring, const char *str);
void QccStringCopy(QccString qccstring1, const QccString qccstring2);
void QccStringSprintf(QccString qccstring, const char *format, ...);

/*   init.c     */
#define QCCEXIT_NOERROR 0
#define QCCEXIT_ERROR 1
void QccExtractProgramName(const char *argv0);
int QccGetProgramName(QccString program_name);
void QccInit(int argc, char *argv[]);
#define QccExit exit(QCCEXIT_NOERROR)

/*   env.c      */
int QccGetEnv(const char *environment_variable,
              QccString returned_value);
int QccSetEnv(const char *environment_variable,
              const char *value);

/*   version.c  */
void QccVersionInit();
void QccSetUserHeader(const QccString user_header);
void QccGetQccPackVersion(int *major, int *minor, QccString date);
void QccPrintQccPackVersion(FILE *outfile);

/*   error.c    */
#define QCCERROR_OUTPUTLINELENGTH 80
#define QCCERROR_OUTPUTTABLENGTH 8
typedef struct
{
  QccString current_message;
  QccString *error_messages;
  int num_messages;
  int errcode;
} QccErrorStruct;
void QccErrorInit(void);
void QccErrorAddMessageVA(const char *format, va_list ap);
void QccErrorAddMessage(const char *format, ...);
void QccErrorPrintMessages(void);
void QccErrorClearMessages(void);
void QccErrorExit(void);

/*   binary_value.c   */
#define QCC_INT_SIZE 4
int QccBinaryCharToInt(const unsigned char *ch, unsigned int *val);
int QccBinaryIntToChar(unsigned int val, unsigned char *ch);
int QccBinaryCharToFloat(const unsigned char *ch, float *val);
int QccBinaryFloatToChar(float val, unsigned char *ch);


/*   file.c    */
#define QCCMAKESTRING(s) QCCMAKESTRING2(s)
#define QCCMAKESTRING2(s) #s
void QccFileInit(void);
int QccFileExists(const QccString filename);
int QccFileGetExtension(const QccString filename, QccString extension);
FILE *QccFileOpen(const QccString filename, const QccString mode);
int QccFileClose(FILE *fileptr);
int QccFileFlush(FILE *fileptr);
int QccFileReadChar(FILE *infile, char *val);
int QccFileWriteChar(FILE *outfile, char val);
int QccFileReadDouble(FILE *infile, double *val);
int QccFileWriteDouble(FILE *outfile, double val);
int QccFileReadString(FILE *infile, QccString s);
int QccFileWriteString(FILE *outfile, const QccString s);
int QccFileSkipWhiteSpace(FILE *infile, int skip_comments_flag);
int QccFileReadMagicNumber(FILE *infile, QccString magic_num,
                           int *major_version_number,
                           int *minor_version_number);
int QccFileWriteMagicNumber(FILE *outfile, const QccString magic_num);
int QccFileGetMagicNumber(const QccString filename, QccString magic_num);

/*   file_path.c   */
FILE *QccFilePathSearchOpenRead(QccString filename,
                                const char *environment_path_variable,
                                const char *default_path_list);
/*   math.c     */
#define QccMathMax(x, y) (((x) >= (y)) ? (x) : (y))
#define QccMathMin(x, y) (((x) <= (y)) ? (x) : (y))
#define QccMathModulus(x, y) ((y)?((x)-(y)*((int)floor((double)(x)/(y)))):(x))

/*   alpha.c    */
#define QCCALPHA_TRANSPARENT 0.0
#define QccAlphaTransparent(alpha) ((alpha) == QCCALPHA_TRANSPARENT)

/*   vector.c   */
#define QCCVECTOR_EVEN 0
#define QCCVECTOR_ODD 1
typedef double *QccVector;
QccVector QccVectorAlloc(int vector_dimension);
void QccVectorFree(QccVector vector);
int QccVectorZero(QccVector vector, int vector_dimension);
int QccVectorAdd(QccVector vector1, const QccVector vector2,
                 int vector_dimension);
int QccVectorCopy(QccVector vector1, const QccVector vector2,
                  int vector_dimension);
int QccVectorSubsample(const QccVector input_signal,
                       int input_length,
                       QccVector output_signal,
                       int output_length,
                       int sampling_flag);
int QccVectorUpsample(const QccVector input_signal,
                      int input_length,
                      QccVector output_signal,
                      int output_length,
                      int sampling_flag);

/*   matrix.c   */
typedef QccVector *QccMatrix;
QccMatrix QccMatrixAlloc(int num_rows, int num_cols);
void QccMatrixFree(QccMatrix matrix, int num_rows);
int QccMatrixCopy(QccMatrix matrix1, const QccMatrix matrix2,
                  int num_rows, int num_cols);

/*   filter.c   */
#define QCCFILTER_CAUSAL 0
#define QCCFILTER_ANTICAUSAL 1
#define QCCFILTER_SYMMETRIC 2
#define QCCFILTER_SYMMETRIC_EXTENSION 0
#define QCCFILTER_PERIODIC_EXTENSION 1
#define QCCFILTER_SAMESAMPLING 0
#define QCCFILTER_SUBSAMPLEEVEN 1
#define QCCFILTER_SUBSAMPLEODD 2
#define QCCFILTER_UPSAMPLEEVEN 3
#define QCCFILTER_UPSAMPLEODD 4
typedef struct
{
  int causality;
  int length;
  QccVector coefficients;
} QccFilter;
int QccFilterInitialize(QccFilter *filter);
int QccFilterAlloc(QccFilter *filter);
void QccFilterFree(QccFilter *filter);
int QccFilterCopy(QccFilter *filter1,
                  const QccFilter *filter2);
int QccFilterReversal(const QccFilter *filter1,
                      QccFilter *filter2);
int QccFilterAlternateSignFlip(QccFilter *filter);
int QccFilterRead(FILE *infile,
                  QccFilter *filter);
int QccFilterCalcSymmetricExtension(int index, int length);
int QccFilterMultiRateFilterVector(const QccVector input_signal,
                                   int input_length,
                                   QccVector output_signal,
                                   int output_length,
                                   const QccFilter *filter,
                                   int input_sampling,
                                   int output_sampling,
                                   int boundary_extension);
/*   linked_list.c  */
#define QCCLIST_SORTASCENDING 1
#define QCCLIST_SORTDESCENDING 2
typedef struct QccListNodeStruct
{
  int value_size;
  void *value;
  struct QccListNodeStruct *previous;
  struct QccListNodeStruct *next;
} QccListNode;

typedef struct
{
  QccListNode *start;
  QccListNode *end;
} QccList;

void QccListInitialize(QccList *list);
void QccListFreeNode(QccListNode *node);
void QccListFree(QccList *list);
QccListNode *QccListCreateNode(int value_size, const void *value);
int QccListAppendNode(QccList *list, QccListNode *node);
int QccListRemoveNode(QccList *list, QccListNode *node);
int QccListDeleteNode(QccList *list, QccListNode *node);

/*   bit_buffer.c   */
#define QCCBITBUFFER_INPUT 0
#define QCCBITBUFFER_OUTPUT 1
typedef unsigned char QccBitBufferChar;
typedef struct
{
  QccString          filename;
  FILE               *fileptr;
  int                type;
  int                bit_cnt;
  int                byte_cnt;
  int                bits_to_go;
  QccBitBufferChar   buffer;
} QccBitBuffer;
int QccBitBufferInitialize(QccBitBuffer *bit_buffer);
int QccBitBufferStart(QccBitBuffer *bit_buffer);
int QccBitBufferEnd(QccBitBuffer *bit_buffer);
int QccBitBufferFlush(QccBitBuffer *bit_buffer);
int QccBitBufferPutBit(QccBitBuffer *bit_buffer, int bit_value);
int QccBitBufferGetBit(QccBitBuffer *bit_buffer, int *bit_value);
int QccBitBufferGetChar(QccBitBuffer *bit_buffer, unsigned char *val);
int QccBitBufferGetInt(QccBitBuffer *bit_buffer, int *val);
int QccBitBufferGetDouble(QccBitBuffer *bit_buffer, double *val);

#endif

⌨️ 快捷键说明

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