aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/remux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src/remux.rs')
-rw-r--r--remuxer/src/remux.rs15
1 files changed, 4 insertions, 11 deletions
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs
index 851b43d..a919354 100644
--- a/remuxer/src/remux.rs
+++ b/remuxer/src/remux.rs
@@ -13,7 +13,6 @@ use jellycommon::{
LocalTrack, NodePublic, SourceTrack,
};
use jellymatroska::{
- block::Block,
read::EbmlReader,
write::{bad_vint_length, vint_length, EbmlWriter},
Master, MatroskaTag,
@@ -262,7 +261,6 @@ pub fn remux_stream_into(
}
struct ReaderD<'a> {
- peek: Option<Block>,
stream: SegmentExtractIter<'a>,
mapped: u64,
}
@@ -280,12 +278,10 @@ pub fn remux_stream_into(
MatroskaTag::Cluster(Master::Start), // TODO shouldn't this be a child of cluster?
)
.context("seeking in input")?;
- let mut stream =
- SegmentExtractIter::new(&mut inp.reader, inp.source_track_index as u64);
+ let stream = SegmentExtractIter::new(&mut inp.reader, inp.source_track_index as u64);
Ok(ReaderD {
mapped: inp.mapped,
- peek: Some(stream.next()?.0), // TODO handle duration
stream,
})
})
@@ -309,10 +305,8 @@ pub fn remux_stream_into(
let mut cluster_blocks = vec![MatroskaTag::Timestamp(cluster.timestamp)];
for (block_track, index_block) in cluster.blocks {
let track_reader = &mut track_readers[block_track];
- let mut block = track_reader
- .peek
- .replace(track_reader.stream.next()?.0) // TODO handle duration
- .expect("source file too short");
+ // TODO handle duration
+ let mut block = track_reader.stream.next()?.0;
assert_eq!(index_block.size, block.data.len(), "seek index is wrong");
@@ -320,8 +314,7 @@ pub fn remux_stream_into(
block.timestamp_off = (index_block.pts - cluster.timestamp).try_into().unwrap();
trace!("n={} tso={}", block.track, block.timestamp_off);
- let buf = block.dump();
- cluster_blocks.push(MatroskaTag::SimpleBlock(buf))
+ cluster_blocks.push(MatroskaTag::SimpleBlock(block))
}
output.write_tag(&MatroskaTag::Cluster(Master::Collected(cluster_blocks)))?;
}