diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-01-24 13:28:22 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-01-24 13:28:22 +0100 |
| commit | 7187b59857f84a5a94441f0873130cf0801e8ea6 (patch) | |
| tree | 8ba431dbf60d2b6458de051d19be084242f1e675 /src/j2k_transcode.h | |
| parent | 744eae9a14f834088289d10d7158ad89857565ad (diff) | |
wipcancel
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 + |
