FreeRDP
Loading...
Searching...
No Matches
codecs.h
1
20#ifndef FREERDP_CODECS_H
21#define FREERDP_CODECS_H
22
23#include <freerdp/api.h>
24#include <freerdp/types.h>
25#include <freerdp/config.h>
26
27#include <freerdp/codec/color.h>
28
29#if defined(WITH_GFX_AV1)
30#include <freerdp/codec/av1.h>
31#endif
32#if defined(WITH_GFX_AV2)
33#include <freerdp/codec/av2.h>
34#endif
35#if defined(WITH_GFX_AZURE)
36#include <freerdp/codec/hevc.h>
37#endif
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>
45
46typedef enum
47{
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,
60#endif
61#if defined(WITH_GFX_AV2)
62 FREERDP_CODEC_AV2_I420 = 0x00000800u, /* @since version 3.34.0 */
63 FREERDP_CODEC_AV2_I444 = 0x00001000u, /* @since version 3.34.0 */
64#endif
65#if defined(WITH_GFX_AZURE)
66 FREERDP_CODEC_HEVC_I420 = 0x00002000u, /* @since version 3.34.0 */
67 FREERDP_CODEC_HEVC_I444 = 0x00004000u, /* @since version 3.34.0 */
68#endif
69 FREERDP_CODEC_ALL = 0x7FFFFFFFu /* C enum types are restricted to int */
70} FreeRDP_CodecFlags;
71
72#ifdef __cplusplus
73extern "C"
74{
75#endif
76
78 {
79 UINT32 ThreadingFlags;
81 RFX_CONTEXT* rfx;
82 NSC_CONTEXT* nsc;
83 H264_CONTEXT* h264;
84 CLEAR_CONTEXT* clear;
85 PROGRESSIVE_CONTEXT* progressive;
86 BITMAP_PLANAR_CONTEXT* planar;
87 BITMAP_INTERLEAVED_CONTEXT* interleaved;
88 };
89 typedef struct rdp_codecs rdpCodecs;
90
91 WINPR_ATTR_NODISCARD
92 FREERDP_API BOOL freerdp_client_codecs_prepare(rdpCodecs* codecs, UINT32 flags, UINT32 width,
93 UINT32 height);
94
95 WINPR_ATTR_NODISCARD
96 FREERDP_API BOOL freerdp_client_codecs_reset(rdpCodecs* codecs, UINT32 flags, UINT32 width,
97 UINT32 height);
98
104 FREERDP_API void freerdp_client_codecs_free(rdpCodecs* codecs);
105
111 WINPR_ATTR_MALLOC(freerdp_client_codecs_free, 1)
112 FREERDP_API rdpCodecs* freerdp_client_codecs_new(UINT32 ThreadingFlags);
113
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));
117
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));
122#endif
123
129 WINPR_ATTR_NODISCARD
130 FREERDP_API const char* freerdp_codec_id_to_str(UINT32 id);
131
141 WINPR_ATTR_NODISCARD
142 FREERDP_API BOOL freerdp_codec_supported(FreeRDP_CodecFlags codec, BOOL encoder);
143
144#ifdef __cplusplus
145}
146#endif
147
148#endif /* FREERDP_CODECS_H */
RFX_CONTEXT * rfx
Definition codecs.h:81