}
JPEGDestroyer destroy_dinfo(&dinfo);
+ jpeg_save_markers(&dinfo, JPEG_APP0 + 1, 0xFFFF);
+
if (!error_mgr.run([&dinfo, &jpeg] {
jpeg_mem_src(&dinfo, reinterpret_cast<const unsigned char *>(jpeg.data()), jpeg.size());
jpeg_read_header(&dinfo, true);
return get_black_frame();
}
- jpeg_save_markers(&dinfo, JPEG_APP0 + 1, 0xFFFF);
-
if (dinfo.num_components != 3) {
fprintf(stderr, "Not a color JPEG. (%d components, Y=%dx%d, Cb=%dx%d, Cr=%dx%d)\n",
dinfo.num_components,
glFlushMappedNamedBufferRange(pbo.pbo, 0, dinfo.image_width * dinfo.image_height + chroma_width * chroma_height * 2);
glMemoryBarrier(GL_PIXEL_BUFFER_BARRIER_BIT);
pbo.upload_done = RefCountedGLsync(GL_SYNC_GPU_COMMANDS_COMPLETE, /*flags=*/0);
+ glFlush();
frame->uploaded_ui_thread = pbo.upload_done;
frame->uploaded_interpolation = pbo.upload_done;
global_pbo_pool->release_pbo(move(pbo));
lock_guard<mutex> lock(cache_mu);
PendingDecode decode;
decode.frame = std::move(frame);
+ decode.fade_alpha = 0.0f;
pending_decodes.push_back(decode);
any_pending_decodes.notify_all();
}