From 7187b59857f84a5a94441f0873130cf0801e8ea6 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 24 Jan 2025 13:28:22 +0100 Subject: wip --- src/j2k_transcode.h | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'src/j2k_transcode.h') diff --git a/src/j2k_transcode.h b/src/j2k_transcode.h index 1e149293..17613baf 100644 --- a/src/j2k_transcode.h +++ b/src/j2k_transcode.h @@ -32,22 +32,51 @@ */ +#ifndef LIBDCP_J2K_TRANSCODE_H +#define LIBDCP_J2K_TRANSCODE_H + + /** @file src/j2k_transcode.h * @brief Methods to encode and decode JPEG2000 */ #include "array_data.h" +#include "cancel.h" #include #include +typedef struct opj_cancel opj_cancel_t; + + namespace dcp { class OpenJPEGImage; +class OpenJPEGCancel : public Cancel +{ +public: + OpenJPEGCancel(); + ~OpenJPEGCancel(); + + OpenJPEGCancel(OpenJPEGCancel const&) = delete; + OpenJPEGCancel& operator=(OpenJPEGCancel const&) = delete; + + void cancel() override; + void reset() override; + + opj_cancel_t* opj_cancel() { + return _cancel; + } + +private: + opj_cancel_t* _cancel; +}; + + /** Decompress a JPEG2000 image to a bitmap * @param data JPEG2000 data * @param size Size of data in bytes @@ -57,10 +86,10 @@ class OpenJPEGImage; * This is useful for scaling 4K DCP images down to 2K. * @return OpenJPEGImage */ -extern std::shared_ptr decompress_j2k (uint8_t const * data, int64_t size, int reduce); +extern std::shared_ptr decompress_j2k(uint8_t const * data, int64_t size, int reduce, std::shared_ptr cancel = {}); -extern std::shared_ptr decompress_j2k (Data const& data, int reduce); -extern std::shared_ptr decompress_j2k (std::shared_ptr data, int reduce); +extern std::shared_ptr decompress_j2k (Data const& data, int reduce, std::shared_ptr cancel = {}); +extern std::shared_ptr decompress_j2k (std::shared_ptr data, int reduce, std::shared_ptr cancel = {}); /** @xyz Picture to compress. Parts of xyz's data WILL BE OVERWRITTEN by libopenjpeg so xyz cannot be re-used * after this call; see opj_j2k_encode where if l_reuse_data is false it will set l_tilec->data = l_img_comp->data. @@ -69,3 +98,7 @@ extern ArrayData compress_j2k (std::shared_ptr, int bandwid } + + +#endif + -- cgit v1.2.3