VideoCodec/Modules/Transform/DCT.h
#ifndef DCT_H_
#define DCT_H_
#include <math.h>
#include "../../Data/Constants.h"
#include "../../Data/PictureInfo.h"
#include "../../Logger.h"
#include "../Module.h"
namespace VideoCodec
{
class DCT : public VideoCodec::Module
{
public:
DCT();
virtual ~DCT();
ConfigurationStatus Configure(ConfigurationElement* configuration);
void ExecuteDCT(PictureInfo* picture);
void ExecuteIDCT(PictureInfo* picture);
void initialize();
private:
void referenceDCT(unsigned char* data, short int* result);
void referenceIDCT(short int* data, unsigned char* result);
void debugOutputMB(short int* mb, const char* label);
void debugOutputMB(unsigned char* mb, const char* label);
bool isInitialized;
double* dctCosineProductLookupTable;
double* idctCosineProductLookupTable;
double reciprocalRootTwo;
};
}
#endif /*DCT_H_*/