HWEncoder Class Reference
Representation of a GPU video encoder and its configuration. More...
#include <HWEncoder.hh>
Public Member Functions | |
HWEncoder (FlagSet< HWEncoderType > _allowedHwEncoders, const std::string &_hwAccelDevice, std::optional< bool > _useHwSurface) | |
Set up the HW encoder configurator. More... | |
virtual | ~HWEncoder () |
void | ConfigHWAccel (AVCodecContext *_encoderContext) |
Configure hardware acceleration. Should be called after the codec context parameters have been set, but before calling avcodec_open2(). More... | |
AVCodec * | FindEncoder (AVCodecID _codecId) |
HWEncoderType | GetEncoderType () const |
Returns the type of encoder that is currently being used. The value will be NONE until ConfigHWAccel() successfully finishes. More... | |
AVFrame * | GetFrameForEncoder (AVFrame *_inFrame) |
Get a pointer to the frame that contains the encoder input. This mainly serves for uploading the frame to GPU buffer if requested. More... | |
Detailed Description
Representation of a GPU video encoder and its configuration.
- Note
- This class is intentionally hidden as it provides highly customized behavior tailored just for the use with VideoEncoder.
Constructor & Destructor Documentation
◆ HWEncoder()
HWEncoder | ( | FlagSet< HWEncoderType > | _allowedHwEncoders, |
const std::string & | _hwAccelDevice, | ||
std::optional< bool > | _useHwSurface | ||
) |
Set up the HW encoder configurator.
- Parameters
-
[in] _allowedHwEncoders HW encoders to try. [in] _hwAccelDevice Optional name of the device that should be used. It doesn't affect unrelated HW encoders, but if the name is a match for an encoder, it will limit its search to only this device. However, if another encoder is tried earlier and succeeds, it will return with its default device. [in] _useHwSurface. If set, specifies whether the HW encoder should explicitly upload frames to the GPU, or whether that is left for the internals of the codec. If the value is unset, a HW-specific default is used that was experimentally found to be faster.
◆ ~HWEncoder()
|
virtual |
Member Function Documentation
◆ ConfigHWAccel()
void ConfigHWAccel | ( | AVCodecContext * | _encoderContext | ) |
Configure hardware acceleration. Should be called after the codec context parameters have been set, but before calling avcodec_open2().
- Parameters
-
[in] _encoderContext Context of the encoder for which hardware acceleration should be set up.
- Note
- If the configuration fails, the codec will be left configured for software encoding and an error will be written to gzerr describing what failed.
◆ FindEncoder()
AVCodec* FindEncoder | ( | AVCodecID | _codecId | ) |
Find a suitable encoder, preferring HW encoders.
- Parameters
-
[in] _codecId ID of the codec we seek the encoder for.
- Returns
- Name of the encoder to be used.
- Note
- The class expects that the returned encoder will be passed to ConfigHWAccel, and no other.
◆ GetEncoderType()
HWEncoderType GetEncoderType | ( | ) | const |
Returns the type of encoder that is currently being used. The value will be NONE until ConfigHWAccel() successfully finishes.
◆ GetFrameForEncoder()
AVFrame* GetFrameForEncoder | ( | AVFrame * | _inFrame | ) |
Get a pointer to the frame that contains the encoder input. This mainly serves for uploading the frame to GPU buffer if requested.
- Parameters
-
[in] _inFrame The input frame to be encoded (in CPU buffer).
- Returns
- Pointer to either this->avOutFrame or this->avOutHwFrame.
- Note
- If GPU buffers are used, this function uploads the frame from the CPU buffer to the GPU before returning.
The documentation for this class was generated from the following file: