aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src')
-rw-r--r--remuxer/src/fragment.rs7
-rw-r--r--remuxer/src/lib.rs7
-rw-r--r--remuxer/src/remux.rs2
3 files changed, 12 insertions, 4 deletions
diff --git a/remuxer/src/fragment.rs b/remuxer/src/fragment.rs
index d7adc41..9fa68f3 100644
--- a/remuxer/src/fragment.rs
+++ b/remuxer/src/fragment.rs
@@ -153,7 +153,12 @@ pub fn write_fragment_into(
(last_block_pts - start_block.pts) as f64 / 1000.,
))?;
output.write_tag(&MatroskaTag::Tracks(Master::Collected(vec![
- ebml_track_entry(mapped, &info, local_track.codec_private.clone()),
+ ebml_track_entry(
+ mapped,
+ local_track.track as u64 * 100, // TODO something else that is unique to the track
+ &info,
+ local_track.codec_private.clone(),
+ ),
])))?;
reader.seek(start_block.source_off, MatroskaTag::Cluster(Master::Start))?;
diff --git a/remuxer/src/lib.rs b/remuxer/src/lib.rs
index 3ea16e2..b46369e 100644
--- a/remuxer/src/lib.rs
+++ b/remuxer/src/lib.rs
@@ -43,15 +43,18 @@ pub fn ebml_segment_info(title: String, duration: f64) -> MatroskaTag {
pub fn ebml_track_entry(
number: u64,
+ uid: u64,
track: &SourceTrack,
codec_private: Option<Vec<u8>>,
) -> MatroskaTag {
let mut els = vec![
MatroskaTag::TrackNumber(number),
- MatroskaTag::TrackUID(number),
+ MatroskaTag::TrackUID(uid),
MatroskaTag::FlagLacing(0),
MatroskaTag::Language(track.language.clone()),
MatroskaTag::CodecID(track.codec.clone()),
+ MatroskaTag::CodecDelay(track.codec_delay.clone()),
+ MatroskaTag::SeekPreRoll(track.seek_pre_roll.clone()),
];
if let Some(d) = &track.default_duration {
els.push(MatroskaTag::DefaultDuration(*d));
@@ -72,7 +75,7 @@ pub fn ebml_track_entry(
];
props.push(MatroskaTag::DisplayWidth(display_width.unwrap_or(width)));
props.push(MatroskaTag::DisplayHeight(display_height.unwrap_or(height)));
- props.push(MatroskaTag::DisplayUnit(display_unit.unwrap_or(0)));
+ props.push(MatroskaTag::DisplayUnit(display_unit));
if let Some(fps) = fps {
props.push(MatroskaTag::FrameRate(fps))
}
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs
index a2e0d8a..0507f1e 100644
--- a/remuxer/src/remux.rs
+++ b/remuxer/src/remux.rs
@@ -114,7 +114,7 @@ pub fn remux_stream_into(
let tracks_header = inputs
.iter_mut()
- .map(|rc| ebml_track_entry(rc.mapped, &rc.info, rc.codec_private.take()))
+ .map(|rc| ebml_track_entry(rc.mapped, rc.mapped, &rc.info, rc.codec_private.take()))
.collect();
output.write_tag(&MatroskaTag::Tracks(Master::Collected(tracks_header)))?;