VideoCodec/Modules/Prediction/MotionEstimation.h
#ifndef MOTIONESTIMATION_H_
#define MOTIONESTIMATION_H_
#include "../../Data/Constants.h"
#include "../../Data/PictureInfo.h"
#include "../Module.h"
namespace VideoCodec
{
class MotionEstimation : public VideoCodec::Module
{
public:
MotionEstimation();
virtual ~MotionEstimation();
ConfigurationStatus Configure(ConfigurationElement* configuration);
void CalculateMotionVectors(PictureInfo* reference, PictureInfo* current);
void ApplyMotionVectors(PictureInfo* subject, SignedByte* xComponents, SignedByte* yComponents);
void EnableMV4();
bool UseSubPixel();
private:
UnsignedShort sumAbsoluteError(UnsignedByte* referenceDataStart, UnsignedByte* currentStart, UnsignedShort imageWidth, unsigned char blockSize);
UnsignedByte distance;
UnsignedShort saeLimit;
bool subPixel;
bool mv4;
};
}
#endif /*MOTIONESTIMATION_H_*/