diff options
Diffstat (limited to 'src/j2k_transcode.h')
| -rw-r--r-- | src/j2k_transcode.h | 39 |
1 files changed, 36 insertions, 3 deletions
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 <memory> #include <stdint.h> +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<OpenJPEGImage> decompress_j2k (uint8_t const * data, int64_t size, int reduce); +extern std::shared_ptr<OpenJPEGImage> decompress_j2k(uint8_t const * data, int64_t size, int reduce, std::shared_ptr<OpenJPEGCancel> cancel = {}); -extern std::shared_ptr<OpenJPEGImage> decompress_j2k (Data const& data, int reduce); -extern std::shared_ptr<OpenJPEGImage> decompress_j2k (std::shared_ptr<const Data> data, int reduce); +extern std::shared_ptr<OpenJPEGImage> decompress_j2k (Data const& data, int reduce, std::shared_ptr<OpenJPEGCancel> cancel = {}); +extern std::shared_ptr<OpenJPEGImage> decompress_j2k (std::shared_ptr<const Data> data, int reduce, std::shared_ptr<OpenJPEGCancel> 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<const OpenJPEGImage>, int bandwid } + + +#endif + |
