diff options
author | metamuffin <metamuffin@disroot.org> | 2023-10-02 12:53:23 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-10-02 12:53:23 +0200 |
commit | 3da60b245427a7409e17638bd78783a7ff7154f7 (patch) | |
tree | 77e2c3be999ee4e7e41b92c8b08b16a1621224b3 /remuxer/src | |
parent | 6887dfcf9774cb692a8375e0320ffcf80edb9536 (diff) | |
download | jellything-3da60b245427a7409e17638bd78783a7ff7154f7.tar jellything-3da60b245427a7409e17638bd78783a7ff7154f7.tar.bz2 jellything-3da60b245427a7409e17638bd78783a7ff7154f7.tar.zst |
buffered io in remux
Diffstat (limited to 'remuxer/src')
-rw-r--r-- | remuxer/src/remux.rs | 6 | ||||
-rw-r--r-- | remuxer/src/seek_index.rs | 4 | ||||
-rw-r--r-- | remuxer/src/snippet.rs | 9 |
3 files changed, 12 insertions, 7 deletions
diff --git a/remuxer/src/remux.rs b/remuxer/src/remux.rs index a95aa5c..df4f67d 100644 --- a/remuxer/src/remux.rs +++ b/remuxer/src/remux.rs @@ -21,7 +21,7 @@ use jellymatroska::{ use log::{debug, info, trace, warn}; use std::{ fs::File, - io::{Seek, SeekFrom, Write}, + io::{BufReader, BufWriter, Seek, SeekFrom, Write}, ops::Range, path::PathBuf, sync::Arc, @@ -38,7 +38,7 @@ pub fn remux_stream_into( webm: bool, ) -> anyhow::Result<()> { info!("remuxing {:?} to have tracks {selection:?}", item.title); - let writer = TrimWriter::new(writer, range.clone()); + let writer = TrimWriter::new(BufWriter::new(writer), range.clone()); let mut output = EbmlWriter::new(writer, 0); struct ReaderC { @@ -77,7 +77,7 @@ pub fn remux_stream_into( .ok_or(anyhow!("track missing"))? .to_owned(); debug!("\t seek index: {} blocks loaded", index.blocks.len()); - let reader = EbmlReader::new(file); + let reader = EbmlReader::new(BufReader::new(file)); Ok(ReaderC { index, reader, diff --git a/remuxer/src/seek_index.rs b/remuxer/src/seek_index.rs index 68ccb4a..a68051b 100644 --- a/remuxer/src/seek_index.rs +++ b/remuxer/src/seek_index.rs @@ -13,13 +13,13 @@ use jellymatroska::{ MatroskaTag, }; use log::{debug, info, trace, warn}; -use std::{collections::BTreeMap, fs::File, path::Path, sync::Arc}; +use std::{collections::BTreeMap, fs::File, io::BufReader, path::Path, sync::Arc}; pub fn get_seek_index(path: &Path) -> anyhow::Result<Arc<BTreeMap<u64, Arc<SeekIndex>>>> { cache_memory(&["seekindex", path.to_str().unwrap()], move || { info!("generating seek index for {path:?}"); let input = File::open(&path).context("opening source file")?; - let mut input = EbmlReader::new(input); + let mut input = EbmlReader::new(BufReader::new(input)); let index = import_seek_index(&mut input)?; info!("done"); Ok(index.into_iter().map(|(k, v)| (k, Arc::new(v))).collect()) diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs index f9d386a..26cb608 100644 --- a/remuxer/src/snippet.rs +++ b/remuxer/src/snippet.rs @@ -12,7 +12,12 @@ use anyhow::{anyhow, Context, Result}; use jellycommon::{LocalTrack, NodePublic}; use jellymatroska::{read::EbmlReader, write::EbmlWriter, Master, MatroskaTag}; use log::{debug, info}; -use std::{fs::File, io::Write, ops::Range, path::Path}; +use std::{ + fs::File, + io::{BufWriter, Write}, + ops::Range, + path::Path, +}; const SNIPPET_LENGTH: f64 = 2.; @@ -58,7 +63,7 @@ pub fn write_snippet_into( n: usize, ) -> anyhow::Result<()> { info!("writing snippet {n} of {:?} (track #{track})", item.title); - let mut output = EbmlWriter::new(writer, 0); + let mut output = EbmlWriter::new(BufWriter::new(writer), 0); let media_info = item.media.as_ref().unwrap(); let info = media_info |