summaryrefslogtreecommitdiff
path: root/src/lib/j2k_encoder_fastvideo_backend.h
blob: d65e6e1b488deb168c9a707d8660448ac7594ed4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef DCPOMATIC_J2K_ENCODER_FASTVIDEO_BACKEND_H
#define DCPOMATIC_J2K_ENCODER_FASTVIDEO_BACKEND_H


#include "j2k_encoder_backend.h"
#include <dcp/util.h>
#include <fastvideo_encoder_j2k.h>
#include <fastvideo_sdk.h>
#include <boost/thread.hpp>
#include <boost/thread/barrier.hpp>


class J2KEncoderFastvideoBackend : public J2KEncoderBackend
{
public:
	J2KEncoderFastvideoBackend (boost::barrier& barrier);
	~J2KEncoderFastvideoBackend ();

	std::vector<dcp::Data> encode (std::vector<boost::shared_ptr<DCPVideo> > video);

	int quantity () const {
		return 4;
	}

private:
	void setup (dcp::Size size);

	boost::barrier& _barrier;
	bool _setup_done;
	fastImportFromHostHandle_t _adapter;
	fastDeviceSurfaceBufferHandle_t _src_buffer;
	fastEncoderJ2kHandle_t _encoder;
	uint16_t* _xyz_buffer;
	int _xyz_buffer_stride;
};

#endif