From 7c7c4dec937a942f065b67b73ff29064a868002b Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Tue, 31 Mar 2026 21:08:28 +0200 Subject: [PATCH] do not allow packets with palette changes for muxers that don't support it --- src/main.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.rs b/src/main.rs index 61c5b2c..015cbe3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -750,6 +750,11 @@ fn main() { transcoder.debug_log(DebugLog::ENCODE, &format!(" Packet from stream {src_id} dropped")); }, OutputMode::Copy(dst_id) => { + if mux_quirks.is_global_pal() && pkt.ts.pts != Some(0) && + pkt.side_data.iter().any(|sd| matches!(sd, NASideData::Palette(true, _))) { + println!("Palette change encountered while muxer does not support that!"); + break 'main_loop; + } let dstr = mux.get_stream(dst_id as usize).unwrap(); pkt.reassign(dstr, pkt.get_time_information()); transcoder.debug_log(DebugLog::ENCODE, &format!(" Packet from stream {src_id} copied to {dst_id}")); @@ -763,6 +768,11 @@ fn main() { transcoder.queue.queue_packet(pkt, &mut transcoder.debug); }, OutputMode::Encode(dst_id, ref mut encoder) => { + if mux_quirks.is_global_pal() && pkt.ts.pts != Some(0) && + pkt.side_data.iter().any(|sd| matches!(sd, NASideData::Palette(true, _))) { + println!("Palette change encountered while muxer does not support that!"); + break 'main_loop; + } if let Some(ref mut dec_ctx) = transcoder.decoders[src_id] { let ret = dec_ctx.decoder.decode(&mut dec_ctx.dsupp, &pkt); if let Some(ref mut dbg) = transcoder.debug { -- 2.39.5