From 7dee77aaf7b663f65c7f0da514839b7ccc965f52 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 12 Mar 2026 15:07:24 +0100 Subject: dont write clusters to intermediate buffer --- remuxer/src/muxers/matroska.rs | 7 +++---- stream/src/stream_info.rs | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/remuxer/src/muxers/matroska.rs b/remuxer/src/muxers/matroska.rs index 272c91d..8e82201 100644 --- a/remuxer/src/muxers/matroska.rs +++ b/remuxer/src/muxers/matroska.rs @@ -6,7 +6,7 @@ use crate::muxers::FragmentMuxer; use anyhow::Result; -use winter_ebml::{Ebml, EbmlHeader, EbmlToVec, write_vint_slice}; +use winter_ebml::{Ebml, EbmlHeader, write_vint_slice}; use winter_matroska::{MatroskaFile, Segment}; fn write_init_shared(out: &mut Vec, mut segment: Segment, webm: bool) -> Result<()> { @@ -55,10 +55,9 @@ fn write_init_shared(out: &mut Vec, mut segment: Segment, webm: bool) -> Res } fn write_frag_shared(out: &mut Vec, segment: Segment, _webm: bool) -> Result<()> { for cluster in segment.clusters { - let cluster = cluster.to_vec(); write_vint_slice(out, Segment::TAG_CLUSTERS); - write_vint_slice(out, cluster.len() as u64); - out.extend(cluster); + write_vint_slice(out, cluster.size() as u64); + cluster.write(out) } Ok(()) } diff --git a/stream/src/stream_info.rs b/stream/src/stream_info.rs index 0d4350f..71ccb1f 100644 --- a/stream/src/stream_info.rs +++ b/stream/src/stream_info.rs @@ -184,7 +184,8 @@ fn containers_by_codec(codec: &str) -> Vec { use StreamContainer::*; match codec { "V_VP8" | "V_VP9" | "V_AV1" | "A_OPUS" | "A_VORBIS" => vec![Matroska, WebM], - "V_MPEG4/ISO/AVC" | "V_MPEGH/ISO/HEVC" | "A_AAC" => vec![Matroska, MP4], + "V_MPEG4/ISO/AVC" => vec![Matroska, MP4], + // "V_MPEG4/ISO/AVC" | "V_MPEGH/ISO/HEVC" | "A_AAC" => vec![Matroska, MP4], // TODO not supported yet "S_TEXT/UTF8" | "S_TEXT/WEBVTT" => vec![Matroska, WebVTT, WebM, JVTT], _ => vec![Matroska], } -- cgit v1.3