FasTC/Core/include/TexComp.h

81 lines
2.8 KiB
C++

#ifndef _TEX_COMP_H_
#define _TEX_COMP_H_
#include "CompressedImage.h"
// Forward declarations
class ImageFile;
class CompressedImage;
class BlockStatManager;
struct SCompressionSettings {
SCompressionSettings(); // defaults
// The compression format for the image.
ECompressionFormat format;
// The flag that requests us to use SIMD, if it is available
bool bUseSIMD;
// The number of threads to spawn in order to process the data
int iNumThreads;
// Some compression formats take a measurement of quality when
// compressing an image. If the format supports it, this value
// will be used for quality purposes.
int iQuality;
// The number of compressions to perform. The program will compress
// the image this many times, and then take the average of the timing.
int iNumCompressions;
// This setting measures the number of blocks that a thread
// will process at any given time. If this value is zero,
// which is the default, the work will be divided by the
// number of threads, and each thread will do it's job and
// exit.
int iJobSize;
// This is an optinal pointer to a stat manager class. If
// instantiated and the proper function pointer is defined
// then the compression routine that collects the stats will
// be called.
BlockStatManager *pStatManager;
};
extern bool CompressImageData(
const unsigned char *data,
const unsigned int dataSz,
unsigned char *cmpData,
const unsigned int cmpDataSz,
const SCompressionSettings &settings
);
// A compression function format. It takes the raw data and image dimensions and
// returns the compressed image data into outData. It is assumed that there is
// enough space allocated for outData to store the compressed data. Allocation
// is dependent on the compression format.
typedef void (* CompressionFunc)(
const unsigned char *inData, // Raw image data
unsigned char *outData, // Buffer to store compressed data.
unsigned int width, // Image width
unsigned int height // Image height
);
// A compression function format. It takes the raw data and image dimensions and
// returns the compressed image data into outData. It is assumed that there is
// enough space allocated for outData to store the compressed data. Allocation
// is dependent on the compression format.
typedef void (* CompressionFuncWithStats)(
const unsigned char *inData, // Raw image data
unsigned char *outData, // Buffer to store compressed data.
unsigned int width, // Image width
unsigned int height, // Image height
BlockStatManager &statManager// Stat manager
);
// This function computes the Peak Signal to Noise Ratio between a
// compressed image and a raw image.
extern double ComputePSNR(const CompressedImage &ci, const ImageFile &file);
#endif //_TEX_COMP_H_