diff options
Diffstat (limited to 'remuxer/src/remux.rs')
-rw-r--r-- | remuxer/src/remux.rs | 15 |
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)))?; } |