From c86f1cacd108fa0a7938606de0733c704e05974c Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 7 Sep 2023 20:44:39 +0200 Subject: [PATCH] Fix crash without SRT output. --- nageru/audio_encoder.h | 2 ++ nageru/quicksync_encoder.cpp | 4 +++- nageru/video_encoder.cpp | 16 ++++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/nageru/audio_encoder.h b/nageru/audio_encoder.h index ca2634f..bd27978 100644 --- a/nageru/audio_encoder.h +++ b/nageru/audio_encoder.h @@ -3,6 +3,7 @@ #ifndef _AUDIO_ENCODER_H #define _AUDIO_ENCODER_H 1 +#include #include #include #include @@ -25,6 +26,7 @@ public: ~AudioEncoder(); void add_mux(Mux *mux) { // Does not take ownership. + assert(mux != nullptr); muxes.push_back(mux); } void encode_audio(const std::vector &audio, int64_t audio_pts); diff --git a/nageru/quicksync_encoder.cpp b/nageru/quicksync_encoder.cpp index d75dbeb..a189459 100644 --- a/nageru/quicksync_encoder.cpp +++ b/nageru/quicksync_encoder.cpp @@ -1353,7 +1353,9 @@ void QuickSyncEncoderImpl::save_codeddata(GLSurface *surf, storage_task task) if (!global_flags.x264_video_to_http && !global_flags.av1_video_to_http) { http_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay()); - srt_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay()); + if (srt_mux != nullptr) { + srt_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay()); + } } } } diff --git a/nageru/video_encoder.cpp b/nageru/video_encoder.cpp index 4d6a403..4a84ddc 100644 --- a/nageru/video_encoder.cpp +++ b/nageru/video_encoder.cpp @@ -89,17 +89,25 @@ VideoEncoder::VideoEncoder(ResourcePool *resource_pool, QSurface *surface, const open_output_streams(); stream_audio_encoder->add_mux(http_mux.get()); - stream_audio_encoder->add_mux(srt_mux.get()); + if (srt_mux != nullptr) { + stream_audio_encoder->add_mux(srt_mux.get()); + } quicksync_encoder->set_http_mux(http_mux.get()); - quicksync_encoder->set_srt_mux(srt_mux.get()); + if (srt_mux != nullptr) { + quicksync_encoder->set_srt_mux(srt_mux.get()); + } if (global_flags.x264_video_to_http) { x264_encoder->add_mux(http_mux.get()); - x264_encoder->add_mux(srt_mux.get()); + if (srt_mux != nullptr) { + x264_encoder->add_mux(srt_mux.get()); + } } #ifdef HAVE_AV1 if (global_flags.av1_video_to_http) { av1_encoder->add_mux(http_mux.get()); - av1_encoder->add_mux(srt_mux.get()); + if (srt_mux != nullptr) { + av1_encoder->add_mux(srt_mux.get()); + } } #endif } -- 2.39.2