--- /dev/null
+#ifndef _JPEG_DESTROYER_H
+#define _JPEG_DESTROYER_H 1
+
+#include <jpeglib.h>
+
+class JPEGDestroyer {
+public:
+ JPEGDestroyer(jpeg_decompress_struct *dinfo)
+ : dinfo(dinfo) {}
+
+ ~JPEGDestroyer() {
+ jpeg_destroy_decompress(dinfo);
+ }
+
+private:
+ jpeg_decompress_struct *dinfo;
+};
+
+#endif // !defined(_JPEG_DESTROYER_H)
#include "jpeg_frame_view.h"
#include "defs.h"
+#include "jpeg_destroyer.h"
#include "post_to_main_thread.h"
#include "video_stream.h"
#include "ycbcr_converter.h"
jpeg_error_mgr jerr;
dinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&dinfo);
+ JPEGDestroyer destroy_dinfo(&dinfo);
FILE *fp = fopen(filename.c_str(), "rb");
if (fp == nullptr) {
}
(void)jpeg_finish_decompress(&dinfo);
- jpeg_destroy_decompress(&dinfo);
fclose(fp);
return frame;
#include "vaapi_jpeg_decoder.h"
+#include "jpeg_destroyer.h"
#include "jpeg_frame.h"
#include "memcpy_interleaved.h"
jpeg_error_mgr jerr;
dinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&dinfo);
+ JPEGDestroyer destroy_dinfo(&dinfo);
FILE *fp = fopen(filename.c_str(), "rb");
if (fp == nullptr) {