libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
nvencvideoencoder.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NVENC
13#include <promeki/namespace.h>
15#include <promeki/frame.h>
16#include <promeki/uniqueptr.h>
17
18#if PROMEKI_ENABLE_PROAV
19PROMEKI_NAMESPACE_BEGIN
20
77class NvencVideoEncoder : public VideoEncoder {
78 public:
80 enum Codec {
81 Codec_H264,
82 Codec_HEVC,
83 Codec_AV1
84 };
85
90 explicit NvencVideoEncoder(Codec codec);
91
93 ~NvencVideoEncoder() override;
94
102 static List<int> supportedInputList();
103
104 void onConfigure(const MediaConfig &config) override;
105 Error submitFrame(const Frame &frame) override;
106 Frame receiveFrame() override;
107 Error flush() override;
108 Error reset() override;
109 void requestKeyframe() override;
110
111 private:
112 class Impl;
113 using ImplPtr = UniquePtr<Impl>;
114 ImplPtr _impl;
115 Codec _codec;
116 bool _requestKey = false;
117};
118
119PROMEKI_NAMESPACE_END
120
121#endif // PROMEKI_ENABLE_NVENC
122#endif // PROMEKI_ENABLE_PROAV