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);
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) {