remove bad supertrait, add remaining AsSample impl

This commit is contained in:
Ponj 2024-07-03 22:27:30 +02:00
parent 41bbd3d371
commit f688dbe225
Signed by: p6nj
GPG Key ID: CEAB625B75A836B2
2 changed files with 23 additions and 19 deletions

View File

@ -1,9 +1,4 @@
use dasp_sample::{FromSample, Sample, U24};
mod media;
pub trait AsMedia<M, T> {
fn as_media(self) -> T;
}
use dasp_sample::{FromSample, Sample, U24, U48};
pub trait AsSample<S>
where
@ -21,41 +16,51 @@ where
}
}
impl<S> AsSample<S> for (u8, u8)
impl<S> AsSample<S> for [u8; 2]
where
S: Sample + FromSample<u16>,
{
fn as_sample(self) -> S {
(((self.0 as u16) << 8) | self.1 as u16).to_sample()
(((self[0] as u16) << 8) | self[1] as u16).to_sample()
}
}
impl<S> AsSample<S> for (u8, u8, u8)
impl<S> AsSample<S> for [u8; 3]
where
S: Sample + FromSample<U24>,
{
fn as_sample(self) -> S {
(((U24::from(self.0)) << 16.into()) | (U24::from(self.1) << 8.into()) | U24::from(self.2))
.to_sample()
(((U24::from(self[0])) << 16.into())
| (U24::from(self[1]) << 8.into())
| U24::from(self[2]))
.to_sample()
}
}
impl<S> AsSample<S> for (u8, u8, u8, u8)
impl<S> AsSample<S> for [u8; 4]
where
S: Sample + FromSample<u32>,
{
fn as_sample(self) -> S {
(((self.0 as u32) << 24) | ((self.1 as u32) << 16) | ((self.2 as u32) << 8) | self.3 as u32)
(((self[0] as u32) << 24)
| ((self[1] as u32) << 16)
| ((self[2] as u32) << 8)
| self[3] as u32)
.to_sample()
}
}
impl<T, S> AsMedia<media::Sample, S> for T
impl<S> AsSample<S> for [u8; 6]
where
T: AsSample<S>,
S: Sample,
S: Sample + FromSample<U48>,
{
fn as_media(self) -> S {
self.as_sample()
fn as_sample(self) -> S {
((U48::from(self[0]) << 40u8.into())
| (U48::from(self[1]) << 32u8.into())
| (U48::from(self[2]) << 24u8.into())
| (U48::from(self[3]) << 16u8.into())
| (U48::from(self[4]) << 8u8.into())
| U48::from(self[3]))
.to_sample()
}
}

View File

@ -1 +0,0 @@
pub struct Sample;