aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2023-12-22 15:24:21 +0100
committertpart <tpart120@proton.me>2023-12-22 15:24:21 +0100
commit0bd6da689abe0193c6537c09509613f8897cc823 (patch)
tree1d0bd532480483d1b6ace838e37dfd9228a51cce /remuxer/src
parent2d7b5e58e82dc597d4646143d41cf31ef89c0737 (diff)
parent80e545d06c4a0f0841d4b40e3aff479ef8d864f9 (diff)
downloadjellything-0bd6da689abe0193c6537c09509613f8897cc823.tar
jellything-0bd6da689abe0193c6537c09509613f8897cc823.tar.bz2
jellything-0bd6da689abe0193c6537c09509613f8897cc823.tar.zst
Merge branch 'master' of codeberg.org:metamuffin/jellything
Diffstat (limited to 'remuxer/src')
-rw-r--r--remuxer/src/extract.rs2
-rw-r--r--remuxer/src/remux.rs2
-rw-r--r--remuxer/src/snippet.rs27
3 files changed, 14 insertions, 17 deletions
diff --git a/remuxer/src/extract.rs b/remuxer/src/extract.rs
index a948b49..5ec43bb 100644
--- a/remuxer/src/extract.rs
+++ b/remuxer/src/extract.rs
@@ -20,7 +20,7 @@ pub fn extract_track(
let index = get_seek_index(&source_path)?;
let index = index
.get(&(track_info.track as u64))
- .ok_or(anyhow!("track missing"))?;
+ .ok_or(anyhow!("track missing 4"))?;
let mut out = Vec::new();
for b in &index.blocks {
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs
index b705572..637d445 100644
--- a/remuxer/src/remux.rs
+++ b/remuxer/src/remux.rs
@@ -81,7 +81,7 @@ pub fn remux_stream_into(
let index = get_seek_index(&source_path)?;
let index = index
.get(&(private.track as u64))
- .ok_or(anyhow!("track missing"))?
+ .ok_or(anyhow!("track missing 3"))?
.to_owned();
debug!("\t seek index: {} blocks loaded", index.blocks.len());
let reader = EbmlReader::new(BufReader::new(file));
diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs
index cd45f8b..0d5c715 100644
--- a/remuxer/src/snippet.rs
+++ b/remuxer/src/snippet.rs
@@ -24,16 +24,14 @@ const SNIPPET_LENGTH: f64 = 2.;
pub fn snippet_index(
path_base: &Path,
item: &NodePublic,
- track_sources: &Vec<LocalTrack>,
- track: usize,
+ local_track: &LocalTrack,
) -> Result<Vec<Range<f64>>> {
let media_info = item.media.as_ref().unwrap();
- let private = &track_sources[track];
- let source_path = path_base.join(&private.path);
+ let source_path = path_base.join(&local_track.path);
let index = get_seek_index(&source_path)?;
let index = index
- .get(&(private.track as u64))
- .ok_or(anyhow!("track missing"))?;
+ .get(&(local_track.track as u64))
+ .ok_or(anyhow!("seek index track missing"))?;
let average_kf_interval = media_info.duration / index.keyframes.len() as f64;
let kf_per_snip = (SNIPPET_LENGTH / average_kf_interval).ceil() as usize;
debug!("average keyframe interval: {average_kf_interval}");
@@ -57,12 +55,12 @@ pub fn write_snippet_into(
writer: impl Write,
path_base: &Path,
item: &NodePublic,
- track_sources: Vec<LocalTrack>,
+ local_track: &LocalTrack,
track: usize,
webm: bool,
n: usize,
) -> anyhow::Result<()> {
- info!("writing snippet {n} of {:?} (track #{track})", item.title);
+ info!("writing snippet {n} of {:?} (track {track})", item.title);
let mut output = EbmlWriter::new(BufWriter::new(writer), 0);
let media_info = item.media.as_ref().unwrap();
@@ -71,19 +69,18 @@ pub fn write_snippet_into(
.get(track)
.ok_or(anyhow!("track not available"))?
.to_owned();
- let private = &track_sources[track];
- let source_path = path_base.join(&private.path);
+ let source_path = path_base.join(&local_track.path);
let mapped = 1;
info!(
"\t- {track} {source_path:?} ({} => {mapped})",
- private.track
+ local_track.track
);
info!("\t {}", info);
let file = File::open(&source_path).context("opening source file")?;
let index = get_seek_index(&source_path)?;
let index = index
- .get(&(private.track as u64))
- .ok_or(anyhow!("track missing"))?
+ .get(&(local_track.track as u64))
+ .ok_or(anyhow!("track missing 2"))?
.to_owned();
debug!("\t seek index: {} blocks loaded", index.blocks.len());
let mut reader = EbmlReader::new(file);
@@ -118,10 +115,10 @@ pub fn write_snippet_into(
))?;
output.write_tag(&MatroskaTag::Tags(Master::Collected(vec![])))?;
output.write_tag(&MatroskaTag::Tracks(Master::Collected(vec![
- ebml_track_entry(mapped, &info, private.codec_private.clone()),
+ ebml_track_entry(mapped, &info, local_track.codec_private.clone()),
])))?;
- let mut reader = SegmentExtractIter::new(&mut reader, private.track as u64);
+ let mut reader = SegmentExtractIter::new(&mut reader, local_track.track as u64);
{
// TODO this one caused snippets to get dropped MSE for no reason