From b9539ee3afbf1440b8628bf0609dc0e24aed116c Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 2 Mar 2025 13:43:59 +0100 Subject: change things --- stream/src/fragment.rs | 104 ++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 53 deletions(-) (limited to 'stream/src/fragment.rs') diff --git a/stream/src/fragment.rs b/stream/src/fragment.rs index e276d29..a34bb8d 100644 --- a/stream/src/fragment.rs +++ b/stream/src/fragment.rs @@ -3,7 +3,7 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin */ -use anyhow::{anyhow, bail, Result}; +use anyhow::{anyhow, Result}; use jellybase::{ common::{ stream::StreamSpec, @@ -25,64 +25,62 @@ pub async fn fragment_stream( spec: StreamSpec, mut b: DuplexStream, perms: &PermissionSet, + webm: bool, + track: u64, + segment: u64, + index: usize, ) -> Result<()> { - if spec.track.len() != 1 { - bail!("unsupported number of tracks for segment, must be exactly one"); - } - let track = spec.track[0]; - let n = spec.index.ok_or(anyhow!("segment index missing"))?; - let local_track = local_tracks .first() .ok_or(anyhow!("track missing"))? .to_owned(); - if let Some(profile) = spec.profile { - perms.assert(&UserPermission::Transcode)?; - let location = transcode( - &format!("{track} {n} {:?}", node), // TODO maybe not use the entire source - CONF.transcoding_profiles - .get(profile) - .ok_or(anyhow!("profile out of range"))?, - move |b| { - tokio::task::spawn_blocking(move || { - if let Err(err) = jellyremuxer::write_fragment_into( - SyncIoBridge::new(b), - &CONF.media_path, - &node, - &local_track, - track, - false, - n, - ) { - warn!("segment stream error: {err}"); - } - }); - }, - ) - .await?; - let mut output = File::open(location.abs()).await?; - tokio::task::spawn(async move { - if let Err(err) = tokio::io::copy(&mut output, &mut b).await { - warn!("cannot write stream: {err}") - } - }); - } else { - let b = SyncIoBridge::new(b); - tokio::task::spawn_blocking(move || { - if let Err(err) = jellyremuxer::write_fragment_into( - b, - &CONF.media_path, - &node, - &local_track, - track, - spec.webm.unwrap_or(false), - n, - ) { - warn!("segment stream error: {err}"); - } - }); - } + // if let Some(profile) = None { + // perms.assert(&UserPermission::Transcode)?; + // let location = transcode( + // &format!("{track} {index} {:?}", node), // TODO maybe not use the entire source + // CONF.transcoding_profiles + // .get(profile) + // .ok_or(anyhow!("profile out of range"))?, + // move |b| { + // tokio::task::spawn_blocking(move || { + // if let Err(err) = jellyremuxer::write_fragment_into( + // SyncIoBridge::new(b), + // &CONF.media_path, + // &node, + // &local_track, + // track as usize, + // false, + // index, + // ) { + // warn!("segment stream error: {err}"); + // } + // }); + // }, + // ) + // .await?; + // let mut output = File::open(location.abs()).await?; + // tokio::task::spawn(async move { + // if let Err(err) = tokio::io::copy(&mut output, &mut b).await { + // warn!("cannot write stream: {err}") + // } + // }); + // } else { + let b = SyncIoBridge::new(b); + tokio::task::spawn_blocking(move || { + if let Err(err) = jellyremuxer::write_fragment_into( + b, + &CONF.media_path, + &node, + &local_track, + track as usize, + webm, + index, + ) { + warn!("segment stream error: {err}"); + } + }); + // } Ok(()) } -- cgit v1.2.3-70-g09d2