X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-core%2Fsrc%2Fsoundcvt%2Fmod.rs;h=b218e4ae588d61b2f9c60ffed77fe4ba230adac9;hp=6864f7e14a9ea179ea4e486b07782dea68f85dda;hb=b36f412c24813b14cb2b1f8fd151863e2a49c1e2;hpb=36ce88be3f590a876fe539c8f631a58af2ea2cac diff --git a/nihav-core/src/soundcvt/mod.rs b/nihav-core/src/soundcvt/mod.rs index 6864f7e..b218e4a 100644 --- a/nihav-core/src/soundcvt/mod.rs +++ b/nihav-core/src/soundcvt/mod.rs @@ -37,10 +37,10 @@ impl ChannelOp { } } -fn apply_channel_op(ch_op: &ChannelOp, src: &Vec, dst: &mut Vec) { +fn apply_channel_op(ch_op: &ChannelOp, src: &[T], dst: &mut Vec) { match *ch_op { ChannelOp::Passthrough => { - dst.copy_from_slice(src.as_slice()); + dst.copy_from_slice(src); }, ChannelOp::Reorder(ref reorder) => { for (out, idx) in dst.iter_mut().zip(reorder.iter()) { @@ -51,7 +51,7 @@ fn apply_channel_op(ch_op: &ChannelOp, src: &Vec, dst: &mut Vec) { }; } -fn remix_i32(ch_op: &ChannelOp, src: &Vec, dst: &mut Vec) { +fn remix_i32(ch_op: &ChannelOp, src: &[i32], dst: &mut Vec) { if let ChannelOp::Remix(ref remix_mat) = ch_op { let sch = src.len(); for (out, coeffs) in dst.iter_mut().zip(remix_mat.chunks(sch)) { @@ -70,7 +70,7 @@ fn remix_i32(ch_op: &ChannelOp, src: &Vec, dst: &mut Vec) { } } -fn remix_f32(ch_op: &ChannelOp, src: &Vec, dst: &mut Vec) { +fn remix_f32(ch_op: &ChannelOp, src: &[f32], dst: &mut Vec) { if let ChannelOp::Remix(ref remix_mat) = ch_op { let sch = src.len(); for (out, coeffs) in dst.iter_mut().zip(remix_mat.chunks(sch)) { @@ -97,13 +97,13 @@ impl FromFmt for u8 { fn cvt_from(val: u8) -> u8 { val } } impl FromFmt for i16 { - fn cvt_from(val: u8) -> i16 { ((val as i16) - 128).wrapping_mul(0x101) } + fn cvt_from(val: u8) -> i16 { (i16::from(val) - 128).wrapping_mul(0x101) } } impl FromFmt for i32 { - fn cvt_from(val: u8) -> i32 { ((val as i32) - 128).wrapping_mul(0x01010101) } + fn cvt_from(val: u8) -> i32 { (i32::from(val) - 128).wrapping_mul(0x01010101) } } impl FromFmt for f32 { - fn cvt_from(val: u8) -> f32 { ((val as f32) - 128.0) / 128.0 } + fn cvt_from(val: u8) -> f32 { (f32::from(val) - 128.0) / 128.0 } } impl FromFmt for u8 { @@ -113,10 +113,10 @@ impl FromFmt for i16 { fn cvt_from(val: i16) -> i16 { val } } impl FromFmt for i32 { - fn cvt_from(val: i16) -> i32 { (val as i32).wrapping_mul(0x10001) } + fn cvt_from(val: i16) -> i32 { i32::from(val).wrapping_mul(0x10001) } } impl FromFmt for f32 { - fn cvt_from(val: i16) -> f32 { (val as f32) / 32768.0 } + fn cvt_from(val: i16) -> f32 { f32::from(val) / 32768.0 } } impl FromFmt for u8 { @@ -233,8 +233,8 @@ impl SampleReader for PackedSampleReader<'_> { } trait SampleWriter { - fn store_samples_i32(&mut self, pos: usize, src: &Vec); - fn store_samples_f32(&mut self, pos: usize, src: &Vec); + fn store_samples_i32(&mut self, pos: usize, src: &[i32]); + fn store_samples_f32(&mut self, pos: usize, src: &[f32]); } struct GenericSampleWriter<'a, T:Copy> { @@ -243,14 +243,14 @@ struct GenericSampleWriter<'a, T:Copy> { } impl<'a, T:Copy+FromFmt+FromFmt> SampleWriter for GenericSampleWriter<'a, T> { - fn store_samples_i32(&mut self, pos: usize, src: &Vec) { + fn store_samples_i32(&mut self, pos: usize, src: &[i32]) { let mut off = pos; for el in src.iter() { self.data[off] = (*el).cvt_into(); off += self.stride; } } - fn store_samples_f32(&mut self, pos: usize, src: &Vec) { + fn store_samples_f32(&mut self, pos: usize, src: &[f32]) { let mut off = pos; for el in src.iter() { self.data[off] = (*el).cvt_into(); @@ -272,7 +272,7 @@ impl<'a> PackedSampleWriter<'a> { Self { data, fmt, bpp } } - fn store_samples(&mut self, pos: usize, src: &Vec) where u8: FromFmt, i16: FromFmt, i32: FromFmt, f32: FromFmt { + fn store_samples(&mut self, pos: usize, src: &[T]) where u8: FromFmt, i16: FromFmt, i32: FromFmt, f32: FromFmt { let mut offset = pos * self.bpp * src.len(); for el in src.iter() { let dst = &mut self.data[offset..]; @@ -293,8 +293,8 @@ impl<'a> PackedSampleWriter<'a> { match (self.bpp, self.fmt.be) { (4, true) => write_f32be(dst, f32::cvt_from(*el)).unwrap(), (4, false) => write_f32le(dst, f32::cvt_from(*el)).unwrap(), - (8, true) => write_f64be(dst, f32::cvt_from(*el) as f64).unwrap(), - (8, false) => write_f64le(dst, f32::cvt_from(*el) as f64).unwrap(), + (8, true) => write_f64be(dst, f64::from(f32::cvt_from(*el))).unwrap(), + (8, false) => write_f64le(dst, f64::from(f32::cvt_from(*el))).unwrap(), (_, _) => unreachable!(), }; } @@ -304,10 +304,10 @@ impl<'a> PackedSampleWriter<'a> { } impl SampleWriter for PackedSampleWriter<'_> { - fn store_samples_i32(&mut self, pos: usize, src: &Vec) { + fn store_samples_i32(&mut self, pos: usize, src: &[i32]) { self.store_samples(pos, src); } - fn store_samples_f32(&mut self, pos: usize, src: &Vec) { + fn store_samples_f32(&mut self, pos: usize, src: &[f32]) { self.store_samples(pos, src); } } @@ -362,7 +362,7 @@ Result { return Ok(src.clone()); } - let ret = alloc_audio_buffer(dst_info.clone(), nsamples, dst_chmap.clone()); + let ret = alloc_audio_buffer(*dst_info, nsamples, dst_chmap.clone()); if ret.is_err() { return Err(SoundConvertError::AllocError); }