aboutsummaryrefslogtreecommitdiff
path: root/stream/src/fragment.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stream/src/fragment.rs')
-rw-r--r--stream/src/fragment.rs45
1 files changed, 18 insertions, 27 deletions
diff --git a/stream/src/fragment.rs b/stream/src/fragment.rs
index a34bb8d..52d32f4 100644
--- a/stream/src/fragment.rs
+++ b/stream/src/fragment.rs
@@ -3,37 +3,29 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2025 metamuffin <metamuffin.org>
*/
+use crate::{stream_info, SMediaInfo};
use anyhow::{anyhow, Result};
-use jellybase::{
- common::{
- stream::StreamSpec,
- user::{PermissionSet, UserPermission},
- LocalTrack, Node,
- },
- permission::PermissionSetExt,
- CONF,
-};
-use jellytranscoder::fragment::transcode;
+use jellybase::common::stream::StreamContainer;
use log::warn;
use std::sync::Arc;
-use tokio::{fs::File, io::DuplexStream};
+use tokio::io::DuplexStream;
use tokio_util::io::SyncIoBridge;
pub async fn fragment_stream(
- node: Arc<Node>,
- local_tracks: Vec<LocalTrack>,
- spec: StreamSpec,
mut b: DuplexStream,
- perms: &PermissionSet,
- webm: bool,
- track: u64,
- segment: u64,
+ info: Arc<SMediaInfo>,
+ track: usize,
+ segment: usize,
index: usize,
+ format: usize,
+ container: StreamContainer,
) -> Result<()> {
- let local_track = local_tracks
- .first()
- .ok_or(anyhow!("track missing"))?
- .to_owned();
+ let (iinfo, info) = stream_info(info).await?;
+ let (file_index, track_num) = *iinfo
+ .track_to_file
+ .get(track)
+ .ok_or(anyhow!("track not found"))?;
+ let path = iinfo.paths[file_index].clone();
// if let Some(profile) = None {
// perms.assert(&UserPermission::Transcode)?;
@@ -70,11 +62,10 @@ pub async fn fragment_stream(
tokio::task::spawn_blocking(move || {
if let Err(err) = jellyremuxer::write_fragment_into(
b,
- &CONF.media_path,
- &node,
- &local_track,
- track as usize,
- webm,
+ &path,
+ track_num,
+ container == StreamContainer::WebM,
+ &info.name.unwrap_or_default(),
index,
) {
warn!("segment stream error: {err}");