aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/muxers/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src/muxers/mod.rs')
-rw-r--r--remuxer/src/muxers/mod.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/remuxer/src/muxers/mod.rs b/remuxer/src/muxers/mod.rs
index d668ab2..3d0a935 100644
--- a/remuxer/src/muxers/mod.rs
+++ b/remuxer/src/muxers/mod.rs
@@ -19,7 +19,7 @@ use winter_matroska::Segment;
pub trait FragmentMuxer {
fn write_init(out: &mut Vec<u8>, segment: Segment) -> Result<()>;
- fn write_frag(out: &mut Vec<u8>, segment: Segment) -> Result<()>;
+ fn write_frag(out: &mut Vec<u8>, segment: Segment, index: usize, end_pts: u64) -> Result<()>;
}
pub fn write_init(container: ContainerFormat, out: &mut Vec<u8>, segment: Segment) -> Result<()> {
@@ -30,11 +30,19 @@ pub fn write_init(container: ContainerFormat, out: &mut Vec<u8>, segment: Segmen
_ => unimplemented!(),
}
}
-pub fn write_frag(container: ContainerFormat, out: &mut Vec<u8>, segment: Segment) -> Result<()> {
+pub fn write_frag(
+ container: ContainerFormat,
+ out: &mut Vec<u8>,
+ segment: Segment,
+ index: usize,
+ end_pts: u64,
+) -> Result<()> {
match container {
- ContainerFormat::Matroska => MatroskaFragmentMuxer::write_frag(out, segment),
- ContainerFormat::Webm => WebmFragmentMuxer::write_frag(out, segment),
- ContainerFormat::MP4 => MP4FragmentMuxer::write_frag(out, segment),
+ ContainerFormat::Matroska => {
+ MatroskaFragmentMuxer::write_frag(out, segment, index, end_pts)
+ }
+ ContainerFormat::Webm => WebmFragmentMuxer::write_frag(out, segment, index, end_pts),
+ ContainerFormat::MP4 => MP4FragmentMuxer::write_frag(out, segment, index, end_pts),
_ => unimplemented!(),
}
}
@@ -42,16 +50,19 @@ pub fn write_init_frag(
container: ContainerFormat,
out: &mut Vec<u8>,
segment: Segment,
+ index: usize,
+ end_pts: u64,
) -> Result<()> {
write_init(
container,
out,
Segment {
info: segment.info.clone(),
+ tags: segment.tags.clone(),
tracks: segment.tracks.clone(),
..Default::default()
},
)?;
- write_frag(container, out, segment)?;
+ write_frag(container, out, segment, index, end_pts)?;
Ok(())
}