Fix Linux audio backend preference and worker footage render crash
- On Linux, automatically prefer PipeWire/JACK/PulseAudio over ALSA even when a saved ALSA device name exists in config. - Restore Footage length after deserialization so worker snapshots have valid stream lengths and video playback can advance. - Guard ResolveDecoderFromInput and ProcessAudioFootage against a null decoder cache to prevent worker crashes on direct Footage -> ViewerOutput connections. - Keep Linux signal backtrace handler in the render worker. - Add Oak project SVG logos.
This commit is contained in:
@@ -317,6 +317,12 @@ RenderProcessor::ResolveDecoderFromInput(const QString &decoder_id,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!decoder_cache_) {
|
||||
qWarning() << "Cannot resolve decoder for" << stream.filename()
|
||||
<< "without a decoder cache";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QMutexLocker locker(decoder_cache_->mutex());
|
||||
|
||||
DecoderPair decoder = decoder_cache_->value(stream);
|
||||
@@ -599,6 +605,12 @@ void RenderProcessor::ProcessAudioFootage(SampleBuffer &destination,
|
||||
const FootageJob *stream,
|
||||
const TimeRange &input_time)
|
||||
{
|
||||
// The worker process has no decoder cache and does not decode audio. Bail
|
||||
// out gracefully rather than letting ResolveDecoderFromInput crash.
|
||||
if (!decoder_cache_) {
|
||||
return;
|
||||
}
|
||||
|
||||
DecoderPtr decoder = ResolveDecoderFromInput(
|
||||
stream->decoder(),
|
||||
Decoder::CodecStream(stream->filename(),
|
||||
|
||||
Reference in New Issue
Block a user