oa::VideoEncoder

hardware video encoder session — wraps VkVideoSessionKHR for encoding.

Public Methods

oa::Status oa::VideoEncoder::close()
oa::Status oa::VideoEncoder::encode(const oa::Texture & inRgba, EncodedVideoPacket & outFrame, oa::U64 inPts = 0ULL)
oa::Status oa::VideoEncoder::flush(oa::Vector<EncodedVideoPacket> & outFrames)
oa::U32 oa::VideoEncoder::getCodedHeight()
oa::U32 oa::VideoEncoder::getCodedWidth()
Engine * oa::VideoEncoder::getEngine()
const VideoEncodeProfile & oa::VideoEncoder::getProfile()

Static Public Methods

static oa::Result<VideoEncoder> oa::VideoEncoder::create(class Engine & inRt, const VideoEncodeProfile & inProfile)
static oa::Result<VideoEncodeCapabilities> oa::VideoEncoder::queryEncodeCapabilities(class Engine & inRt, VideoCodec inCodec)

Constructor & Destructor Documentation

oa::VideoEncoder::VideoEncoder()
No public source comment is attached to this declaration.
void oa::VideoEncoder::~VideoEncoder()
No public source comment is attached to this declaration.

Public Method Documentation

oa::Status oa::VideoEncoder::close()
Explicit completion and resource-release boundary. pending encoded output is discarded; call flush() first when the packets are required.

Returns

oa::Status

The declared return value.

oa::Status oa::VideoEncoder::encode( const oa::Texture & inRgba, EncodedVideoPacket & outFrame, oa::U64 inPts = 0ULL )
convert a buffer-backed RGBA texture and encode one frame through this session's owning engine. pending compute producers are completed before the encoder snapshots the source allocation.

Parameters

inRgba
const oa::Texture &

outFrame
EncodedVideoPacket &

inPts
oa::U64

Default: 0ULL

Returns

oa::Status

The declared return value.

oa::Status oa::VideoEncoder::flush( oa::Vector<EncodedVideoPacket> & outFrames )
flush encoder (get remaining buffered frames — B-frame reordering).

Parameters

outFrames
oa::Vector<EncodedVideoPacket> &

Returns

oa::Status

The declared return value.

oa::U32 oa::VideoEncoder::getCodedHeight()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

oa::U32 oa::VideoEncoder::getCodedWidth()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

Engine * oa::VideoEncoder::getEngine()
No public source comment is attached to this declaration.

Returns

Engine *

The declared return value.

const VideoEncodeProfile & oa::VideoEncoder::getProfile()
No public source comment is attached to this declaration.

Returns

const VideoEncodeProfile &

The declared return value.

static oa::Result<VideoEncoder> oa::VideoEncoder::create( class Engine & inRt, const VideoEncodeProfile & inProfile )
Create encoder for specific codec and settings.

Parameters

inRt
class Engine &

inProfile
const VideoEncodeProfile &

Returns

oa::Result<VideoEncoder>

The declared return value.

static oa::Result<VideoEncodeCapabilities> oa::VideoEncoder::queryEncodeCapabilities( class Engine & inRt, VideoCodec inCodec )
query what this device's encode side can do for inCodec. Returns a populated VideoEncodeCapabilities or an error if the codec is unsupported / disabled.

Parameters

inRt
class Engine &

inCodec
VideoCodec

Returns

oa::Result<VideoEncodeCapabilities>

The declared return value.