blob: 085d744d0a183b9c9f782472de5fff4f3d6ff626 [file] [log] [blame]
#ifndef __LIBSCALER_SWSCALER_H__
#define __LIBSCALER_SWSCALER_H__
#include "libscaler-common.h"
class CScalerSW {
protected:
char *m_pSrc[3];
char *m_pDst[3];
unsigned int m_nSrcLeft, m_nSrcTop;
unsigned int m_nSrcWidth, m_nSrcHeight;
unsigned int m_nSrcStride;
unsigned int m_nDstLeft, m_nDstTop;
unsigned int m_nDstWidth, m_nDstHeight;
unsigned int m_nDstStride;
public:
CScalerSW() { Clear(); }
virtual ~CScalerSW() { };
void Clear();
virtual bool Scale() = 0;
void SetSrcRect(unsigned int left, unsigned int top, unsigned int width, unsigned int height, unsigned int stride) {
m_nSrcLeft = left;
m_nSrcTop = top;
m_nSrcWidth = width;
m_nSrcHeight = height;
m_nSrcStride = stride;
}
void SetDstRect(unsigned int left, unsigned int top, unsigned int width, unsigned int height, unsigned int stride) {
m_nDstLeft = left;
m_nDstTop = top;
m_nDstWidth = width;
m_nDstHeight = height;
m_nDstStride = stride;
}
};
class CScalerSW_YUYV: public CScalerSW {
public:
CScalerSW_YUYV(char *src, char *dst) {
m_pSrc[0] = src;
m_pDst[0] = dst;
}
virtual bool Scale();
};
class CScalerSW_NV12: public CScalerSW {
public:
CScalerSW_NV12(char *src0, char *src1, char *dst0, char *dst1) {
m_pSrc[0] = src0;
m_pDst[0] = dst0;
m_pSrc[1] = src1;
m_pDst[1] = dst1;
}
virtual bool Scale();
};
#endif //__LIBSCALER_SWSCALER_H__