use crate::bitstream::TsStreamBuffer;
use crate::stream::TsVideoStream;
pub const fn scan(
stream: &mut TsVideoStream,
buffer: &mut TsStreamBuffer,
tag: &mut Option<String>,
) {
let _ = buffer;
let _ = tag;
stream.base.is_vbr = true;
stream.base.is_initialized = true;
}
#[cfg(test)]
mod tests {
use proptest::prelude::{any, prop_assert, proptest};
use super::scan;
use crate::bitstream::TsStreamBuffer;
use crate::stream::{TsStreamType, TsVideoFormat, TsVideoStream};
fn buf(data: &[u8]) -> TsStreamBuffer {
let mut b = TsStreamBuffer::new();
b.add(data, 0, data.len());
b.begin_read();
b
}
fn stream() -> TsVideoStream {
let mut s = TsVideoStream::default();
s.base.stream_type = TsStreamType::MvcVideo;
s
}
#[test]
fn scan_initializes_the_stream_and_touches_nothing_else() {
let mut s = stream();
let mut b = buf(&[0x00, 0x00, 0x01, 0x09, 0xFF]);
let mut tag = None;
scan(&mut s, &mut b, &mut tag);
assert!(s.base.is_vbr);
assert!(s.base.is_initialized);
assert_eq!(tag, None); assert!(s.encoding_profile.is_none()); }
#[test]
fn mvc_codec_strings_and_base_view_description() {
let mut s = stream();
s.base.base_view = Some(true);
s.set_video_format(TsVideoFormat::Videoformat1080p);
let mut b = buf(&[]);
scan(&mut s, &mut b, &mut None);
assert_eq!(s.codec_short_name(), "MVC");
assert_eq!(s.codec_name(), "MPEG-4 MVC Video");
assert_eq!(s.description(), "Right Eye / 1080p");
}
proptest! {
#[test]
fn scan_never_panics_on_arbitrary_bytes(data in any::<Vec<u8>>()) {
let mut s = stream();
let mut b = buf(&data);
let mut tag = None;
scan(&mut s, &mut b, &mut tag);
prop_assert!(s.base.is_initialized);
}
}
}