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}