VideoEncoder.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 
5 // shared
7 
8 namespace dai {
9 namespace node {
10 
14 class VideoEncoder : public NodeCRTP<Node, VideoEncoder, VideoEncoderProperties> {
15  public:
16  constexpr static const char* NAME = "VideoEncoder";
17 
18  VideoEncoder(const std::shared_ptr<PipelineImpl>& par, int64_t nodeId);
19  VideoEncoder(const std::shared_ptr<PipelineImpl>& par, int64_t nodeId, std::unique_ptr<Properties> props);
20 
25  Input input{*this, "in", Input::Type::SReceiver, true, 4, true, {{DatatypeEnum::ImgFrame, true}}};
26 
30  Output bitstream{*this, "bitstream", Output::Type::MSender, {{DatatypeEnum::ImgFrame, false}}};
31 
35  Output out{*this, "out", Output::Type::MSender, {{DatatypeEnum::EncodedFrame, false}}};
36 
37  // Sets default options for a specified size and profile
43  void setDefaultProfilePreset(float fps, Properties::Profile profile);
44 
52  [[deprecated("Input width/height no longer needed, automatically determined from first frame")]] void setDefaultProfilePreset(int width,
53  int height,
54  float fps,
55  Properties::Profile profile);
56 
63  [[deprecated("Input size no longer needed, automatically determined from first frame")]] void setDefaultProfilePreset(std::tuple<int, int> size,
64  float fps,
65  Properties::Profile profile);
66 
67  // node properties
72  void setNumFramesPool(int frames);
73 
78  int getNumFramesPool() const;
79 
80  // encoder properties
84  void setProfile(Properties::Profile profile);
86  [[deprecated("Input size no longer needed, automatically determined from first frame")]] void setProfile(std::tuple<int, int> size,
87  Properties::Profile profile);
89  [[deprecated("Input width/height no longer needed, automatically determined from first frame")]] void setProfile(int width,
90  int height,
91  Properties::Profile profile);
93  void setBitrate(int bitrate);
95  void setBitrateKbps(int bitrateKbps);
96 
109  void setKeyframeFrequency(int freq);
110 
112  void setNumBFrames(int numBFrames);
113 
118  void setQuality(int quality);
119 
124  void setLossless(bool lossless);
125 
130  void setFrameRate(float frameRate);
131 
135  void setMaxOutputFrameSize(int maxFrameSize);
136 
142  int getBitrate() const;
144  int getBitrateKbps() const;
146  int getKeyframeFrequency() const;
147  // int getMaxBitrate() const;
149  int getNumBFrames() const;
151  int getQuality() const;
153  [[deprecated("Input size no longer available, it's determined when first frame arrives")]] std::tuple<int, int> getSize() const;
155  [[deprecated("Input size no longer available, it's determined when first frame arrives")]] int getWidth() const;
157  [[deprecated("Input size no longer available, it's determined when first frame arrives")]] int getHeight() const;
159  float getFrameRate() const;
161  bool getLossless() const;
162  int getMaxOutputFrameSize() const;
163 };
164 
165 } // namespace node
166 } // namespace dai
dai::node::VideoEncoder::bitstream
Output bitstream
Definition: VideoEncoder.hpp:30
dai::node::VideoEncoder::setQuality
void setQuality(int quality)
Definition: VideoEncoder.cpp:69
fps
static constexpr int fps
Definition: rgb_depth_aligned.cpp:12
dai::node::VideoEncoder::setBitrateKbps
void setBitrateKbps(int bitrateKbps)
Set output bitrate in kbps, for CBR rate control mode. 0 for auto (based on frame size and FPS)....
Definition: VideoEncoder.cpp:57
dai::node::VideoEncoder::setBitrate
void setBitrate(int bitrate)
Set output bitrate in bps, for CBR rate control mode. 0 for auto (based on frame size and FPS)....
Definition: VideoEncoder.cpp:53
dai::node::VideoEncoder::setNumBFrames
void setNumBFrames(int numBFrames)
Set number of B frames to be inserted. Applicable only to H264 and H265 profiles.
Definition: VideoEncoder.cpp:65
dai::node::VideoEncoder::getProfile
Properties::Profile getProfile() const
Get profile.
Definition: VideoEncoder.cpp:89
VideoEncoderProperties.hpp
dai::Node::Output
Definition: Node.hpp:67
dai::VideoEncoderProperties::Profile
Profile
Definition: VideoEncoderProperties.hpp:21
dai::NodeCRTP
Definition: Node.hpp:342
dai::node::VideoEncoder::getSize
std::tuple< int, int > getSize() const
Get input size.
Definition: VideoEncoder.cpp:117
dai::DatatypeEnum::EncodedFrame
@ EncodedFrame
dai::node::VideoEncoder::NAME
constexpr static const char * NAME
Definition: VideoEncoder.hpp:16
dai::node::VideoEncoder::setProfile
void setProfile(Properties::Profile profile)
Set encoding profile.
DAI_SPAN_NAMESPACE_NAME::detail::size
constexpr auto size(const C &c) -> decltype(c.size())
Definition: span.hpp:167
dai::node::VideoEncoder::setDefaultProfilePreset
void setDefaultProfilePreset(float fps, Properties::Profile profile)
dai::node::VideoEncoder::out
Output out
Definition: VideoEncoder.hpp:35
dai::node::VideoEncoder::setLossless
void setLossless(bool lossless)
Definition: VideoEncoder.cpp:73
dai::node::VideoEncoder::getMaxOutputFrameSize
int getMaxOutputFrameSize() const
Definition: VideoEncoder.cpp:180
dai::node::VideoEncoder::setKeyframeFrequency
void setKeyframeFrequency(int freq)
Definition: VideoEncoder.cpp:61
dai::node::VideoEncoder::getRateControlMode
Properties::RateControlMode getRateControlMode() const
Get rate control mode.
Definition: VideoEncoder.cpp:85
dai::VideoEncoderProperties::RateControlMode
RateControlMode
Definition: VideoEncoderProperties.hpp:16
dai::node::VideoEncoder::getNumBFrames
int getNumBFrames() const
Get number of B frames.
Definition: VideoEncoder.cpp:109
dai::node::VideoEncoder::getHeight
int getHeight() const
Get input height.
Definition: VideoEncoder.cpp:127
dai::node::VideoEncoder::getNumFramesPool
int getNumFramesPool() const
Definition: VideoEncoder.cpp:27
dai::node::VideoEncoder::getBitrateKbps
int getBitrateKbps() const
Get bitrate in kbps.
Definition: VideoEncoder.cpp:97
dai::node::VideoEncoder::setMaxOutputFrameSize
void setMaxOutputFrameSize(int maxFrameSize)
Definition: VideoEncoder.cpp:81
dai::node::VideoEncoder::VideoEncoder
VideoEncoder(const std::shared_ptr< PipelineImpl > &par, int64_t nodeId)
Definition: VideoEncoder.cpp:13
dai::node::VideoEncoder::getLossless
bool getLossless() const
Get lossless mode. Applies only when using [M]JPEG profile.
Definition: VideoEncoder.cpp:176
dai::node::VideoEncoder::getWidth
int getWidth() const
Get input width.
Definition: VideoEncoder.cpp:122
dai::node::VideoEncoder::getKeyframeFrequency
int getKeyframeFrequency() const
Get keyframe frequency.
Definition: VideoEncoder.cpp:101
dai::node::VideoEncoder::setFrameRate
void setFrameRate(float frameRate)
Definition: VideoEncoder.cpp:77
dai::node::VideoEncoder::setNumFramesPool
void setNumFramesPool(int frames)
Definition: VideoEncoder.cpp:21
dai::node::VideoEncoder
VideoEncoder node. Encodes frames into MJPEG, H264 or H265.
Definition: VideoEncoder.hpp:14
dai::node::VideoEncoder::getBitrate
int getBitrate() const
Get bitrate in bps.
Definition: VideoEncoder.cpp:93
dai::node::VideoEncoder::input
Input input
Definition: VideoEncoder.hpp:25
dai::DatatypeEnum::ImgFrame
@ ImgFrame
dai::node::VideoEncoder::setRateControlMode
void setRateControlMode(Properties::RateControlMode mode)
Set rate control mode Applicable only to H264 and H265 profiles.
Definition: VideoEncoder.cpp:32
dai
Definition: CameraExposureOffset.hpp:6
Node.hpp
dai::node::VideoEncoder::getQuality
int getQuality() const
Get quality.
Definition: VideoEncoder.cpp:113
dai::node::VideoEncoder::getFrameRate
float getFrameRate() const
Get frame rate.
Definition: VideoEncoder.cpp:132


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19