aboutsummaryrefslogtreecommitdiff
path: root/remuxer
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-29 14:49:54 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-29 14:49:54 +0100
commit4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b (patch)
treeb2318fae2ff21089338a36db8f4bc054357f406d /remuxer
parentba33c4019c2cc62f2a8c18c4b7354c3b52758b95 (diff)
downloadjellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar
jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.bz2
jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.zst
support DisplayUnit
Diffstat (limited to 'remuxer')
-rw-r--r--remuxer/src/fragment.rs11
-rw-r--r--remuxer/src/lib.rs10
-rw-r--r--remuxer/src/metadata.rs (renamed from remuxer/src/import/mod.rs)7
3 files changed, 15 insertions, 13 deletions
diff --git a/remuxer/src/fragment.rs b/remuxer/src/fragment.rs
index 0460083..9d8dd8d 100644
--- a/remuxer/src/fragment.rs
+++ b/remuxer/src/fragment.rs
@@ -146,15 +146,10 @@ pub fn write_fragment_into(
.map(|b| b.pts)
.unwrap_or((media_info.duration * 1000.) as u64);
- reader.seek(start_block.source_off, MatroskaTag::Cluster(Master::Start))?;
-
output.write_tag(&ebml_header(webm))?;
output.write_tag(&MatroskaTag::Segment(Master::Start))?;
output.write_tag(&ebml_segment_info(
- format!(
- "{} (track {track}; frag {n})",
- item.title.clone().unwrap_or_default()
- ),
+ format!("{}: {info}", item.title.clone().unwrap_or_default()),
(last_block_pts - start_block.pts) as f64 / 1000.,
))?;
output.write_tag(&MatroskaTag::Tags(Master::Collected(vec![])))?;
@@ -162,6 +157,7 @@ pub fn write_fragment_into(
ebml_track_entry(mapped, &info, local_track.codec_private.clone()),
])))?;
+ reader.seek(start_block.source_off, MatroskaTag::Cluster(Master::Start))?;
let mut reader = SegmentExtractIter::new(&mut reader, local_track.track as u64);
{
@@ -204,9 +200,6 @@ pub fn write_fragment_into(
}
output.write_tag(&MatroskaTag::Cluster(Master::Collected(blocks)))?;
}
-
- // output.write_tag(&MatroskaTag::Segment(Master::End))?;
-
debug!("wrote {} bytes", output.position());
Ok(())
}
diff --git a/remuxer/src/lib.rs b/remuxer/src/lib.rs
index 49af2e7..6480a3d 100644
--- a/remuxer/src/lib.rs
+++ b/remuxer/src/lib.rs
@@ -4,15 +4,15 @@
Copyright (C) 2024 metamuffin <metamuffin.org>
*/
pub mod extract;
-pub mod import;
+pub mod fragment;
+pub mod metadata;
pub mod remux;
pub mod seek_index;
pub mod segment_extractor;
-pub mod fragment;
pub mod trim_writer;
-pub use remux::remux_stream_into;
pub use fragment::write_fragment_into;
+pub use remux::remux_stream_into;
use jellycommon::{SourceTrack, SourceTrackKind};
use jellymatroska::{Master, MatroskaTag};
@@ -63,6 +63,7 @@ pub fn ebml_track_entry(
height,
display_height,
display_width,
+ display_unit,
fps,
} => {
els.push(MatroskaTag::TrackType(1));
@@ -76,6 +77,9 @@ pub fn ebml_track_entry(
if let Some(display_height) = display_height {
props.push(MatroskaTag::DisplayHeight(display_height))
}
+ if let Some(display_unit) = display_unit {
+ props.push(MatroskaTag::DisplayUnit(display_unit))
+ }
if let Some(fps) = fps {
props.push(MatroskaTag::FrameRate(fps))
}
diff --git a/remuxer/src/import/mod.rs b/remuxer/src/metadata.rs
index e26b575..3fd82ce 100644
--- a/remuxer/src/import/mod.rs
+++ b/remuxer/src/metadata.rs
@@ -270,9 +270,10 @@ fn import_read_segment(segment: &mut Unflatten) -> Result<MatroskaMetadata> {
mut bit_depth,
mut codec_private,
mut default_duration,
+ mut display_unit,
) = (
None, None, None, None, None, None, None, None, None, None, None,
- None, None, None, None,
+ None, None, None, None, None,
);
while let Some(Ok(Unflat { children, item, .. })) = children.n() {
match item {
@@ -310,6 +311,9 @@ fn import_read_segment(segment: &mut Unflatten) -> Result<MatroskaMetadata> {
MatroskaTag::DisplayHeight(v) => {
display_height = Some(v)
}
+ MatroskaTag::DisplayUnit(v) => {
+ display_unit = Some(v)
+ }
MatroskaTag::FrameRate(v) => fps = Some(v),
_ => (),
}
@@ -326,6 +330,7 @@ fn import_read_segment(segment: &mut Unflatten) -> Result<MatroskaMetadata> {
height: height.unwrap(),
display_width,
display_height,
+ display_unit,
},
2 => SourceTrackKind::Audio {
bit_depth: bit_depth.map(|x| x as usize),