mirror of
https://github.com/storytold/filmcraft.git
synced 2026-11-02 18:09:21 +00:00
Merge PR #1707: mpegts/avi: drop redundant PES header check and doubled frame_info call
This commit is contained in:
@@ -194,10 +194,11 @@ fn split_frames(
|
|||||||
let Some(here) = win.get(pos - base..) else { break };
|
let Some(here) = win.get(pos - base..) else { break };
|
||||||
match filmcraft_mpegts::frame_bytes(ts, here) {
|
match filmcraft_mpegts::frame_bytes(ts, here) {
|
||||||
Some(n) if pos + n <= total => {
|
Some(n) if pos + n <= total => {
|
||||||
|
let fi = filmcraft_mpegts::frame_info(ts, here);
|
||||||
if info.is_none() {
|
if info.is_none() {
|
||||||
info = filmcraft_mpegts::frame_info(ts, here);
|
info = fi;
|
||||||
}
|
}
|
||||||
let k = filmcraft_mpegts::frame_info(ts, here).map_or(0, |f| f.samples);
|
let k = fi.map_or(0, |f| f.samples);
|
||||||
first.push(pieces.len());
|
first.push(pieces.len());
|
||||||
let mut p = pos;
|
let mut p = pos;
|
||||||
while p < pos + n {
|
while p < pos + n {
|
||||||
|
|||||||
@@ -114,11 +114,10 @@ impl PesAsm {
|
|||||||
}
|
}
|
||||||
let before = self.hdr.len();
|
let before = self.hdr.len();
|
||||||
self.hdr.extend_from_slice(payload);
|
self.hdr.extend_from_slice(payload);
|
||||||
if let Some(h) = pes::parse(&self.hdr)
|
// `pes::parse` only succeeds once the whole header (`header_len` bytes) is buffered
|
||||||
&& self.hdr.len() >= h.header_len
|
if let Some(h) = pes::parse(&self.hdr) {
|
||||||
{
|
|
||||||
self.waiting = false;
|
self.waiting = false;
|
||||||
let skip = (h.header_len - before).min(payload.len());
|
let skip = h.header_len.saturating_sub(before).min(payload.len());
|
||||||
return (Some(h), &payload[skip..]);
|
return (Some(h), &payload[skip..]);
|
||||||
}
|
}
|
||||||
if self.hdr.len() > 1024 || (self.hdr.len() >= 6 && !(self.hdr[0] == 0 && self.hdr[1] == 0 && self.hdr[2] == 1)) {
|
if self.hdr.len() > 1024 || (self.hdr.len() >= 6 && !(self.hdr[0] == 0 && self.hdr[1] == 0 && self.hdr[2] == 1)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user