--- colorspace.h 2002/03/08 02:44:45 1.1 +++ colorspace.h 2003/02/15 15:22:18 1.5 @@ -2,80 +2,148 @@ #define _COLORSPACE_H #include "../portab.h" - +#include "../divx4.h" /* initialize tables */ void colorspace_init(void); -/* input color conversion functions (encoder) */ -typedef void (color_inputFunc)(uint8_t *y_out, uint8_t *u_out, uint8_t *v_out, - uint8_t *src, int width, int height, int stride); +/* colorspace conversion function (encoder) */ -typedef color_inputFunc *color_inputFuncPtr; +typedef void (packedFunc) (uint8_t * x_ptr, + int x_stride, + uint8_t * y_src, + uint8_t * v_src, + uint8_t * u_src, + int y_stride, + int uv_stride, + int width, + int height, + int vflip); + +typedef packedFunc *packedFuncPtr; + + +/* xxx_to_yv12 colorspace conversion functions (encoder) */ + +extern packedFuncPtr rgb555_to_yv12; +extern packedFuncPtr rgb565_to_yv12; +extern packedFuncPtr bgr_to_yv12; +extern packedFuncPtr bgra_to_yv12; +extern packedFuncPtr abgr_to_yv12; +extern packedFuncPtr rgba_to_yv12; +extern packedFuncPtr yuyv_to_yv12; +extern packedFuncPtr uyvy_to_yv12; + +extern packedFuncPtr rgb555i_to_yv12; +extern packedFuncPtr rgb565i_to_yv12; +extern packedFuncPtr bgri_to_yv12; +extern packedFuncPtr bgrai_to_yv12; +extern packedFuncPtr abgri_to_yv12; +extern packedFuncPtr rgbai_to_yv12; +extern packedFuncPtr yuyvi_to_yv12; +extern packedFuncPtr uyvyi_to_yv12; -extern color_inputFuncPtr rgb555_to_yv12; -extern color_inputFuncPtr rgb565_to_yv12; -extern color_inputFuncPtr rgb24_to_yv12; -extern color_inputFuncPtr rgb32_to_yv12; -extern color_inputFuncPtr yuv_to_yv12; -extern color_inputFuncPtr yuyv_to_yv12; -extern color_inputFuncPtr uyvy_to_yv12; /* plain c */ -color_inputFunc rgb555_to_yv12_c; -color_inputFunc rgb565_to_yv12_c; -color_inputFunc rgb24_to_yv12_c; -color_inputFunc rgb32_to_yv12_c; -color_inputFunc yuv_to_yv12_c; -color_inputFunc yuyv_to_yv12_c; -color_inputFunc uyvy_to_yv12_c; +packedFunc rgb555_to_yv12_c; +packedFunc rgb565_to_yv12_c; +packedFunc bgr_to_yv12_c; +packedFunc bgra_to_yv12_c; +packedFunc abgr_to_yv12_c; +packedFunc rgba_to_yv12_c; +packedFunc yuyv_to_yv12_c; +packedFunc uyvy_to_yv12_c; + +packedFunc rgb555i_to_yv12_c; +packedFunc rgb565i_to_yv12_c; +packedFunc bgri_to_yv12_c; +packedFunc bgrai_to_yv12_c; +packedFunc abgri_to_yv12_c; +packedFunc rgbai_to_yv12_c; +packedFunc yuyvi_to_yv12_c; +packedFunc uyvyi_to_yv12_c; + /* mmx */ -color_inputFunc rgb24_to_yv12_mmx; -color_inputFunc rgb32_to_yv12_mmx; -color_inputFunc yuv_to_yv12_mmx; -color_inputFunc yuyv_to_yv12_mmx; -color_inputFunc uyvy_to_yv12_mmx; +packedFunc bgr_to_yv12_mmx; +packedFunc bgra_to_yv12_mmx; +packedFunc yuyv_to_yv12_mmx; +packedFunc uyvy_to_yv12_mmx; + +/* 3dnow */ +packedFunc yuyv_to_yv12_3dn; +packedFunc uyvy_to_yv12_3dn; /* xmm */ -color_inputFunc yuv_to_yv12_xmm; +packedFunc yuyv_to_yv12_xmm; +packedFunc uyvy_to_yv12_xmm; -/* output color conversion functions (decoder) */ - -typedef void (color_outputFunc)(uint8_t *dst, int dst_stride, - uint8_t *y_src, uint8_t *v_src, - uint8_t * u_src, int y_stride, - int uv_stride, int width, int height); - -typedef color_outputFunc* color_outputFuncPtr; - -extern color_outputFuncPtr yv12_to_rgb555; -extern color_outputFuncPtr yv12_to_rgb565; -extern color_outputFuncPtr yv12_to_rgb24; -extern color_outputFuncPtr yv12_to_rgb32; -extern color_outputFuncPtr yv12_to_yuv; -extern color_outputFuncPtr yv12_to_yuyv; -extern color_outputFuncPtr yv12_to_uyvy; +/* yv12_to_xxx colorspace conversion functions (decoder) */ -/* plain c */ -void init_yuv_to_rgb(void); +extern packedFuncPtr yv12_to_rgb555; +extern packedFuncPtr yv12_to_rgb565; +extern packedFuncPtr yv12_to_bgr; +extern packedFuncPtr yv12_to_bgra; +extern packedFuncPtr yv12_to_abgr; +extern packedFuncPtr yv12_to_rgba; +extern packedFuncPtr yv12_to_yuyv; +extern packedFuncPtr yv12_to_uyvy; + +extern packedFuncPtr yv12_to_rgb555i; +extern packedFuncPtr yv12_to_rgb565i; +extern packedFuncPtr yv12_to_bgri; +extern packedFuncPtr yv12_to_bgrai; +extern packedFuncPtr yv12_to_abgri; +extern packedFuncPtr yv12_to_rgbai; +extern packedFuncPtr yv12_to_yuyvi; +extern packedFuncPtr yv12_to_uyvyi; -color_outputFunc yv12_to_rgb555_c; -color_outputFunc yv12_to_rgb565_c; -color_outputFunc yv12_to_rgb24_c; -color_outputFunc yv12_to_rgb32_c; -color_outputFunc yv12_to_yuv_c; -color_outputFunc yv12_to_yuyv_c; -color_outputFunc yv12_to_uyvy_c; +/* plain c */ +packedFunc yv12_to_rgb555_c; +packedFunc yv12_to_rgb565_c; +packedFunc yv12_to_bgr_c; +packedFunc yv12_to_bgra_c; +packedFunc yv12_to_abgr_c; +packedFunc yv12_to_rgba_c; +packedFunc yv12_to_yuyv_c; +packedFunc yv12_to_uyvy_c; + +packedFunc yv12_to_rgb555i_c; +packedFunc yv12_to_rgb565i_c; +packedFunc yv12_to_bgri_c; +packedFunc yv12_to_bgrai_c; +packedFunc yv12_to_abgri_c; +packedFunc yv12_to_rgbai_c; +packedFunc yv12_to_yuyvi_c; +packedFunc yv12_to_uyvyi_c; /* mmx */ -color_outputFunc yv12_to_rgb24_mmx; -color_outputFunc yv12_to_rgb32_mmx; -color_outputFunc yv12_to_yuyv_mmx; -color_outputFunc yv12_to_uyvy_mmx; +packedFunc yv12_to_bgr_mmx; +packedFunc yv12_to_bgra_mmx; +packedFunc yv12_to_yuyv_mmx; +packedFunc yv12_to_uyvy_mmx; + +packedFunc yv12_to_yuyvi_mmx; +packedFunc yv12_to_uyvyi_mmx; + + +typedef void (planarFunc) ( + uint8_t * y_dst, uint8_t * u_dst, uint8_t * v_dst, + int y_dst_stride, int uv_dst_stride, + uint8_t * y_src, uint8_t * u_src, uint8_t * v_src, + int y_src_stride, int uv_src_stride, + int width, int height, int vflip); +typedef planarFunc *planarFuncPtr; + +extern planarFuncPtr yv12_to_yv12; + +planarFunc yv12_to_yv12_c; +planarFunc yv12_to_yv12_mmx; +planarFunc yv12_to_yv12_xmm; + -#endif /* _COLORSPACE_H_ */ +#endif /* _COLORSPACE_H_ */