aboutsummaryrefslogtreecommitdiff
path: root/stream/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-21 20:36:34 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-21 20:36:34 +0200
commitb9d8e20b6bff6b51f73106b688bd6e5d98e08215 (patch)
tree0e6a82ff9fd346d79a0879c373c838f4e2a49e8a /stream/src
parent30c3bb552aba8794d57eb08688e0c1c751ab27a0 (diff)
downloadjellything-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.rs9
-rw-r--r--stream/src/stream_info.rs14
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 {