diff options
author | metamuffin <metamuffin@disroot.org> | 2024-01-29 14:49:54 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-01-29 14:49:54 +0100 |
commit | 4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b (patch) | |
tree | b2318fae2ff21089338a36db8f4bc054357f406d /remuxer | |
parent | ba33c4019c2cc62f2a8c18c4b7354c3b52758b95 (diff) | |
download | jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.bz2 jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.zst |
support DisplayUnit
Diffstat (limited to 'remuxer')
-rw-r--r-- | remuxer/src/fragment.rs | 11 | ||||
-rw-r--r-- | remuxer/src/lib.rs | 10 | ||||
-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), |