From: Kostya Shishkov Date: Tue, 31 Mar 2026 19:08:28 +0000 (+0200) Subject: do not allow packets with palette changes for muxers that don't support it X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=7c7c4dec937a942f065b67b73ff29064a868002b;p=nihav-encoder.git do not allow packets with palette changes for muxers that don't support it --- 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 {