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) {
std::atomic<int> quicksync_encoders_in_shutdown{0};
std::atomic<int> overriding_bitrate{0};
+ std::atomic<bool> should_quit{false};
// Encoders that are shutdown, but need to call release_gl_resources()
// (or be deleted) from some thread with an OpenGL context.