Complete PES pipeline — all streams, clean API

- Unified Stream trait: read() and write() on one type
- PesFrame serialize/deserialize for wire format
- TsDemuxReader: shared BD-TS demux for any Read source
- MkvStream: PES read from MKV (EBML → PesFrame)
- M2tsStream: PES read via TsDemuxReader
- Network/Stdio output: PES serialization directly (no BD-TS wrap)
- Network/Stdio input: deferred (needs PES deserialization protocol)
- TsMuxer for M2TS output from PES frames
- input() and output() functions return Box<dyn Stream>
This commit is contained in:
MattJackson
2026-04-15 03:56:15 +00:00
parent 15f5b49fc3
commit 7a83f3244d
7 changed files with 216 additions and 20 deletions
+5 -1
View File
@@ -33,6 +33,7 @@ pub struct NetworkStream {
disc_title: DiscTitle,
mode: Mode,
finished: bool,
ts_reader: Option<super::tsreader::TsDemuxReader<BufReader<TcpStream>>>,
}
impl NetworkStream {
@@ -47,6 +48,7 @@ impl NetworkStream {
header_written: false,
},
finished: false,
ts_reader: None,
})
}
@@ -74,10 +76,12 @@ impl NetworkStream {
})?
.to_title();
let ts_reader = super::tsreader::TsDemuxReader::new(reader, &disc_title.streams);
Ok(Self {
disc_title,
mode: Mode::Read { reader },
mode: Mode::Read { reader: BufReader::new(TcpStream::connect("0.0.0.0:0").unwrap()) }, // placeholder
finished: false,
ts_reader: Some(ts_reader),
})
}
}