#define ENC_IS_BIT_SET(_flags, _bit) (((_flags) & (1 << (_bit))) != 0) #define ENC_SET_BIT(_flags, _bit) do { _flags |= (1 << (_bit)); } while (0) #define ENC_CLR_BIT(_flags, _bit) do { _flags &= ~(1 << (_bit)); } while (0) #define ENC_SET_BITS(_flags, _mask, _bits) \ do { _flags &= ~(_mask); _flags |= (_bits) & (_mask); } while (0)
struct xrdp_enc_data;
typedefvoid *(*xrdp_encoder_h264_create_proc)(void); typedefint (*xrdp_encoder_h264_delete_proc)(void *handle); typedefint (*xrdp_encoder_h264_encode_proc)( void *handle, int session, int left, int top, int width, int height, int twidth, int theight, int format, constchar *data, short *crects, int num_crects, char *cdata, int *cdata_bytes, int connection_type, int *flags_ptr);
/* for codec mode operations */ struct xrdp_encoder
{ struct xrdp_mm *mm; int in_codec_mode; int codec_id; int codec_quality; int max_compressed_bytes;
tbus xrdp_encoder_event_to_proc;
tbus xrdp_encoder_event_processed;
tbus xrdp_encoder_term_request;
tbus xrdp_encoder_term_done; struct fifo *fifo_to_proc; struct fifo *fifo_processed;
tbus mutex; int (*process_enc)(struct xrdp_encoder *self, struct xrdp_enc_data *enc); void *codec_handle_rfx; void *codec_handle_jpg; void *codec_handle_h264; void *codec_handle_prfx_gfx[16]; void *codec_handle_h264_gfx[16]; int frame_id_client; /* last frame id received from client */ int frame_id_server; /* last frame id received from Xorg */ int frame_id_server_sent; int frames_in_flight; int gfx; int gfx_ack_off; constchar *quants; int num_quants; int quant_idx_y; int quant_idx_u; int quant_idx_v; int pad0;
xrdp_encoder_h264_create_proc xrdp_encoder_h264_create;
xrdp_encoder_h264_delete_proc xrdp_encoder_h264_delete;
xrdp_encoder_h264_encode_proc xrdp_encoder_h264_encode;
};
/* cmd_id = 0 */ struct xrdp_enc_surface_command
{ struct xrdp_mod *mod; int num_drects; int pad0; short *drects; /* 4 * num_drects */ int num_crects; int pad1; short *crects; /* 4 * num_crects */ char *data; int left; int top; int width; int height; int flags; int frame_id;
};
struct xrdp_enc_gfx_cmd
{ char *cmd; char *data; int cmd_bytes; int data_bytes;
};
/* used when scheduling tasks from xrdp_encoder.c */ struct xrdp_enc_data_done
{ int comp_bytes; int pad_bytes; char *comp_pad_data; struct xrdp_enc_data *enc; int last; /* true is this is last message for enc */ int continuation; /* true if this isn't the start of a frame */ int x; int y; int cx; int cy; int flags; /* ENC_DONE_FLAGS_* */ int frame_id;
};
#define ENC_FLAGS_GFX_BIT 0
/* used when scheduling tasks in xrdp_encoder.c */ struct xrdp_enc_data
{ struct xrdp_mod *mod; int flags; /* ENC_FLAGS_* */ int pad0; void *shmem_ptr; int shmem_bytes; int pad1; union _u
{ struct xrdp_enc_surface_command sc; struct xrdp_enc_gfx_cmd gfx;
} u;
};
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-07-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.