20#ifndef FREERDP_CODEC_YUV_H
21#define FREERDP_CODEC_YUV_H
23#include <freerdp/api.h>
24#include <freerdp/types.h>
25#include <freerdp/constants.h>
32 typedef struct S_YUV_CONTEXT YUV_CONTEXT;
35 FREERDP_API BOOL yuv420_context_decode(
36 YUV_CONTEXT* WINPR_RESTRICT context,
const BYTE* WINPR_RESTRICT pYUVData[3],
37 const UINT32 iStride[3], UINT32 yuvHeight, DWORD DstFormat, BYTE* WINPR_RESTRICT dest,
38 UINT32 nDstStep,
const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
41 FREERDP_API BOOL yuv420_context_encode(YUV_CONTEXT* WINPR_RESTRICT context,
42 const BYTE* WINPR_RESTRICT pSrcData, UINT32 nSrcStep,
43 UINT32 SrcFormat,
const UINT32 iStride[3],
44 BYTE* WINPR_RESTRICT pYUVData[3],
46 UINT32 numRegionRects);
49 FREERDP_API BOOL yuv444_context_decode(
50 YUV_CONTEXT* WINPR_RESTRICT context, BYTE type,
const BYTE* WINPR_RESTRICT pYUVData[3],
51 const UINT32 iStride[3], UINT32 srcYuvHeight, BYTE* WINPR_RESTRICT pYUVDstData[3],
52 const UINT32 iDstStride[3], DWORD DstFormat, BYTE* WINPR_RESTRICT dest, UINT32 nDstStep,
53 const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
56 FREERDP_API BOOL yuv444_context_encode(YUV_CONTEXT* WINPR_RESTRICT context, BYTE version,
57 const BYTE* WINPR_RESTRICT pSrcData, UINT32 nSrcStep,
58 UINT32 SrcFormat,
const UINT32 iStride[3],
59 BYTE* WINPR_RESTRICT pYUVLumaData[3],
60 BYTE* WINPR_RESTRICT pYUVChromaData[3],
62 UINT32 numRegionRects);
65 FREERDP_API BOOL yuv_context_reset(YUV_CONTEXT* WINPR_RESTRICT context, UINT32 width,
68 FREERDP_API
void yuv_context_free(YUV_CONTEXT* context);
70 WINPR_ATTR_MALLOC(yuv_context_free, 1)
72 FREERDP_API YUV_CONTEXT* yuv_context_new(BOOL encoder, UINT32 ThreadingFlags);