X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fvaapi_jpeg_decoder.cpp;h=cec70da4e6ce20d5df76fbb791e97fac442c03a6;hb=996c5ad2c506048694b32988f7e376a97924c3e9;hp=12db78b194a52075ca8fc578d5af6589698e2df7;hpb=6e116a6bbeb2c047a3bfb084395ec601ce211e6c;p=nageru diff --git a/futatabi/vaapi_jpeg_decoder.cpp b/futatabi/vaapi_jpeg_decoder.cpp index 12db78b..cec70da 100644 --- a/futatabi/vaapi_jpeg_decoder.cpp +++ b/futatabi/vaapi_jpeg_decoder.cpp @@ -2,7 +2,8 @@ #include "jpeg_destroyer.h" #include "jpeg_frame.h" -#include "memcpy_interleaved.h" +#include "jpeglib_error_wrapper.h" +#include "shared/memcpy_interleaved.h" #include #include @@ -329,13 +330,16 @@ private: shared_ptr decode_jpeg_vaapi(const string &jpeg) { jpeg_decompress_struct dinfo; - jpeg_error_mgr jerr; - dinfo.err = jpeg_std_error(&jerr); - jpeg_create_decompress(&dinfo); + JPEGWrapErrorManager error_mgr(&dinfo); + if (!error_mgr.run([&dinfo] { jpeg_create_decompress(&dinfo); })) { + return nullptr; + } JPEGDestroyer destroy_dinfo(&dinfo); jpeg_mem_src(&dinfo, reinterpret_cast(jpeg.data()), jpeg.size()); - jpeg_read_header(&dinfo, true); + if (!error_mgr.run([&dinfo] { jpeg_read_header(&dinfo, true); })) { + return nullptr; + } if (dinfo.num_components != 3) { fprintf(stderr, "Not a color JPEG. (%d components, Y=%dx%d, Cb=%dx%d, Cr=%dx%d)\n",