use std::path::{Path, PathBuf};
use crate::utils::pair_extension;
use serde::{Deserialize, Serialize};
mod channel_layout;
pub use channel_layout::*;
mod codec;
pub use codec::*;
mod format;
pub use format::*;
mod sample_format;
pub use sample_format::*;
mod stream;
pub use stream::*;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct MediaContainer {
pub(crate) path: PathBuf,
pub(crate) format: ContainerFormat,
pub(crate) stream: Stream,
}
impl MediaContainer {
pub(crate) fn set_path(&mut self, path: PathBuf) {
self.path = path;
}
}
impl MediaContainer {
#[must_use]
pub fn path(&self) -> &Path {
&self.path
}
#[must_use]
pub fn format(&self) -> &ContainerFormat {
&self.format
}
#[must_use]
pub fn extension(&self) -> &'static str {
pair_extension(self.format, self.stream.codec_params.codec)
}
#[must_use]
pub fn stream(&self) -> &Stream {
&self.stream
}
}