FreeRDP
primitives.h File Reference
#include <freerdp/api.h>
#include <freerdp/types.h>
#include <freerdp/codec/color.h>
#include <winpr/platform.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  prim_size_t
 
struct  primitives_t
 

Macros

#define FREERDP_PRIMITIVES_H
 
#define PRIMITIVES_SUCCESS   (0) /* match ippStsNoErr */
 
#define PIXMAP4_ADDR(_dst_, _x_, _y_, _span_)   ((void*)(((BYTE*)(_dst_)) + (((_x_) + (_y_) * (_span_)) << 2)))
 
#define PRIM_X86_MMX_AVAILABLE   (1U << 0)
 
#define PRIM_X86_3DNOW_AVAILABLE   (1U << 1)
 
#define PRIM_X86_3DNOW_PREFETCH_AVAILABLE   (1U << 2)
 
#define PRIM_X86_SSE_AVAILABLE   (1U << 3)
 
#define PRIM_X86_SSE2_AVAILABLE   (1U << 4)
 
#define PRIM_X86_SSE3_AVAILABLE   (1U << 5)
 
#define PRIM_X86_SSSE3_AVAILABLE   (1U << 6)
 
#define PRIM_X86_SSE41_AVAILABLE   (1U << 7)
 
#define PRIM_X86_SSE42_AVAILABLE   (1U << 8)
 
#define PRIM_X86_AVX_AVAILABLE   (1U << 9)
 
#define PRIM_X86_FMA_AVAILABLE   (1U << 10)
 
#define PRIM_X86_AVX_AES_AVAILABLE   (1U << 11)
 
#define PRIM_X86_AVX2_AVAILABLE   (1U << 12)
 
#define PRIM_ARM_VFP1_AVAILABLE   (1U << 0)
 
#define PRIM_ARM_VFP2_AVAILABLE   (1U << 1)
 
#define PRIM_ARM_VFP3_AVAILABLE   (1U << 2)
 
#define PRIM_ARM_VFP4_AVAILABLE   (1U << 3)
 
#define PRIM_ARM_FPA_AVAILABLE   (1U << 4)
 
#define PRIM_ARM_FPE_AVAILABLE   (1U << 5)
 
#define PRIM_ARM_IWMMXT_AVAILABLE   (1U << 6)
 
#define PRIM_ARM_NEON_AVAILABLE   (1U << 7)
 

Typedefs

typedef INT32 pstatus_t
 
typedef pstatus_t(* __copy_t) (const void *pSrc, void *pDst, INT32 bytes)
 
typedef pstatus_t(* __copy_8u_t) (const BYTE *pSrc, BYTE *pDst, INT32 len)
 
typedef pstatus_t(* __copy_8u_AC4r_t) (const BYTE *pSrc, INT32 srcStep, BYTE *pDst, INT32 dstStep, INT32 width, INT32 height)
 
typedef pstatus_t(* __set_8u_t) (BYTE val, BYTE *pDst, UINT32 len)
 
typedef pstatus_t(* __set_32s_t) (INT32 val, INT32 *pDst, UINT32 len)
 
typedef pstatus_t(* __set_32u_t) (UINT32 val, UINT32 *pDst, UINT32 len)
 
typedef pstatus_t(* __zero_t) (void *pDst, size_t bytes)
 
typedef pstatus_t(* __alphaComp_argb_t) (const BYTE *pSrc1, UINT32 src1Step, const BYTE *pSrc2, UINT32 src2Step, BYTE *pDst, UINT32 dstStep, UINT32 width, UINT32 height)
 
typedef pstatus_t(* __add_16s_t) (const INT16 *pSrc1, const INT16 *pSrc2, INT16 *pDst, UINT32 len)
 
typedef pstatus_t(* __lShiftC_16s_t) (const INT16 *pSrc, UINT32 val, INT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __lShiftC_16u_t) (const UINT16 *pSrc, UINT32 val, UINT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __rShiftC_16s_t) (const INT16 *pSrc, UINT32 val, INT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __rShiftC_16u_t) (const UINT16 *pSrc, UINT32 val, UINT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __shiftC_16s_t) (const INT16 *pSrc, INT32 val, INT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __shiftC_16u_t) (const UINT16 *pSrc, INT32 val, UINT16 *pSrcDst, UINT32 len)
 
