📄 spiht.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 + -