diff options
author | metamuffin <metamuffin@disroot.org> | 2023-10-27 15:35:24 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-10-27 15:35:24 +0200 |
commit | a1c3e743a79a95cdb30dda79820e1c0a01084d12 (patch) | |
tree | 39eeea356d82991ed9978565c951b1e90a758d8d /remuxer/src | |
parent | af39f390c335327297bcd83c303522d750c2bf62 (diff) | |
download | jellything-a1c3e743a79a95cdb30dda79820e1c0a01084d12.tar jellything-a1c3e743a79a95cdb30dda79820e1c0a01084d12.tar.bz2 jellything-a1c3e743a79a95cdb30dda79820e1c0a01084d12.tar.zst |
fix overflow with stupid hack
Diffstat (limited to 'remuxer/src')
-rw-r--r-- | remuxer/src/snippet.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs index 26cb608..dcc3b15 100644 --- a/remuxer/src/snippet.rs +++ b/remuxer/src/snippet.rs @@ -120,7 +120,7 @@ pub fn write_snippet_into( let mut reader = SegmentExtractIter::new(&mut reader, private.track as u64); - let mut blocks = vec![MatroskaTag::Timestamp(0)]; + // TODO: start using clusters again for i in start_block_index..end_block_index { let index_block = &index.blocks[i]; let mut block = reader.next()?; @@ -128,10 +128,12 @@ pub fn write_snippet_into( assert_eq!(index_block.size, block.data.len(), "seek index is wrong"); block.track = 1; - block.timestamp_off = (index_block.pts - start_block.pts).try_into().unwrap(); - blocks.push(MatroskaTag::SimpleBlock(block.dump())) + block.timestamp_off = 0; + output.write_tag(&MatroskaTag::Cluster(Master::Collected(vec![ + MatroskaTag::Timestamp(index_block.pts - start_block.pts), + MatroskaTag::SimpleBlock(block.dump()), + ])))?; } - output.write_tag(&MatroskaTag::Cluster(Master::Collected(blocks)))?; output.write_tag(&MatroskaTag::Segment(Master::End))?; Ok(()) |