libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
cea708encoder.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <cstdint>
15#include <promeki/cea708cdp.h>
16#include <promeki/enums.h>
17#include <promeki/error.h>
18#include <promeki/framenumber.h>
19#include <promeki/framerate.h>
20#include <promeki/namespace.h>
21#include <promeki/sharedptr.h>
22#include <promeki/subtitle.h>
23
24PROMEKI_NAMESPACE_BEGIN
25
26struct Cea708EncoderImpl; // Pimpl — defined in cea708encoder.cpp.
27
106class Cea708Encoder : public CaptionEncoder {
107 public:
109 struct Config {
111 FrameRate frameRate;
114 uint8_t serviceNumber = 1;
120 int windowCols = 32;
121 };
122
123 Cea708Encoder();
124 explicit Cea708Encoder(Config cfg);
125 ~Cea708Encoder() override;
126
128 const Config &config() const;
129
131 CaptionCodec codec() const override { return CaptionCodec(CaptionCodec::Cea708); }
132
134 FrameRate frameRate() const override;
135
147 Error setSubtitles(const SubtitleList &subs) override;
148
150 void reset() override;
151
160 Cea708Cdp::CcDataList nextFrame(FrameNumber frame) const override;
161
162 private:
163 SharedPtr<Cea708EncoderImpl> _d;
164};
165
166PROMEKI_NAMESPACE_END
167
168#endif // PROMEKI_ENABLE_PROAV