From 542107bae31efeefe0e8072bfb05eef12171ce52 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 16 May 2023 10:53:39 +0200 Subject: first correct output by hardcoding offsets --- remuxer/src/lib.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'remuxer/src/lib.rs') diff --git a/remuxer/src/lib.rs b/remuxer/src/lib.rs index c0a4c69..34991e2 100644 --- a/remuxer/src/lib.rs +++ b/remuxer/src/lib.rs @@ -114,6 +114,7 @@ impl RemuxerContext { ])))?; output.write_tag(&MatroskaTag::Segment(Master::Start))?; + let segment_offset = output.position(); output.write_tag(&MatroskaTag::Info(Master::Collected(vec![ MatroskaTag::TimestampScale(1_000_000), @@ -172,7 +173,7 @@ impl RemuxerContext { + vint_length(cluster_content_size as u64) // size varint + cluster_content_size; clusters.push(ClusterLayout { - position: gp, + position: gp + 7860, // TODO this needs calculation timestamp: cluster_pts, source_offsets, blocks: std::mem::take(&mut cluster), @@ -225,10 +226,11 @@ impl RemuxerContext { .collect(), )))?; - let segment_start_position = output.position(); + let first_cluster_offset = output.position(); + eprintln!("{}", first_cluster_offset - segment_offset); let mut skip = 0; for (i, cluster) in segment_layout.iter().enumerate() { - if (cluster.position + segment_start_position) > range.start { + if (cluster.position + first_cluster_offset) > range.start { break; } skip = i; @@ -278,7 +280,7 @@ impl RemuxerContext { ); { let cue_error = - cluster.position as i64 - (output.position() - segment_start_position) as i64; + cluster.position as i64 - (output.position() - segment_offset) as i64; if cue_error != 0 { warn!("calculation was {} bytes off", cue_error); } -- cgit v1.2.3-70-g09d2