X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fmjpeg_encoder.cpp;h=07deae02289a3c321a6a4c58c036a8c96109ccb8;hb=271ddbb0c7e84560e73e89b1a125576477f95380;hp=614cb5cc8836a80b3eb4831d91a1465c8cd4a73e;hpb=012f5333c8958ed3da410ef53493c347028b44c4;p=nageru diff --git a/nageru/mjpeg_encoder.cpp b/nageru/mjpeg_encoder.cpp index 614cb5c..07deae0 100644 --- a/nageru/mjpeg_encoder.cpp +++ b/nageru/mjpeg_encoder.cpp @@ -177,6 +177,11 @@ MJPEGEncoder::MJPEGEncoder(HTTPD *httpd, const string &va_display) running = true; } +MJPEGEncoder::~MJPEGEncoder() +{ + av_free(avctx->pb->buffer); +} + void MJPEGEncoder::stop() { if (!running) { @@ -268,7 +273,7 @@ void MJPEGEncoder::encoder_thread_func() unique_lock lock(mu); for (;;) { any_frames_to_be_encoded.wait(lock, [this] { return !frames_to_be_encoded.empty() || should_quit; }); - if (should_quit) return; + if (should_quit) break; QueuedFrame qf = move(frames_to_be_encoded.front()); frames_to_be_encoded.pop(); @@ -288,6 +293,11 @@ void MJPEGEncoder::encoder_thread_func() exit(1); } } + + free(tmp_y); + free(tmp_cbcr); + free(tmp_cb); + free(tmp_cr); } class VABufferDestroyer {