aboutsummaryrefslogtreecommitdiff
path: root/Src/libvp6/include/cclib.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/libvp6/include/cclib.h')
-rw-r--r--Src/libvp6/include/cclib.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/Src/libvp6/include/cclib.h b/Src/libvp6/include/cclib.h
new file mode 100644
index 00000000..ed58877f
--- /dev/null
+++ b/Src/libvp6/include/cclib.h
@@ -0,0 +1,183 @@
+#ifndef _CCLIB_H
+#define _CCLIB_H
+#include "cpuidlib.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#else
+#if !defined(bool)
+ typedef int bool;
+#endif
+#endif
+
+int InitCCLib( PROCTYPE CpuType );
+
+void DeInitCCLib( void );
+
+extern void (*RGB32toYV12)( unsigned char *RGBABuffer, int ImageWidth, int ImageHeight,
+ unsigned char *YBuffer, unsigned char *UBuffer, unsigned char *VBuffer, int SrcPitch,int DstPitch );
+
+extern void (*RGB24toYV12)( unsigned char *RGBBuffer, int ImageWidth, int ImageHeight,
+ unsigned char *YBuffer, unsigned char *UBuffer, unsigned char *VBuffer, int SrcPitch,int DstPitch );
+
+extern void (*UYVYtoYV12)( unsigned char *UYVYBuffer, int ImageWidth, int ImageHeight,
+ unsigned char *YBuffer, unsigned char *UBuffer, unsigned char *VBuffer, int SrcPitch,int DstPitch );
+
+extern void (*YUY2toYV12)( unsigned char *UYVYBuffer, int ImageWidth, int ImageHeight,
+ unsigned char *YBuffer, unsigned char *UBuffer, unsigned char *VBuffer, int SrcPitch,int DstPitch );
+
+extern void (*YVYUtoYV12)( unsigned char *YVYUBuffer, int ImageWidth, int ImageHeight,
+ unsigned char *YBuffer, unsigned char *UBuffer, unsigned char *VBuffer, int SrcPitch,int DstPitch );
+
+extern void RGB24toYV12F
+(
+ unsigned char *RGBBuffer,
+ int ImageWidth,
+ int ImageHeight,
+ unsigned char *YBuffer,
+ unsigned char *UBuffer,
+ unsigned char *VBuffer,
+ int SrcPitch,
+ int DstPitch
+);
+
+extern void RGB32toYV12F
+(
+ unsigned char *RGBBuffer,
+ int ImageWidth,
+ int ImageHeight,
+ unsigned char *YBuffer,
+ unsigned char *UBuffer,
+ unsigned char *VBuffer,
+ int SrcPitch,
+ int DstPitch
+);
+
+extern void UYVYtoYV12F
+(
+ unsigned char *UYVYBuffer,
+ int ImageWidth,
+ int ImageHeight,
+ unsigned char *YBuffer,
+ unsigned char *UBuffer,
+ unsigned char *VBuffer,
+ int SrcPitch,
+ int DstPitch
+);
+
+extern void YUY2toYV12F
+(
+ unsigned char *YUY2Buffer,
+ int ImageWidth,
+ int ImageHeight,
+ unsigned char *YBuffer,
+ unsigned char *UBuffer,
+ unsigned char *VBuffer,
+ int SrcPitch,
+ int DstPitch
+);
+
+extern void YVYUtoYV12F
+(
+ unsigned char *YVYUBuffer,
+ int ImageWidth,
+ int ImageHeight,
+ unsigned char *YBuffer,
+ unsigned char *UBuffer,
+ unsigned char *VBuffer,
+ int SrcPitch,
+ int DstPitch
+);
+
+/*
+ * Macros to make it easier to call the needed functions
+ */
+#define CC_RGB32toYV12( _RGBABuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer ) \
+ (*RGB32toYV12)( _RGBABuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer, _ImageWidth*4, _ImageWidth )
+
+#define CC_RGB24toYV12( _RGBBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer ) \
+ (*RGB24toYV12)( _RGBBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer, _ImageWidth*3, _ImageWidth )
+
+#define CC_UYVYtoYV12( _UYVYBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer ) \
+ (*UYVYtoYV12)( _UYVYBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer, _ImageWidth*2, _ImageWidth )
+
+#define CC_YUY2toYV12( _YUY2Buffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer ) \
+ (*YUY2toYV12)( _YUY2Buffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer, _ImageWidth*2, _ImageWidth )
+
+#define CC_YVYUtoYV12( _YVYUBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer ) \
+ (*YVYUtoYV12)( _YVYUBuffer, _ImageWidth, _ImageHeight, _YBuffer, _UBuffer, _VBuffer, _ImageWidth*2, _ImageWidth )
+
+// super generic rgb to yuv color conversion can handle any rgb to yuv conversion
+// provided r,g,b components are 1 byte apiece, and that the resulting y is 1 byte
+extern void ConvertRGBtoYUV(
+ const unsigned char* const pucSourceR, const unsigned char* const pucSourceG, const unsigned char* const pucSourceB,
+ int width, int height, int rgb_step, int rgb_pitch,
+ unsigned char* const pucDestY, unsigned char* const pucDestU, unsigned char* const pucDestV,
+ int uv_width_shift, int uv_height_shift,
+ int y_step, int y_pitch,int uv_step,int uv_pitch);
+
+extern void ConvertRGBtoYUVI(
+ const unsigned char* const pucSourceR, const unsigned char* const pucSourceG, const unsigned char* const pucSourceB,
+ int iWidth, int iHeight, int iStepRGB, int iStrideRGB,
+ unsigned char* const pucDestY, unsigned char* const pucDestU, unsigned char* const pucDestV,
+ int uv_width_shift, int uv_height_shift,
+ int iStepY, int iStrideY, int iStepUV, int iStrideUV);
+
+// This assumes 3 byte RGB data with the same component ordering in the source and destination
+extern void ConvertRGBtoRGB(const unsigned char* const pucSource, long lWidth, long lHeight, long lStepIn, long lStrideIn,
+ unsigned char* const pucDest, long lStepOut, long lStrideOut);
+
+extern void ConvertYUVtoRGB(
+ const unsigned char* const pucYPlane, const unsigned char* const pucUPlane, const unsigned char* const pucVPlane,
+ long lWidth, long lHeight,
+ long uv_width_shift, long uv_height_shift, // not used, should both be set to 1
+ long lStepY, long lStrideY,long lStepUV, long lStrideUV,
+ unsigned char* const pucRPlane, unsigned char* const pucGPlane, unsigned char* const pucBPlane,
+ long lStepRGB, long lStrideRGB);
+
+extern void ConvertYUVItoRGB(
+ const unsigned char* const pucYPlane, const unsigned char* const pucUPlane, const unsigned char* const pucVPlane,
+ long lWidth, long lHeight,
+ long uv_width_shift, long uv_height_shift, // not used, should both be set to 1
+ long lStepY, long lStrideY,long lStepUV, long lStrideUV,
+ unsigned char* const pucRPlane, unsigned char* const pucGPlane, unsigned char* const pucBPlane,
+ long lStepRGB, long lStrideRGB);
+
+extern void ConvertYUVtoRGB2(
+ const unsigned char* const pucYPlane, const unsigned char* const pucUPlane, const unsigned char* const pucVPlane,
+ long lWidth, long lHeight,
+ long uv_width_shift, long uv_height_shift, // not used, should both be set to 1
+ long lStepY, long lStrideY,long lStepUV, long lStrideUV,
+ unsigned char* const pucRPlane, unsigned char* const pucGPlane, unsigned char* const pucBPlane,
+ long lStepRGB, long lStrideRGB,
+ bool bSupersampleHoriz, bool bSupersampleVert);
+
+extern void ConvertYUVItoRGB2(
+ const unsigned char* const pucYPlane, const unsigned char* const pucUPlane, const unsigned char* const pucVPlane,
+ long lWidth, long lHeight,
+ long uv_width_shift, long uv_height_shift, // not used, should both be set to 1
+ long lStepY, long lStrideY,long lStepUV, long lStrideUV,
+ unsigned char* const pucRPlane, unsigned char* const pucGPlane, unsigned char* const pucBPlane,
+ long lStepRGB, long lStrideRGB,
+ bool bSupersampleHoriz, bool bSupersampleVert);
+
+// This assumes packed planar data
+extern void ConvertYUVtoYUV(const unsigned char* const pucYIn, const unsigned char* const pucUV1In, const unsigned char* const pucUV2In,
+ long m_lWidth, long m_lHeight,
+ unsigned char* const pucYOut, unsigned char* const pucUV1Out, unsigned char* const pucUV2Out);
+
+// This assumes packed planar data
+extern void ConvertYUVtoYUVI(const unsigned char* const pucYIn, const unsigned char* const pucUV1In, const unsigned char* const pucUV2In,
+ long m_lWidth, long m_lHeight,
+ unsigned char* const pucYOut, unsigned char* const pucUV1Out, unsigned char* const pucUV2Out);
+
+// This assumes packed planar data
+extern void ConvertYUVItoYUV(const unsigned char* const pucYIn, const unsigned char* const pucUV1In, const unsigned char* const pucUV2In,
+ long m_lWidth, long m_lHeight,
+ unsigned char* const pucYOut, unsigned char* const pucUV1Out, unsigned char* const pucUV2Out);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _CCLIB_H */