#![forbid(unsafe_code)]
#![deny(future_incompatible, rust_2018_idioms)]
use std::error::Error;
use std::fmt::Display;
pub mod reader;
pub mod packet;
mod helpers {
pub mod tracked_payload;
}
#[derive(Debug, thiserror::Error)]
pub enum ErrorKind {
#[error("Invalid first byte for transport stream packet `{byte}`")]
InvalidFirstByte {
byte: u8,
},
#[error(
"Invalid payload pointer `{pointer}` for payload with `{remainder}` bytes remaining"
)]
InvalidPayloadPointer { pointer: u8, remainder: u8 },
#[error("Cannot read payload from packet that has none")]
NoPayload,
#[error("Stream contains no SYNC byte")]
NoSyncByteFound,
#[error("Continuation payload cannot be used as a starting payload")]
PayloadIsNotStart,
#[error(transparent)]
Unknown(#[from] std::io::Error),
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum TransportScramblingControl {
NoScrambling = 0,
Reserved = 1,
EvenKey = 2,
OddKey = 3,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum AdaptationFieldControl {
Reserved = 0,
Payload = 1,
AdaptationField = 2,
AdaptationAndPayload = 3,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Errors {
InvalidFirstByte(u8),
}
impl Error for Errors {}
impl Display for Errors {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Errors::InvalidFirstByte(invalid_byte) => {
write!(f, "invalid first byte for packet: [{}]", invalid_byte)
}
}
}
}