]> git.sesse.net Git - nageru/blobdiff - nageru/mjpeg_encoder.cpp
Fix a hang on exit when doing MJPEG encoding with VA-API.
[nageru] / nageru / mjpeg_encoder.cpp
index 8192be4cfa8e62e8fa6430ad211d740baaba393c..3f98cd0662a5e5be7eaec3240b6f267b3e8635e5 100644 (file)
@@ -208,6 +208,7 @@ void MJPEGEncoder::stop()
        running = false;
        should_quit = true;
        any_frames_to_be_encoded.notify_all();
+       any_frames_encoding.notify_all();
        encoder_thread.join();
        if (va_dpy != nullptr) {
                va_receiver_thread.join();
@@ -336,7 +337,8 @@ void MJPEGEncoder::write_mjpeg_packet(int64_t pts, unsigned card_index, const ve
        pkt.size = jpeg.size();
        pkt.stream_index = card_index;
        pkt.flags = AV_PKT_FLAG_KEY;
-       pkt.pts = pkt.dts = pts;
+       AVRational time_base = avctx->streams[pkt.stream_index]->time_base;
+       pkt.pts = pkt.dts = av_rescale_q(pts, AVRational{ 1, TIMEBASE }, time_base);
 
        if (av_write_frame(avctx.get(), &pkt) < 0) {
                fprintf(stderr, "av_write_frame() failed\n");