Merge remote-tracking branch 'origin/main' into v2.17.x
[dcpomatic.git] / src / lib / j2k_sync_encoder_thread.h
1 #ifndef DCPOMATIC_J2K_SYNC_ENCODER_THREAD_H
2 #define DCPOMATIC_J2K_SYNC_ENCODER_THREAD_H
3
4
5 #include "exception_store.h"
6 #include "j2k_encoder_thread.h"
7 #include <dcp/array_data.h>
8 #include <boost/thread.hpp>
9
10
11 class DCPVideo;
12 class J2KEncoder;
13
14
15 class J2KSyncEncoderThread : public J2KEncoderThread, public ExceptionStore
16 {
17 public:
18         J2KSyncEncoderThread(J2KEncoder& encoder);
19
20         J2KSyncEncoderThread(J2KSyncEncoderThread const&) = delete;
21         J2KSyncEncoderThread& operator=(J2KSyncEncoderThread const&) = delete;
22
23         virtual ~J2KSyncEncoderThread() {}
24
25         void run() override;
26
27         virtual void log_thread_start() const = 0;
28         virtual std::shared_ptr<dcp::ArrayData> encode(DCPVideo const& frame) = 0;
29 };
30
31
32 #endif