av_data/
params.rs

1//! Video and audio definitions.
2
3use crate::audiosample::{ChannelMap, Soniton};
4use crate::pixel::Formaton;
5use std::sync::Arc;
6
7/// Video stream information.
8#[derive(Clone, Debug, PartialEq, Eq)]
9pub struct VideoInfo {
10    /// Picture width.
11    pub width: usize,
12    /// Picture height.
13    pub height: usize,
14    /// Picture pixel format.
15    pub format: Option<Arc<Formaton>>,
16}
17
18/// Audio stream information.
19#[derive(Clone, Debug, PartialEq, Eq)]
20pub struct AudioInfo {
21    /// Audio sample rate.
22    pub rate: usize,
23    /// Audio sequence of channels.
24    pub map: Option<ChannelMap>,
25    /// Audio sample format.
26    pub format: Option<Arc<Soniton>>,
27}
28
29/// Possible stream information types.
30#[derive(Clone, Debug, PartialEq, Eq)]
31pub enum MediaKind {
32    /// Video codec information.
33    Video(VideoInfo),
34    /// Audio codec information.
35    Audio(AudioInfo),
36}
37
38/// Possible codec parameters.
39#[derive(Clone, Debug, PartialEq, Eq)]
40pub struct CodecParams {
41    /// Stream information type.
42    pub kind: Option<MediaKind>,
43    /// Codec id.
44    pub codec_id: Option<String>,
45    /// Codec additional data.
46    pub extradata: Option<Vec<u8>>,
47    /// Codec bit-rate.
48    pub bit_rate: usize,
49    /// Number of samples the decoder must process
50    /// before outputting valid data.
51    pub convergence_window: usize,
52    /// Number of samples the codec needs to process
53    /// before returning data.
54    pub delay: usize,
55}