1 pub mod avstatistics; 2 3 use { 4 super::stream::StreamIdentifier, 5 serde::Serialize, 6 xflv::define::{AacProfile, AvcCodecId, AvcLevel, AvcProfile, SoundFormat}, 7 }; 8 9 #[derive(Debug, Clone, Serialize, Default)] 10 pub struct VideoInfo { 11 codec: AvcCodecId, 12 profile: AvcProfile, 13 level: AvcLevel, 14 width: u32, 15 height: u32, 16 #[serde(rename = "bitrate(kbits/s)")] 17 bitrate: f32, 18 frame_rate: usize, 19 gop: usize, 20 } 21 #[derive(Debug, Clone, Serialize, Default)] 22 pub struct AudioInfo { 23 sound_format: SoundFormat, 24 profile: AacProfile, 25 samplerate: u32, 26 channels: u8, 27 #[serde(rename = "bitrate(kbits/s)")] 28 bitrate: f32, 29 } 30 #[derive(Debug, Clone, Serialize, Default)] 31 pub struct StreamStatistics { 32 identifier: StreamIdentifier, 33 pub video: VideoInfo, 34 pub audio: AudioInfo, 35 } 36 37 impl StreamStatistics { new(identifier: StreamIdentifier) -> Self38 pub fn new(identifier: StreamIdentifier) -> Self { 39 Self { 40 identifier, 41 ..Default::default() 42 } 43 } 44 } 45