typedef pstatus_t(* __sign_16s_t) (const INT16 *pSrc, INT16 *pDst, UINT32 len)
 
typedef pstatus_t(* __yCbCrToRGB_16s8u_P3AC4R_t) (const INT16 *const pSrc[3], UINT32 srcStep, BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)
 
typedef pstatus_t(* __yCbCrToRGB_16s16s_P3P3_t) (const INT16 *const pSrc[3], INT32 srcStep, INT16 *pDst[3], INT32 dstStep, const prim_size_t *roi)
 
typedef pstatus_t(* __RGBToYCbCr_16s16s_P3P3_t) (const INT16 *const pSrc[3], INT32 srcStep, INT16 *pDst[3], INT32 dstStep, const prim_size_t *roi)
 
typedef pstatus_t(* __RGBToRGB_16s8u_P3AC4R_t) (const INT16 *const pSrc[3], UINT32 srcStep, BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)
 
typedef pstatus_t(* __YCoCgToRGB_8u_AC4R_t) (const BYTE *pSrc, INT32 srcStep, BYTE *pDst, UINT32 DstFormat, INT32 dstStep, UINT32 width, UINT32 height, UINT8 shift, BOOL withAlpha)
 
typedef pstatus_t(* __RGB565ToARGB_16u32u_C3C4_t) (const UINT16 *pSrc, INT32 srcStep, UINT32 *pDst, INT32 dstStep, UINT32 width, UINT32 height, UINT32 format)
 
typedef pstatus_t(* __YUV420ToRGB_8u_P3AC4R_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)
 
typedef pstatus_t(* __YUV444ToRGB_8u_P3AC4R_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)
 
typedef pstatus_t(* __RGBToYUV420_8u_P3AC4R_t) (const BYTE *pSrc, UINT32 SrcFormat, UINT32 srcStep, BYTE *pDst[3], const UINT32 dstStep[3], const prim_size_t *roi)
 
typedef pstatus_t(* __RGBToYUV444_8u_P3AC4R_t) (const BYTE *pSrc, UINT32 SrcFormat, UINT32 srcStep, BYTE *pDst[3], UINT32 dstStep[3], const prim_size_t *roi)
 
typedef pstatus_t(* __YUV420CombineToYUV444_t) (avc444_frame_type type, const BYTE *const pSrc[3], const UINT32 srcStep[3], UINT32 nWidth, UINT32 nHeight, BYTE *pDst[3], const UINT32 dstStep[3], const RECTANGLE_16 *roi)
 
typedef pstatus_t(* __YUV444SplitToYUV420_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pMainDst[3], const UINT32 dstMainStep[3], BYTE *pAuxDst[3], const UINT32 srcAuxStep[3], const prim_size_t *roi)
 
typedef pstatus_t(* __RGBToAVC444YUV_t) (const BYTE *pSrc, UINT32 srcFormat, UINT32 srcStep, BYTE *pMainDst[3], const UINT32 dstMainStep[3], BYTE *pAuxDst[3], const UINT32 dstAuxStep[3], const prim_size_t *roi)
 
typedef pstatus_t(* __andC_32u_t) (const UINT32 *pSrc, UINT32 val, UINT32 *pDst, INT32 len)
 
typedef pstatus_t(* __orC_32u_t) (const UINT32 *pSrc, UINT32 val, UINT32 *pDst, INT32 len)
 
typedef pstatus_t(* primitives_uninit_t) (void)
 

Enumerations

enum  { PRIM_FLAGS_HAVE_EXTCPU = (1U << 0), PRIM_FLAGS_HAVE_EXTGPU = (1U << 1) }
 flags of primitives More...
 
enum  avc444_frame_type { AVC444_LUMA, AVC444_CHROMAv1, AVC444_CHROMAv2 }
 
enum  primitive_hints { PRIMITIVES_PURE_SOFT, PRIMITIVES_ONLY_CPU, PRIMITIVES_ONLY_GPU, PRIMITIVES_AUTODETECT }
 

Functions

