use crate::ts::TsPacket;
use crate::Result;
use std::io::Write;
pub trait WriteTsPacket {
fn write_ts_packet(&mut self, packet: &TsPacket) -> Result<()>;
}
#[derive(Debug)]
pub struct TsPacketWriter<W> {
stream: W,
}
impl<W: Write> TsPacketWriter<W> {
pub fn new(stream: W) -> Self {
TsPacketWriter { stream }
}
pub fn stream(&self) -> &W {
&self.stream
}
pub fn into_stream(self) -> W {
self.stream
}
}
impl<W: Write> WriteTsPacket for TsPacketWriter<W> {
fn write_ts_packet(&mut self, packet: &TsPacket) -> Result<()> {
track!(packet.write_to(&mut self.stream))
}
}