From: Kostya Shishkov Date: Fri, 10 Oct 2025 16:48:57 +0000 (+0200) Subject: select proper reorderer depending on codec type X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=3fc2181a33abb1c2d5f76cdcf4d11bda80dc7fd2;p=nihav-encoder.git select proper reorderer depending on codec type --- diff --git a/src/main.rs b/src/main.rs index bca697a..ccdfc50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -471,13 +471,21 @@ fn main() { } transcoder.apply_decoder_options(decoder.as_mut(), str_id); let desc = register::get_codec_description(info.get_name()); - let has_b = if let Some(desc) = desc { - desc.has_reorder() - } else { + let caps = if let Some(desc) = desc { + desc.caps + } else if s.get_media_type() == StreamType::Video { println!("No codec description found, using B-frame reorderer."); - true + register::CODEC_CAP_REORDER + } else { + 0 + }; + let reorderer: Box = if (caps & register::CODEC_CAP_COMPLEX_REORDER) != 0 { + Box::new(ComplexReorderer::new()) + } else if (caps & register::CODEC_CAP_REORDER) != 0 { + Box::new(IPBReorderer::new()) + } else { + Box::new(NoReorderer::new()) }; - let reorderer: Box = if has_b { Box::new(IPBReorderer::new()) } else { Box::new(NoReorderer::new()) }; transcoder.decoders.push(Some(DecodeContext{ dsupp, decoder, reorderer })); } else { println!("No decoder for stream {} ({}) is found", str_id, info.get_name());