FREERDP_API primitives_tprimitives_get (void)
 
FREERDP_API void primitives_set_hints (primitive_hints hints)
 
FREERDP_API primitive_hints primitives_get_hints (void)
 
FREERDP_API primitives_tprimitives_get_generic (void)
 
FREERDP_API DWORD primitives_flags (primitives_t *p)
 
FREERDP_API BOOL primitives_init (primitives_t *p, primitive_hints hints)
 
FREERDP_API void primitives_uninit (void)
 

Macro Definition Documentation

◆ FREERDP_PRIMITIVES_H

#define FREERDP_PRIMITIVES_H

◆ PIXMAP4_ADDR

#define PIXMAP4_ADDR (   _dst_,
  _x_,
  _y_,
  _span_ 
)    ((void*)(((BYTE*)(_dst_)) + (((_x_) + (_y_) * (_span_)) << 2)))

◆ PRIM_ARM_FPA_AVAILABLE

#define PRIM_ARM_FPA_AVAILABLE   (1U << 4)

◆ PRIM_ARM_FPE_AVAILABLE

#define PRIM_ARM_FPE_AVAILABLE   (1U << 5)

◆ PRIM_ARM_IWMMXT_AVAILABLE

#define PRIM_ARM_IWMMXT_AVAILABLE   (1U << 6)

◆ PRIM_ARM_NEON_AVAILABLE

#define PRIM_ARM_NEON_AVAILABLE   (1U << 7)

◆ PRIM_ARM_VFP1_AVAILABLE

#define PRIM_ARM_VFP1_AVAILABLE   (1U << 0)

◆ PRIM_ARM_VFP2_AVAILABLE

#define PRIM_ARM_VFP2_AVAILABLE   (1U << 1)

◆ PRIM_ARM_VFP3_AVAILABLE

#define PRIM_ARM_VFP3_AVAILABLE   (1U << 2)

◆ PRIM_ARM_VFP4_AVAILABLE

#define PRIM_ARM_VFP4_AVAILABLE   (1U << 3)

◆ PRIM_X86_3DNOW_AVAILABLE

#define PRIM_X86_3DNOW_AVAILABLE   (1U << 1)

◆ PRIM_X86_3DNOW_PREFETCH_AVAILABLE

#define PRIM_X86_3DNOW_PREFETCH_AVAILABLE   (1U << 2)

◆ PRIM_X86_AVX2_AVAILABLE

#define PRIM_X86_AVX2_AVAILABLE   (1U << 12)

◆ PRIM_X86_AVX_AES_AVAILABLE

#define PRIM_X86_AVX_AES_AVAILABLE   (1U << 11)

◆ PRIM_X86_AVX_AVAILABLE

#define PRIM_X86_AVX_AVAILABLE   (1U << 9)

◆ PRIM_X86_FMA_AVAILABLE

#define PRIM_X86_FMA_AVAILABLE   (1U << 10)

◆ PRIM_X86_MMX_AVAILABLE

#define PRIM_X86_MMX_AVAILABLE   (1U << 0)

◆ PRIM_X86_SSE2_AVAILABLE

#define PRIM_X86_SSE2_AVAILABLE   (1U << 4)

◆ PRIM_X86_SSE3_AVAILABLE

#define PRIM_X86_SSE3_AVAILABLE   (1U << 5)

◆ PRIM_X86_SSE41_AVAILABLE

#define PRIM_X86_SSE41_AVAILABLE   (1U << 7)

◆ PRIM_X86_SSE42_AVAILABLE

#define PRIM_X86_SSE42_AVAILABLE   (1U << 8)

◆ PRIM_X86_SSE_AVAILABLE

#define PRIM_X86_SSE_AVAILABLE   (1U << 3)

◆ PRIM_X86_SSSE3_AVAILABLE

#define PRIM_X86_SSSE3_AVAILABLE   (1U << 6)

◆ PRIMITIVES_SUCCESS

#define PRIMITIVES_SUCCESS   (0) /* match ippStsNoErr */

Typedef Documentation

◆ __add_16s_t

typedef pstatus_t(* __add_16s_t) (const INT16 *pSrc1, const INT16 *pSrc2, INT16 *pDst, UINT32 len)

