diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-21 20:36:34 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-21 20:36:34 +0200 |
commit | b9d8e20b6bff6b51f73106b688bd6e5d98e08215 (patch) | |
tree | 0e6a82ff9fd346d79a0879c373c838f4e2a49e8a /stream/src | |
parent | 30c3bb552aba8794d57eb08688e0c1c751ab27a0 (diff) | |
download | jellything-b9d8e20b6bff6b51f73106b688bd6e5d98e08215.tar jellything-b9d8e20b6bff6b51f73106b688bd6e5d98e08215.tar.bz2 jellything-b9d8e20b6bff6b51f73106b688bd6e5d98e08215.tar.zst |
new transcoding args system
Diffstat (limited to 'stream/src')
-rw-r--r-- | stream/src/fragment.rs | 9 | ||||
-rw-r--r-- | stream/src/stream_info.rs | 14 |
2 files changed, 16 insertions, 7 deletions
diff --git a/stream/src/fragment.rs b/stream/src/fragment.rs index 0652df2..9e8c3bd 100644 --- a/stream/src/fragment.rs +++ b/stream/src/fragment.rs @@ -40,6 +40,14 @@ pub async fn fragment_stream( .formats .get(format_num) .ok_or(anyhow!("format not found"))?; + let orig_track = iinfo.metadata[file_index] + .tracks + .as_ref() + .unwrap() + .entries + .iter() + .find(|t| t.track_number == track_num) + .unwrap(); if format.remux { match container { @@ -81,6 +89,7 @@ pub async fn fragment_stream( } else { let location = transcode( track.kind, + orig_track, format, &format!("{path:?} {track_num} {index}"), move |b| { diff --git a/stream/src/stream_info.rs b/stream/src/stream_info.rs index 3a33b46..1005edc 100644 --- a/stream/src/stream_info.rs +++ b/stream/src/stream_info.rs @@ -34,7 +34,7 @@ async fn async_get_track_sizes(path: PathBuf) -> Result<BTreeMap<u64, usize>> { pub(crate) struct InternalStreamInfo { pub paths: Vec<PathBuf>, - pub _metadata: Vec<Arc<MatroskaMetadata>>, + pub metadata: Vec<Arc<MatroskaMetadata>>, pub track_to_file: Vec<(usize, u64)>, } @@ -76,7 +76,7 @@ pub(crate) async fn stream_info(info: Arc<SMediaInfo>) -> Result<(InternalStream }; Ok(( InternalStreamInfo { - _metadata: metadata_arr, + metadata: metadata_arr, paths, track_to_file, }, @@ -119,11 +119,11 @@ fn stream_formats(t: &TrackEntry, remux_bitrate: f64) -> Vec<StreamFormatInfo> { // most codecs use chroma subsampling that requires even dims let h = ((w * sh) / sw) & !1; // clear last bit to ensure even height. for (cid, enable) in [ - ("V_AV1", CONF.encoders.av1.is_some()), - ("V_VP8", CONF.encoders.vp8.is_some()), - ("V_VP9", CONF.encoders.vp9.is_some()), - ("V_MPEG4/ISO/AVC", CONF.encoders.avc.is_some()), - ("V_MPEGH/ISO/HEVC", CONF.encoders.hevc.is_some()), + ("V_AV1", CONF.transcoder.offer_av1), + ("V_VP8", CONF.transcoder.offer_vp8), + ("V_VP9", CONF.transcoder.offer_vp9), + ("V_MPEG4/ISO/AVC", CONF.transcoder.offer_avc), + ("V_MPEGH/ISO/HEVC", CONF.transcoder.offer_hevc), ] { if enable { formats.push(StreamFormatInfo { |