X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fvideo_encoder.cpp;h=ec96acc58d9c82e24bbb33338bb0dccdb4c2de43;hb=8acd52c4ad9cd890bc689601775255e55912783f;hp=4d6a403d0051cfec8d3a8c6c5ad638b3983c600c;hpb=1ea13d66da4aca375505b550bd207ad1c14d298f;p=nageru diff --git a/nageru/video_encoder.cpp b/nageru/video_encoder.cpp index 4d6a403..ec96acc 100644 --- a/nageru/video_encoder.cpp +++ b/nageru/video_encoder.cpp @@ -89,23 +89,32 @@ 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 } VideoEncoder::~VideoEncoder() { + should_quit = true; quicksync_encoder->shutdown(); x264_encoder.reset(nullptr); x264_disk_encoder.reset(nullptr); @@ -397,7 +406,7 @@ int VideoEncoder::write_srt_packet(uint8_t *buf, int buf_size) if (want_srt_metric_update.exchange(false) && srt_sock != -1) { srt_metrics.update_srt_stats(srt_sock); } - while (buf_size > 0) { + while (buf_size > 0 && !should_quit.load()) { if (srt_sock == -1) { srt_sock = connect_to_srt(); if (srt_sock == -1) {