◆ __alphaComp_argb_t

typedef pstatus_t(* __alphaComp_argb_t) (const BYTE *pSrc1, UINT32 src1Step, const BYTE *pSrc2, UINT32 src2Step, BYTE *pDst, UINT32 dstStep, UINT32 width, UINT32 height)

◆ __andC_32u_t

typedef pstatus_t(* __andC_32u_t) (const UINT32 *pSrc, UINT32 val, UINT32 *pDst, INT32 len)

◆ __copy_8u_AC4r_t

typedef pstatus_t(* __copy_8u_AC4r_t) (const BYTE *pSrc, INT32 srcStep, BYTE *pDst, INT32 dstStep, INT32 width, INT32 height)

◆ __copy_8u_t

typedef pstatus_t(* __copy_8u_t) (const BYTE *pSrc, BYTE *pDst, INT32 len)

◆ __copy_t

typedef pstatus_t(* __copy_t) (const void *pSrc, void *pDst, INT32 bytes)

◆ __lShiftC_16s_t

typedef pstatus_t(* __lShiftC_16s_t) (const INT16 *pSrc, UINT32 val, INT16 *pSrcDst, UINT32 len)

◆ __lShiftC_16u_t

typedef pstatus_t(* __lShiftC_16u_t) (const UINT16 *pSrc, UINT32 val, UINT16 *pSrcDst, UINT32 len)

◆ __orC_32u_t

typedef pstatus_t(* __orC_32u_t) (const UINT32 *pSrc, UINT32 val, UINT32 *pDst, INT32 len)

◆ __RGB565ToARGB_16u32u_C3C4_t

typedef pstatus_t(* __RGB565ToARGB_16u32u_C3C4_t) (const UINT16 *pSrc, INT32 srcStep, UINT32 *pDst, INT32 dstStep, UINT32 width, UINT32 height, UINT32 format)

◆ __RGBToAVC444YUV_t

typedef pstatus_t(* __RGBToAVC444YUV_t) (const BYTE *pSrc, UINT32 srcFormat, UINT32 srcStep, BYTE *pMainDst[3], const UINT32 dstMainStep[3], BYTE *pAuxDst[3], const UINT32 dstAuxStep[3], const prim_size_t *roi)

◆ __RGBToRGB_16s8u_P3AC4R_t

typedef pstatus_t(* __RGBToRGB_16s8u_P3AC4R_t) (const INT16 *const pSrc[3], UINT32 srcStep, BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)

◆ __RGBToYCbCr_16s16s_P3P3_t

typedef pstatus_t(* __RGBToYCbCr_16s16s_P3P3_t) (const INT16 *const pSrc[3], INT32 srcStep, INT16 *pDst[3], INT32 dstStep, const prim_size_t *roi)

◆ __RGBToYUV420_8u_P3AC4R_t

typedef pstatus_t(* __RGBToYUV420_8u_P3AC4R_t) (const BYTE *pSrc, UINT32 SrcFormat, UINT32 srcStep, BYTE *pDst[3], const UINT32 dstStep[3], const prim_size_t *roi)

◆ __RGBToYUV444_8u_P3AC4R_t

typedef pstatus_t(* __RGBToYUV444_8u_P3AC4R_t) (const BYTE *pSrc, UINT32 SrcFormat, UINT32 srcStep, BYTE *pDst[3], UINT32 dstStep[3], const prim_size_t *roi)

◆ __rShiftC_16s_t

typedef pstatus_t(* __rShiftC_16s_t) (const INT16 *pSrc, UINT32 val, INT16 *pSrcDst, UINT32 len)

◆ __rShiftC_16u_t

typedef pstatus_t(* __rShiftC_16u_t) (const UINT16 *pSrc, UINT32 val, UINT16 *pSrcDst, UINT32 len)

◆ __set_32s_t

typedef pstatus_t(* __set_32s_t) (INT32 val, INT32 *pDst, UINT32 len)

◆ __set_32u_t

typedef pstatus_t(* __set_32u_t) (UINT32 val, UINT32 *pDst, UINT32 len)

◆ __set_8u_t

typedef pstatus_t(* __set_8u_t) (BYTE val, BYTE *pDst, UINT32 len)

