ironrdp_graphics/
lib.rs

1#![cfg_attr(doc, doc = include_str!("../README.md"))]
2#![doc(html_logo_url = "https://cdnweb.devolutions.net/images/projects/devolutions/logos/devolutions-icon-shadow.svg")]
3#![allow(clippy::arithmetic_side_effects)] // FIXME: remove
4
5pub mod color_conversion;
6pub mod diff;
7pub mod dwt;
8pub mod image_processing;
9pub mod pointer;
10pub mod quantization;
11pub mod rdp6;
12pub mod rectangle_processing;
13pub mod rle;
14pub mod rlgr;
15pub mod subband_reconstruction;
16pub mod zgfx;
17
18mod utils;
19
20/// # Panics
21///
22/// Panics if `input.len()` is not 4096 (64 * 46).
23pub fn rfx_encode_component(
24    input: &mut [i16],
25    output: &mut [u8],
26    quant: &ironrdp_pdu::codecs::rfx::Quant,
27    mode: ironrdp_pdu::codecs::rfx::EntropyAlgorithm,
28) -> Result<usize, rlgr::RlgrError> {
29    assert_eq!(input.len(), 64 * 64);
30
31    let mut temp = [0; 64 * 64]; // size = 8k, too big?
32
33    dwt::encode(input, temp.as_mut_slice());
34    quantization::encode(input, quant);
35    subband_reconstruction::encode(&mut input[4032..]);
36    rlgr::encode(mode, input, output)
37}