aboutsummaryrefslogtreecommitdiff
path: root/remuxer
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer')
-rw-r--r--remuxer/src/lib.rs10
1 files changed, 6 insertions, 4 deletions
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);
}