◆ __shiftC_16s_t

typedef pstatus_t(* __shiftC_16s_t) (const INT16 *pSrc, INT32 val, INT16 *pSrcDst, UINT32 len)

◆ __shiftC_16u_t

typedef pstatus_t(* __shiftC_16u_t) (const UINT16 *pSrc, INT32 val, UINT16 *pSrcDst, UINT32 len)

◆ __sign_16s_t

typedef pstatus_t(* __sign_16s_t) (const INT16 *pSrc, INT16 *pDst, UINT32 len)

◆ __yCbCrToRGB_16s16s_P3P3_t

typedef pstatus_t(* __yCbCrToRGB_16s16s_P3P3_t) (const INT16 *const pSrc[3], INT32 srcStep, INT16 *pDst[3], INT32 dstStep, const prim_size_t *roi)

◆ __yCbCrToRGB_16s8u_P3AC4R_t

typedef pstatus_t(* __yCbCrToRGB_16s8u_P3AC4R_t) (const INT16 *const pSrc[3], UINT32 srcStep, BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)

◆ __YCoCgToRGB_8u_AC4R_t

typedef pstatus_t(* __YCoCgToRGB_8u_AC4R_t) (const BYTE *pSrc, INT32 srcStep, BYTE *pDst, UINT32 DstFormat, INT32 dstStep, UINT32 width, UINT32 height, UINT8 shift, BOOL withAlpha)

◆ __YUV420CombineToYUV444_t

typedef pstatus_t(* __YUV420CombineToYUV444_t) (avc444_frame_type type, const BYTE *const pSrc[3], const UINT32 srcStep[3], UINT32 nWidth, UINT32 nHeight, BYTE *pDst[3], const UINT32 dstStep[3], const RECTANGLE_16 *roi)

◆ __YUV420ToRGB_8u_P3AC4R_t

typedef pstatus_t(* __YUV420ToRGB_8u_P3AC4R_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)

◆ __YUV444SplitToYUV420_t

typedef pstatus_t(* __YUV444SplitToYUV420_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pMainDst[3], const UINT32 dstMainStep[3], BYTE *pAuxDst[3], const UINT32 srcAuxStep[3], const prim_size_t *roi)

◆ __YUV444ToRGB_8u_P3AC4R_t

typedef pstatus_t(* __YUV444ToRGB_8u_P3AC4R_t) (const BYTE *const pSrc[3], const UINT32 srcStep[3], BYTE *pDst, UINT32 dstStep, UINT32 DstFormat, const prim_size_t *roi)

◆ __zero_t

typedef pstatus_t(* __zero_t) (void *pDst, size_t bytes)

◆ primitives_uninit_t

typedef pstatus_t(* primitives_uninit_t) (void)

◆ pstatus_t

typedef INT32 pstatus_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

flags of primitives

Enumerator
PRIM_FLAGS_HAVE_EXTCPU 
PRIM_FLAGS_HAVE_EXTGPU 

◆ avc444_frame_type

Enumerator
AVC444_LUMA 
AVC444_CHROMAv1 
AVC444_CHROMAv2 

◆ primitive_hints

Enumerator
PRIMITIVES_PURE_SOFT 
PRIMITIVES_ONLY_CPU 

use generic software implementation

PRIMITIVES_ONLY_GPU 

use generic software or cpu optimized routines

PRIMITIVES_AUTODETECT 

use opencl optimized routines detect the best routines

Function Documentation

◆ primitives_flags()

FREERDP_API DWORD primitives_flags ( primitives_t p)
Here is the caller graph for this function:

◆ primitives_get()

FREERDP_API primitives_t* primitives_get ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ primitives_get_generic()

FREERDP_API primitives_t* primitives_get_generic ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ primitives_get_hints()

FREERDP_API primitive_hints primitives_get_hints ( void  )

◆ primitives_init()

FREERDP_API BOOL primitives_init ( primitives_t p,
primitive_hints  hints 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ primitives_set_hints()

FREERDP_API void primitives_set_hints ( primitive_hints  hints)

◆ primitives_uninit()

FREERDP_API void primitives_uninit ( void  )