1use super::*;
2
3pub(crate) fn transpose_u8_c1(
4 stream_context: &StreamContext,
5 source: &ImageView<'_, u8, C1>,
6 destination: &mut ImageViewMut<'_, u8, C1>,
7) -> Result<()> {
8 validate_transpose_size(source.size(), destination.size())?;
9
10 unsafe {
11 try_ffi!(sys::nppiTranspose_8u_C1R_Ctx(
12 source.as_ptr().cast(),
13 source.step(),
14 destination.as_mut_ptr().cast(),
15 destination.step(),
16 source.size().into(),
17 stream_context.as_raw(),
18 ))?;
19 }
20 Ok(())
21}
22
23pub(crate) fn transpose_u8_c3(
24 stream_context: &StreamContext,
25 source: &ImageView<'_, u8, C3>,
26 destination: &mut ImageViewMut<'_, u8, C3>,
27) -> Result<()> {
28 validate_transpose_size(source.size(), destination.size())?;
29
30 unsafe {
31 try_ffi!(sys::nppiTranspose_8u_C3R_Ctx(
32 source.as_ptr().cast(),
33 source.step(),
34 destination.as_mut_ptr().cast(),
35 destination.step(),
36 source.size().into(),
37 stream_context.as_raw(),
38 ))?;
39 }
40 Ok(())
41}
42
43pub(crate) fn transpose_u8_c4(
44 stream_context: &StreamContext,
45 source: &ImageView<'_, u8, C4>,
46 destination: &mut ImageViewMut<'_, u8, C4>,
47) -> Result<()> {
48 validate_transpose_size(source.size(), destination.size())?;
49
50 unsafe {
51 try_ffi!(sys::nppiTranspose_8u_C4R_Ctx(
52 source.as_ptr().cast(),
53 source.step(),
54 destination.as_mut_ptr().cast(),
55 destination.step(),
56 source.size().into(),
57 stream_context.as_raw(),
58 ))?;
59 }
60 Ok(())
61}
62
63impl_transpose!(transpose_u16_c1, u16, C1, nppiTranspose_16u_C1R_Ctx);
64impl_transpose!(transpose_u16_c3, u16, C3, nppiTranspose_16u_C3R_Ctx);
65impl_transpose!(transpose_u16_c4, u16, C4, nppiTranspose_16u_C4R_Ctx);
66impl_transpose!(transpose_i16_c1, i16, C1, nppiTranspose_16s_C1R_Ctx);
67impl_transpose!(transpose_i16_c3, i16, C3, nppiTranspose_16s_C3R_Ctx);
68impl_transpose!(transpose_i16_c4, i16, C4, nppiTranspose_16s_C4R_Ctx);
69impl_transpose!(transpose_i32_c1, i32, C1, nppiTranspose_32s_C1R_Ctx);
70impl_transpose!(transpose_i32_c3, i32, C3, nppiTranspose_32s_C3R_Ctx);
71impl_transpose!(transpose_i32_c4, i32, C4, nppiTranspose_32s_C4R_Ctx);
72impl_transpose!(transpose_f32_c1, f32, C1, nppiTranspose_32f_C1R_Ctx);
73impl_transpose!(transpose_f32_c3, f32, C3, nppiTranspose_32f_C3R_Ctx);
74impl_transpose!(transpose_f32_c4, f32, C4, nppiTranspose_32f_C4R_Ctx);
75
76impl_generic_transpose_operation!(TransposeC1, transpose, transpose_c1, C1, [
77 u8 => transpose_u8_c1,
78 u16 => transpose_u16_c1,
79 i16 => transpose_i16_c1,
80 i32 => transpose_i32_c1,
81 f32 => transpose_f32_c1,
82]);
83impl_generic_transpose_operation!(TransposeC3, transpose, transpose_c3, C3, [
84 u8 => transpose_u8_c3,
85 u16 => transpose_u16_c3,
86 i16 => transpose_i16_c3,
87 i32 => transpose_i32_c3,
88 f32 => transpose_f32_c3,
89]);
90impl_generic_transpose_operation!(TransposeC4, transpose, transpose_c4, C4, [
91 u8 => transpose_u8_c4,
92 u16 => transpose_u16_c4,
93 i16 => transpose_i16_c4,
94 i32 => transpose_i32_c4,
95 f32 => transpose_f32_c4,
96]);