Files
core/ASCMediaCore3/VideoFrameTransformLib/Common.h

124 lines
5.9 KiB
C

#pragma once
#ifdef __cplusplus
extern "C" {
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef void (fastconvert_packedFunc)(void* x_ptr, int x_stride,
void* y_src, void* v_src, void* u_src, int y_stride, int uv_stride,
int width, int height, int vflip);
typedef fastconvert_packedFunc *fastconvert_packedFuncPtr;
/* plain c */
extern fastconvert_packedFunc fastconvert_rgb555_to_yv12_c;
extern fastconvert_packedFunc fastconvert_rgb565_to_yv12_c;
extern fastconvert_packedFunc fastconvert_bgr_to_yv12_c;
extern fastconvert_packedFunc fastconvert_bgra_to_yv12_c;
extern fastconvert_packedFunc fastconvert_abgr_to_yv12_c;
extern fastconvert_packedFunc fastconvert_rgba_to_yv12_c;
extern fastconvert_packedFunc fastconvert_argb_to_yv12_c;
extern fastconvert_packedFunc fastconvert_yuyv_to_yv12_c;
extern fastconvert_packedFunc fastconvert_uyvy_to_yv12_c;
extern fastconvert_packedFunc fastconvert_rgb555i_to_yv12_c;
extern fastconvert_packedFunc fastconvert_rgb565i_to_yv12_c;
extern fastconvert_packedFunc fastconvert_bgri_to_yv12_c;
extern fastconvert_packedFunc fastconvert_bgrai_to_yv12_c;
extern fastconvert_packedFunc fastconvert_abgri_to_yv12_c;
extern fastconvert_packedFunc fastconvert_rgbai_to_yv12_c;
extern fastconvert_packedFunc fastconvert_argbi_to_yv12_c;
extern fastconvert_packedFunc fastconvert_yuyvi_to_yv12_c;
extern fastconvert_packedFunc fastconvert_uyvyi_to_yv12_c;
/* mmx */
extern fastconvert_packedFunc fastconvert_bgr_to_yv12_mmx;
extern fastconvert_packedFunc fastconvert_bgra_to_yv12_mmx;
extern fastconvert_packedFunc fastconvert_yuyv_to_yv12_mmx;
extern fastconvert_packedFunc fastconvert_uyvy_to_yv12_mmx;
/* 3dnow */
extern fastconvert_packedFunc fastconvert_yuyv_to_yv12_3dn;
extern fastconvert_packedFunc fastconvert_uyvy_to_yv12_3dn;
/* xmm */
extern fastconvert_packedFunc fastconvert_yuyv_to_yv12_xmm;
extern fastconvert_packedFunc fastconvert_uyvy_to_yv12_xmm;
/* plain c */
extern fastconvert_packedFunc fastconvert_yv12_to_rgb555_c;
extern fastconvert_packedFunc fastconvert_yv12_to_rgb565_c;
extern fastconvert_packedFunc fastconvert_yv12_to_bgr_c;
extern fastconvert_packedFunc fastconvert_yv12_to_bgra_c;
extern fastconvert_packedFunc fastconvert_yv12_to_abgr_c;
extern fastconvert_packedFunc fastconvert_yv12_to_rgba_c;
extern fastconvert_packedFunc fastconvert_yv12_to_argb_c;
extern fastconvert_packedFunc fastconvert_yv12_to_yuyv_c;
extern fastconvert_packedFunc fastconvert_yv12_to_uyvy_c;
extern fastconvert_packedFunc fastconvert_yv12_to_rgb555i_c;
extern fastconvert_packedFunc fastconvert_yv12_to_rgb565i_c;
extern fastconvert_packedFunc fastconvert_yv12_to_bgri_c;
extern fastconvert_packedFunc fastconvert_yv12_to_bgrai_c;
extern fastconvert_packedFunc fastconvert_yv12_to_abgri_c;
extern fastconvert_packedFunc fastconvert_yv12_to_rgbai_c;
extern fastconvert_packedFunc fastconvert_yv12_to_argbi_c;
extern fastconvert_packedFunc fastconvert_yv12_to_yuyvi_c;
extern fastconvert_packedFunc fastconvert_yv12_to_uyvyi_c;
/* mmx */
extern fastconvert_packedFunc fastconvert_yv12_to_bgr_mmx;
extern fastconvert_packedFunc fastconvert_yv12_to_bgra_mmx;
extern fastconvert_packedFunc fastconvert_yv12_to_yuyv_mmx;
extern fastconvert_packedFunc fastconvert_yv12_to_uyvy_mmx;
extern fastconvert_packedFunc fastconvert_yv12_to_yuyvi_mmx;
extern fastconvert_packedFunc fastconvert_yv12_to_uyvyi_mmx;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef void (fastconvert_planarFunc)(void* y_dst, void* u_dst, void* v_dst, int y_dst_stride, int uv_dst_stride,
void* y_src, void* u_src, void* v_src, int y_src_stride, int uv_src_stride,
int width, int height, int vflip);
typedef fastconvert_planarFunc *fastconvert_planarFuncPtr;
extern fastconvert_planarFunc fastconvert_yv12_to_yv12_c;
extern fastconvert_planarFunc fastconvert_yv12_to_yv12_mmx;
extern fastconvert_planarFunc fastconvert_yv12_to_yv12_xmm;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef void (fastconvet_emmsFunc) ();
typedef fastconvet_emmsFunc *fastconvert_emmsFuncPtr;
extern fastconvet_emmsFunc fastconvert_emms_c;
extern fastconvet_emmsFunc fastconvert_emms_mmx;
extern fastconvet_emmsFunc fastconvert_emms_3dn;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef void (fastconvert_Func)(void* dst, void* src, int w, int srcpitch);
typedef fastconvert_Func *fastconvert_FuncPtr;
extern fastconvert_Func fastconvert_asm_blend_row_clipped;
extern fastconvert_Func fastconvert_asm_blend_row;
extern fastconvert_Func fastconvert_asm_blend_row_MMX;
extern fastconvert_Func fastconvert_asm_middle_row;
extern fastconvert_Func fastconvert_asm_middle_row_MMX;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
extern void fastconvert_colorspace_init(void);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
extern int fastconvert_check_cpu_features(void);
extern void fastconvert_sse_os_trigger(void);
extern void fastconvert_sse2_os_trigger(void);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
extern void fastconvert_safe_packed_conv(void* x_ptr, int x_stride,
void* y_ptr, void* u_ptr, void* v_ptr, int y_stride, int uv_stride,
int width, int height, int vflip,
fastconvert_packedFunc* func_opt, fastconvert_packedFunc func_c, int size);
#ifdef __cplusplus
}
#endif