VideoCodec/Modules/Quantization/DCTCoefficientQuantizer.h
#ifndef DCTCOEFFICIENTQUANTIZER_H_
#define DCTCOEFFICIENTQUANTIZER_H_
#include <math.h>
#include "../Module.h"
#include "../../Logger.h"
#include "../../Data/Constants.h"
#include "../../Data/PictureInfo.h"
namespace VideoCodec
{
class DCTCoefficientQuantizer : public VideoCodec::Module
{
public:
DCTCoefficientQuantizer();
virtual ~DCTCoefficientQuantizer();
ConfigurationStatus Configure(ConfigurationElement* configuration);
void QuantizeDCTCoefficients(PictureInfo* picture, bool isInter);
void DequantizeDCTCoefficients(PictureInfo* picture, bool isInter);
void SetQuantizationMethod(DCTCoefficientQuantizationMethod intraQuantizationMethod, DCTCoefficientQuantizationMethod interQuantizationMethod);
void SetIntraQuantizationMethod(DCTCoefficientQuantizationMethod intraQuantizationMethod);
void SetInterQuantizationMethod(DCTCoefficientQuantizationMethod interQuantizationMethod);
DCTCoefficientQuantizationMethod GetInterQuantizationMethod();
DCTCoefficientQuantizationMethod GetIntraQuantizationMethod();
UnsignedByte GetInterQuantizationScale();
UnsignedByte GetIntraQuantizationScale();
void SetInterQuantizationScale(UnsignedByte quantizationScale);
void SetIntraQuantizationScale(UnsignedByte quantizationScale);
inline void QuantizeIntraACValues(SignedShort* block, int* quantizationMatrix);
inline void DequantizeIntraACValues(SignedShort* block, int* quantizationMatrix);
private:
DCTCoefficientQuantizationMethod intraQuantizationMethod;
DCTCoefficientQuantizationMethod interQuantizationMethod;
UnsignedByte intraQuantizationScale;
UnsignedByte interQuantizationScale;
};
}
#endif /*DCTCOEFFICIENTQUANTIZER_H_*/