You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
62 lines
1.7 KiB
#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__
|