async_mp4/types/
fixed.rs

1use async_trait::async_trait;
2use fixed::{FixedI16, FixedI32};
3use crate::bytes_read::{Mp4Readable, ReadMp4};
4use crate::bytes_write::{Mp4Writable, WriteMp4};
5use crate::error::MP4Error;
6
7#[async_trait]
8impl<Frac> Mp4Readable for FixedI32<Frac> {
9    async fn read<R: ReadMp4 + ?Sized>(reader: &mut R) -> Result<Self, MP4Error> {
10        Ok(Self::from_bits(reader.read().await?))
11    }
12}
13
14impl<Frac: Send + Sync> Mp4Writable for FixedI32<Frac> {
15    fn byte_size(&self) -> usize {
16        self.to_bits().byte_size()
17    }
18
19    fn write<W: WriteMp4>(&self, writer: &mut W) -> Result<usize, MP4Error> {
20        self.to_bits().write(writer)
21    }
22}
23
24#[async_trait]
25impl<Frac> Mp4Readable for FixedI16<Frac> {
26    async fn read<R: ReadMp4 + ?Sized>(reader: &mut R) -> Result<Self, MP4Error> {
27        Ok(Self::from_bits(reader.read().await?))
28    }
29}
30
31impl<Frac: Send + Sync> Mp4Writable for FixedI16<Frac> {
32    fn byte_size(&self) -> usize {
33        self.to_bits().byte_size()
34    }
35
36    fn write<W: WriteMp4>(&self, writer: &mut W) -> Result<usize, MP4Error> {
37        self.to_bits().write(writer)
38    }
39}