diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-05-23 00:41:35 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-05-23 16:55:28 +0200 |
| commit | 7ace2ca4cd301b4c69671a6983804c6a13ec72a0 (patch) | |
| tree | 84c67cf1576ba63263469dd46d95e446cba0341b /src/lib/cuda_j2k_frame_encoder.h | |
| parent | e7503b1a3c93121c27cec2804376f8621d793f6a (diff) | |
fixup! wip: Add CUDA J2K frame encoder using libjpeg2k.
Diffstat (limited to 'src/lib/cuda_j2k_frame_encoder.h')
| -rw-r--r-- | src/lib/cuda_j2k_frame_encoder.h | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/lib/cuda_j2k_frame_encoder.h b/src/lib/cuda_j2k_frame_encoder.h index 46ac64607..28e8a3c76 100644 --- a/src/lib/cuda_j2k_frame_encoder.h +++ b/src/lib/cuda_j2k_frame_encoder.h @@ -24,6 +24,7 @@ #include "j2k_frame_encoder.h" +#include "types.h" #include <dcp/types.h> #include <nvjpeg2k.h> #include <vector> @@ -33,24 +34,39 @@ class CUDAJ2KFrameEncoder : public J2KFrameEncoder { public: CUDAJ2KFrameEncoder(); - ~CUDAJ2KFrameEncoder(); - boost::optional<dcp::ArrayData> encode(DCPVideo const &) override; + std::vector<dcp::ArrayData> encode(DCPVideo const &) override; + std::vector<dcp::ArrayData> flush() override; void log_thread_start() override; private: - void allocate(dcp::Size size); - void free(); - nvjpeg2kEncoder_t _encoder_handle; nvjpeg2kEncodeState_t _encoder_state; nvjpeg2kEncodeParams_t _encoder_params; - uint8_t* _pixel_data_h[3]; - uint8_t* _pixel_data_d[3]; - size_t _pitch_in_bytes[3]; - nvjpeg2kImageComponentInfo_t _image_component_info[3]; - dcp::Size _allocated_size; + class Frame + { + public: + Frame(DCPVideo const& vf); + Frame(Frame const& other) = delete; + Frame(Frame&& other); + ~Frame(); + + Frame& operator=(Frame const& other) = delete; + + nvjpeg2kImage_t const* const device_image() const { + return &_device_image; + } + + private: + uint8_t* _pixel_data_d[3]; + size_t _pitch_in_bytes[3]; + nvjpeg2kImage_t _device_image; + }; + + std::vector<Frame> _batch; + boost::optional<dcp::Size> _size; + boost::optional<Resolution> _resolution; }; |
