]> git.sesse.net Git - nageru/commitdiff
Make it possible to quit while SRT is not connected, although slowly.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 17 Sep 2023 14:33:59 +0000 (16:33 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 17 Sep 2023 14:33:59 +0000 (16:33 +0200)
nageru/video_encoder.cpp
nageru/video_encoder.h

index 4a84ddce1efe786a0f401b2d4e700f358c5482d5..ec96acc58d9c82e24bbb33338bb0dccdb4c2de43 100644 (file)
@@ -114,6 +114,7 @@ VideoEncoder::VideoEncoder(ResourcePool *resource_pool, QSurface *surface, const
 
 VideoEncoder::~VideoEncoder()
 {
+       should_quit = true;
        quicksync_encoder->shutdown();
        x264_encoder.reset(nullptr);
        x264_disk_encoder.reset(nullptr);
@@ -405,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) {
index 91d2c756471a90eac5dbdc3b6d3e60982580fc59..1c2a9491148c50d1deeed8dacbe84b50b43fe627 100644 (file)
@@ -120,6 +120,7 @@ private:
 
        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.