use mediadecode::{
PixelFormat,
adapter::{AudioAdapter, SubtitleAdapter, VideoAdapter},
channel::AudioChannelLayout,
};
use crate::{
codec_id::CodecId,
extras::{
AudioFrameExtra, AudioPacketExtra, SubtitleFrameExtra, SubtitlePacketExtra, VideoFrameExtra,
VideoPacketExtra,
},
sample_format::SampleFormat,
};
#[derive(Copy, Clone, Debug, Default, Eq, PartialEq, Hash)]
pub struct Ffmpeg;
impl VideoAdapter for Ffmpeg {
type CodecId = CodecId;
type PixelFormat = PixelFormat;
type PacketExtra = VideoPacketExtra;
type FrameExtra = VideoFrameExtra;
}
impl AudioAdapter for Ffmpeg {
type CodecId = CodecId;
type SampleFormat = SampleFormat;
type ChannelLayout = AudioChannelLayout;
type PacketExtra = AudioPacketExtra;
type FrameExtra = AudioFrameExtra;
}
impl SubtitleAdapter for Ffmpeg {
type CodecId = CodecId;
type PacketExtra = SubtitlePacketExtra;
type FrameExtra = SubtitleFrameExtra;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn adapter_parameterizes_mediadecode_types() {
use crate::buffer::FfmpegBuffer;
use mediadecode::{
adapter::{AudioAdapter, SubtitleAdapter, VideoAdapter},
packet::{AudioPacket, SubtitlePacket, VideoPacket},
};
fn _video_packet_resolves(
_: &VideoPacket<Ffmpeg, FfmpegBuffer>,
_: <Ffmpeg as VideoAdapter>::CodecId,
_: <Ffmpeg as VideoAdapter>::PixelFormat,
_: &<Ffmpeg as VideoAdapter>::PacketExtra,
_: &<Ffmpeg as VideoAdapter>::FrameExtra,
) {
}
fn _audio_packet_resolves(
_: &AudioPacket<Ffmpeg, FfmpegBuffer>,
_: <Ffmpeg as AudioAdapter>::CodecId,
_: <Ffmpeg as AudioAdapter>::SampleFormat,
_: &<Ffmpeg as AudioAdapter>::ChannelLayout,
_: &<Ffmpeg as AudioAdapter>::PacketExtra,
_: &<Ffmpeg as AudioAdapter>::FrameExtra,
) {
}
fn _subtitle_packet_resolves(
_: &SubtitlePacket<Ffmpeg, FfmpegBuffer>,
_: <Ffmpeg as SubtitleAdapter>::CodecId,
_: &<Ffmpeg as SubtitleAdapter>::PacketExtra,
_: &<Ffmpeg as SubtitleAdapter>::FrameExtra,
) {
}
}
#[test]
fn ffmpeg_is_zero_sized() {
use core::mem::size_of;
assert_eq!(size_of::<Ffmpeg>(), 0);
}
}