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#if defined(WITH_GFX_AV2)
33#include <freerdp/codec/av2.h>
35#if defined(WITH_GFX_AZURE)
36#include <freerdp/codec/hevc.h>
38#include <freerdp/codec/rfx.h>
39#include <freerdp/codec/nsc.h>
40#include <freerdp/codec/h264.h>
41#include <freerdp/codec/clear.h>
42#include <freerdp/codec/planar.h>
43#include <freerdp/codec/interleaved.h>
44#include <freerdp/codec/progressive.h>
48 FREERDP_CODEC_INTERLEAVED = 0x00000001u,
49 FREERDP_CODEC_PLANAR = 0x00000002u,
50 FREERDP_CODEC_NSCODEC = 0x00000004u,
51 FREERDP_CODEC_REMOTEFX = 0x00000008u,
52 FREERDP_CODEC_CLEARCODEC = 0x00000010u,
53 FREERDP_CODEC_ALPHACODEC = 0x00000020u,
54 FREERDP_CODEC_PROGRESSIVE = 0x00000040u,
55 FREERDP_CODEC_AVC420 = 0x00000080u,
56 FREERDP_CODEC_AVC444 = 0x00000100u,
57#if defined(WITH_GFX_AV1)
58 FREERDP_CODEC_AV1_I420 = 0x00000200u,
59 FREERDP_CODEC_AV1_I444 = 0x00000400u,
61#if defined(WITH_GFX_AV2)
62 FREERDP_CODEC_AV2_I420 = 0x00000800u,
63 FREERDP_CODEC_AV2_I444 = 0x00001000u,
65#if defined(WITH_GFX_AZURE)
66 FREERDP_CODEC_HEVC_I420 = 0x00002000u,
67 FREERDP_CODEC_HEVC_I444 = 0x00004000u,
69 FREERDP_CODEC_ALL = 0x7FFFFFFFu
79 UINT32 ThreadingFlags;
85 PROGRESSIVE_CONTEXT* progressive;
86 BITMAP_PLANAR_CONTEXT* planar;
87 BITMAP_INTERLEAVED_CONTEXT* interleaved;
92 FREERDP_API BOOL freerdp_client_codecs_prepare(rdpCodecs* codecs, UINT32 flags, UINT32 width,
96 FREERDP_API BOOL freerdp_client_codecs_reset(rdpCodecs* codecs, UINT32 flags, UINT32 width,
104 FREERDP_API
void freerdp_client_codecs_free(rdpCodecs* codecs);
111 WINPR_ATTR_MALLOC(freerdp_client_codecs_free, 1)
112 FREERDP_API rdpCodecs* freerdp_client_codecs_new(UINT32 ThreadingFlags);
114#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
115 WINPR_DEPRECATED_VAR(
"[since 3.6.0] Use freerdp_client_codecs_free",
116 FREERDP_API
void codecs_free(rdpCodecs* codecs));
118 WINPR_DEPRECATED_VAR(
119 "[since 3.6.0] Use freerdp_client_codecs_new",
120 WINPR_ATTR_MALLOC(codecs_free, 1)
121 WINPR_ATTR_NODISCARD FREERDP_API rdpCodecs* codecs_new(rdpContext* context));
130 FREERDP_API
const char* freerdp_codec_id_to_str(UINT32
id);
142 FREERDP_API BOOL freerdp_codec_supported(FreeRDP_CodecFlags codec, BOOL encoder);