From d0bacffc275f8009720f6d3b529e07b9bcbd0610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 4 Nov 2024 14:58:42 +0400 Subject: [PATCH] refactor(graphics): use an ExactSizeIterator for iter_to_ycbcr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unfortunately, that doesn't seem to help unrolling & vectorizing: no perf improvements. Signed-off-by: Marc-André Lureau --- crates/ironrdp-graphics/src/color_conversion.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-graphics/src/color_conversion.rs b/crates/ironrdp-graphics/src/color_conversion.rs index 7173414a..be837e45 100644 --- a/crates/ironrdp-graphics/src/color_conversion.rs +++ b/crates/ironrdp-graphics/src/color_conversion.rs @@ -17,7 +17,7 @@ pub fn ycbcr_to_bgra(input: YCbCrBuffer<'_>, mut output: &mut [u8]) -> io::Resul fn iter_to_ycbcr<'a, I, C>(input: I, y: &mut [i16], cb: &mut [i16], cr: &mut [i16], conv: C) where - I: IntoIterator, + I: ExactSizeIterator, C: Fn(&[u8]) -> Rgb, { for (i, pixel) in input.into_iter().enumerate() { @@ -144,6 +144,12 @@ impl<'a> Iterator for TileIterator<'a> { } } +impl ExactSizeIterator for TileIterator<'_> { + fn len(&self) -> usize { + 64 * 64 + } +} + #[allow(clippy::too_many_arguments)] pub fn to_64x64_ycbcr_tile( input: &[u8],