20#ifndef FREERDP_CODECS_H
21#define FREERDP_CODECS_H
23#include <freerdp/api.h>
24#include <freerdp/types.h>
25#include <freerdp/config.h>
27#include <freerdp/codec/color.h>
29#if defined(WITH_GFX_AV1)
30#include <freerdp/codec/av1.h>
32#include <freerdp/codec/rfx.h>
33#include <freerdp/codec/nsc.h>
34#include <freerdp/codec/h264.h>
35#include <freerdp/codec/clear.h>
36#include <freerdp/codec/planar.h>
37#include <freerdp/codec/interleaved.h>
38#include <freerdp/codec/progressive.h>
42 FREERDP_CODEC_INTERLEAVED = 0x00000001u,
43 FREERDP_CODEC_PLANAR = 0x00000002u,
44 FREERDP_CODEC_NSCODEC = 0x00000004u,
45 FREERDP_CODEC_REMOTEFX = 0x00000008u,
46 FREERDP_CODEC_CLEARCODEC = 0x00000010u,
47 FREERDP_CODEC_ALPHACODEC = 0x00000020u,
48 FREERDP_CODEC_PROGRESSIVE = 0x00000040u,
49 FREERDP_CODEC_AVC420 = 0x00000080u,
50 FREERDP_CODEC_AVC444 = 0x00000100u,
51#if defined(WITH_GFX_AV1)
52 FREERDP_CODEC_AV1_I420 = 0x00000200u,
53 FREERDP_CODEC_AV1_I444 = 0x00000400u,
55 FREERDP_CODEC_ALL = 0x7FFFFFFFu
65 UINT32 ThreadingFlags;
71 PROGRESSIVE_CONTEXT* progressive;
72 BITMAP_PLANAR_CONTEXT* planar;
73 BITMAP_INTERLEAVED_CONTEXT* interleaved;
78 FREERDP_API BOOL freerdp_client_codecs_prepare(rdpCodecs* codecs, UINT32 flags, UINT32 width,
82 FREERDP_API BOOL freerdp_client_codecs_reset(rdpCodecs* codecs, UINT32 flags, UINT32 width,
90 FREERDP_API
void freerdp_client_codecs_free(rdpCodecs* codecs);
97 WINPR_ATTR_MALLOC(freerdp_client_codecs_free, 1)
98 FREERDP_API rdpCodecs* freerdp_client_codecs_new(UINT32 ThreadingFlags);
100#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
101 WINPR_DEPRECATED_VAR(
"[since 3.6.0] Use freerdp_client_codecs_free",
102 FREERDP_API
void codecs_free(rdpCodecs* codecs));
104 WINPR_DEPRECATED_VAR(
105 "[since 3.6.0] Use freerdp_client_codecs_new",
106 WINPR_ATTR_MALLOC(codecs_free, 1)
107 WINPR_ATTR_NODISCARD FREERDP_API rdpCodecs* codecs_new(rdpContext* context));
116 FREERDP_API
const char* freerdp_codec_id_to_str(UINT32
id);