refactor: use typed slices for float predictor output
Change predict_f32/f16/f64 to take &mut [[u8; N]] output instead of &mut [u8], making sample alignment a compile-time guarantee rather than a silent runtime truncation. The caller uses as_chunks_mut at the boundary, with a debug_assert that the remainder is empty. This follows 197g's suggestion in #376 to move alignment validation to the caller via typed slices, keeping the predictor functions clean for future SIMD dispatch.
This commit is contained in:
1 parent
6a3282e9f2
commit
149492ca6e
2 files changed
+55
-39
No files matched your search
+12
-3
@@ -1227,9 +1227,18 @@ impl Image {
|
||||
|
||||
let row = &mut row[..data_row_bytes];
|
||||
match color_type.bit_depth() {
|
||||
16 => predict_f16(&mut encoded, row, samples),
|
||||
32 => predict_f32(&mut encoded, row, samples),
|
||||
64 => predict_f64(&mut encoded, row, samples),
|
||||
16 => {
|
||||
let (out, _) = row.as_chunks_mut::<2>();
|
||||
predict_f16(&mut encoded, out, samples);
|
||||
}
|
||||
32 => {
|
||||
let (out, _) = row.as_chunks_mut::<4>();
|
||||
predict_f32(&mut encoded, out, samples);
|
||||
}
|
||||
64 => {
|
||||
let (out, _) = row.as_chunks_mut::<8>();
|
||||
predict_f64(&mut encoded, out, samples);
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
if photometric_interpretation == PhotometricInterpretation::WhiteIsZero {
|
||||
|
||||
Reference in new issue
Block a user