oa::VideoDecoder

hardware video decoder session. Wraps VkVideoSessionKHR + DPB management.

Public Methods

oa::Result<VideoFrame> oa::VideoDecoder::allocateRgbaFrame(oa::U32 inWidth, oa::U32 inHeight)
oa::Status oa::VideoDecoder::close()
oa::Result<VideoFrame> oa::VideoDecoder::convert(const VideoFrame & inFrame, const VideoConversionOptions & inOptions = {})
oa::Result<Matrix> oa::VideoDecoder::convertFrameToBf16(const VideoFrame & inFrame, bool inNormalizeImageNet = true)
oa::Status oa::VideoDecoder::convertInto(const VideoFrame & inNv12Frame, const VideoConversionOptions & inOptions, VideoFrame & inOutRgbTarget)
oa::Result<oa::Event> oa::VideoDecoder::convertIntoAsync(const VideoFrame & inNv12Frame, const VideoConversionOptions & inOptions, const VideoFrame & inRgbTarget)
oa::Result<VideoFrame> oa::VideoDecoder::decode(const oa::Span<const oa::U8> & inAccessUnit, const VideoConversionOptions & inOptions, oa::U64 inPts = 0ULL)
oa::Result<VideoFrame> oa::VideoDecoder::decode(const oa::Span<const oa::U8> & inAccessUnit, oa::U64 inPts = 0ULL)
oa::Status oa::VideoDecoder::decode(const oa::Span<const oa::U8> & inAccessUnit, const VideoConversionOptions & inOptions, VideoFrame & outFrame, oa::U64 inPts = 0ULL)
oa::Result<Matrix> oa::VideoDecoder::decodeFrameToBf16(const oa::Span<const oa::U8> & inBitstream, bool inNormalizeImageNet = true)
oa::Result<Matrix> oa::VideoDecoder::decodeResizeNormalize(const oa::Span<const oa::U8> & inAccessUnit, oa::U32 inWidth = 224U, oa::U32 inHeight = 224U)
oa::Result<Matrix> oa::VideoDecoder::decodeResizeNormalize(const oa::Span<const oa::U8> & inAccessUnit, oa::U32 inWidth, oa::U32 inHeight, const NormalizationParams & inNorm)
oa::Status oa::VideoDecoder::flush()
oa::U32 oa::VideoDecoder::getCodedHeight()
oa::U32 oa::VideoDecoder::getCodedWidth()
oa::U64 oa::VideoDecoder::getCurrentFrameNumber()
oa::U32 oa::VideoDecoder::getDpbInUseCount()
oa::U32 oa::VideoDecoder::getDpbReferenceCount()
oa::U32 oa::VideoDecoder::getDpbSlotCapacity()
oa::U32 oa::VideoDecoder::getDpbViewCount()
class Engine * oa::VideoDecoder::getEngine()
oa::U32 oa::VideoDecoder::getOutputFrameCapacity()
oa::U32 oa::VideoDecoder::getOutputViewCount()
VideoResourcePath oa::VideoDecoder::getResourcePath()
oa::U32 oa::VideoDecoder::getSessionParameterUpdateCount()
bool oa::VideoDecoder::hasSessionParameters()
bool oa::VideoDecoder::isInitialized()
oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackLuma(const VideoFrame & inFrame)
oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackNv12(const VideoFrame & inFrame)
oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackRgba(const VideoFrame & inFrame)
oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackYuv420(const VideoFrame & inFrame)
oa::Status oa::VideoDecoder::waitForCompletion(oa::U64 inTimeoutNs = UINT64_MAX)

Static Public Methods

static oa::Result<VideoDecoder> oa::VideoDecoder::create(class Engine & inRt, const VideoProfile & inProfile)
static oa::Result<VideoDecodeCapabilities> oa::VideoDecoder::queryDecodeCapabilities(Engine & inRt, VideoCodec inCodec)
static oa::Result<VideoDecodeCapabilities> oa::VideoDecoder::queryDecodeCapabilities(Engine & inRt, const VideoProfile & inProfile)

Constructor & Destructor Documentation

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

Public Method Documentation

oa::Result<VideoFrame> oa::VideoDecoder::allocateRgbaFrame( oa::U32 inWidth, oa::U32 inHeight )
No public source comment is attached to this declaration.

Parameters

inWidth
oa::U32

inHeight
oa::U32

Returns

oa::Result<VideoFrame>

The declared return value.

oa::Status oa::VideoDecoder::close()
Explicit completion and resource-release boundary.

Returns

oa::Status

The declared return value.

oa::Result<VideoFrame> oa::VideoDecoder::convert( const VideoFrame & inFrame, const VideoConversionOptions & inOptions = {} )
Decoder-owned color conversion, explicit targets, host observations, and ML bridges.

Parameters

inFrame
const VideoFrame &

inOptions
const VideoConversionOptions &

Default: {}

Returns

oa::Result<VideoFrame>

The declared return value.

oa::Result<Matrix> oa::VideoDecoder::convertFrameToBf16( const VideoFrame & inFrame, bool inNormalizeImageNet = true )
No public source comment is attached to this declaration.

Parameters

inFrame
const VideoFrame &

inNormalizeImageNet
bool

Default: true

Returns

oa::Result<Matrix>

The declared return value.

oa::Status oa::VideoDecoder::convertInto( const VideoFrame & inNv12Frame, const VideoConversionOptions & inOptions, VideoFrame & inOutRgbTarget )
No public source comment is attached to this declaration.

Parameters

inNv12Frame
const VideoFrame &

inOptions
const VideoConversionOptions &

inOutRgbTarget
VideoFrame &

Returns

oa::Status

The declared return value.

oa::Result<oa::Event> oa::VideoDecoder::convertIntoAsync( const VideoFrame & inNv12Frame, const VideoConversionOptions & inOptions, const VideoFrame & inRgbTarget )
No public source comment is attached to this declaration.

Parameters

inNv12Frame
const VideoFrame &

inOptions
const VideoConversionOptions &

inRgbTarget
const VideoFrame &

Returns

oa::Result<oa::Event>

The declared return value.

oa::Result<VideoFrame> oa::VideoDecoder::decode( const oa::Span<const oa::U8> & inAccessUnit, const VideoConversionOptions & inOptions, oa::U64 inPts = 0ULL )
No public source comment is attached to this declaration.

Parameters

inAccessUnit
const oa::Span<const oa::U8> &

inOptions
const VideoConversionOptions &

inPts
oa::U64

Default: 0ULL

Returns

oa::Result<VideoFrame>

The declared return value.

oa::Result<VideoFrame> oa::VideoDecoder::decode( const oa::Span<const oa::U8> & inAccessUnit, oa::U64 inPts = 0ULL )
Decode one compressed access unit through this session's owning engine.

Parameters

inAccessUnit
const oa::Span<const oa::U8> &

inPts
oa::U64

Default: 0ULL

Returns

oa::Result<VideoFrame>

The declared return value.

oa::Status oa::VideoDecoder::decode( const oa::Span<const oa::U8> & inAccessUnit, const VideoConversionOptions & inOptions, VideoFrame & outFrame, oa::U64 inPts = 0ULL )
No public source comment is attached to this declaration.

Parameters

inAccessUnit
const oa::Span<const oa::U8> &

inOptions
const VideoConversionOptions &

outFrame
VideoFrame &

inPts
oa::U64

Default: 0ULL

Returns

oa::Status

The declared return value.

oa::Result<Matrix> oa::VideoDecoder::decodeFrameToBf16( const oa::Span<const oa::U8> & inBitstream, bool inNormalizeImageNet = true )
No public source comment is attached to this declaration.

Parameters

inBitstream
const oa::Span<const oa::U8> &

inNormalizeImageNet
bool

Default: true

Returns

oa::Result<Matrix>

The declared return value.

oa::Result<Matrix> oa::VideoDecoder::decodeResizeNormalize( const oa::Span<const oa::U8> & inAccessUnit, oa::U32 inWidth = 224U, oa::U32 inHeight = 224U )
No public source comment is attached to this declaration.

Parameters

inAccessUnit
const oa::Span<const oa::U8> &

inWidth
oa::U32

Default: 224U

inHeight
oa::U32

Default: 224U

Returns

oa::Result<Matrix>

The declared return value.

oa::Result<Matrix> oa::VideoDecoder::decodeResizeNormalize( const oa::Span<const oa::U8> & inAccessUnit, oa::U32 inWidth, oa::U32 inHeight, const NormalizationParams & inNorm )
No public source comment is attached to this declaration.

Parameters

inAccessUnit
const oa::Span<const oa::U8> &

inWidth
oa::U32

inHeight
oa::U32

inNorm
const NormalizationParams &

Returns

oa::Result<Matrix>

The declared return value.

oa::Status oa::VideoDecoder::flush()
flush decoder state (call at stream end or seek).

Returns

oa::Status

The declared return value.

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

Returns

oa::U32

The declared return value.

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

Returns

oa::U32

The declared return value.

oa::U64 oa::VideoDecoder::getCurrentFrameNumber()
No public source comment is attached to this declaration.

Returns

oa::U64

The declared return value.

oa::U32 oa::VideoDecoder::getDpbInUseCount()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

oa::U32 oa::VideoDecoder::getDpbReferenceCount()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

oa::U32 oa::VideoDecoder::getDpbSlotCapacity()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

oa::U32 oa::VideoDecoder::getDpbViewCount()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

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

Returns

class Engine *

The declared return value.

oa::U32 oa::VideoDecoder::getOutputFrameCapacity()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

oa::U32 oa::VideoDecoder::getOutputViewCount()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

VideoResourcePath oa::VideoDecoder::getResourcePath()
No public source comment is attached to this declaration.

Returns

VideoResourcePath

The declared return value.

oa::U32 oa::VideoDecoder::getSessionParameterUpdateCount()
No public source comment is attached to this declaration.

Returns

oa::U32

The declared return value.

bool oa::VideoDecoder::hasSessionParameters()
No public source comment is attached to this declaration.

Returns

bool

The declared return value.

bool oa::VideoDecoder::isInitialized()
No public source comment is attached to this declaration.

Returns

bool

The declared return value.

oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackLuma( const VideoFrame & inFrame )
No public source comment is attached to this declaration.

Parameters

inFrame
const VideoFrame &

Returns

oa::Result<oa::Vector<oa::U8>>

The declared return value.

oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackNv12( const VideoFrame & inFrame )
No public source comment is attached to this declaration.

Parameters

inFrame
const VideoFrame &

Returns

oa::Result<oa::Vector<oa::U8>>

The declared return value.

oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackRgba( const VideoFrame & inFrame )
No public source comment is attached to this declaration.

Parameters

inFrame
const VideoFrame &

Returns

oa::Result<oa::Vector<oa::U8>>

The declared return value.

oa::Result<oa::Vector<oa::U8>> oa::VideoDecoder::readbackYuv420( const VideoFrame & inFrame )
Returns tightly packed two-plane 4:2:0 bytes in the frame's native storage representation: NV12 bytes or little-endian P010 16-bit words.

Parameters

inFrame
const VideoFrame &

Returns

oa::Result<oa::Vector<oa::U8>>

The declared return value.

oa::Status oa::VideoDecoder::waitForCompletion( oa::U64 inTimeoutNs = UINT64_MAX )
wait for the last GPU submission on this decoder to complete.

Parameters

inTimeoutNs
oa::U64

Default: UINT64_MAX

Returns

oa::Status

The declared return value.

static oa::Result<VideoDecoder> oa::VideoDecoder::create( class Engine & inRt, const VideoProfile & inProfile )
Create decoder for specific codec and resolution.

Parameters

inRt
class Engine &

inProfile
const VideoProfile &

Returns

oa::Result<VideoDecoder>

The declared return value.

static oa::Result<VideoDecodeCapabilities> oa::VideoDecoder::queryDecodeCapabilities( Engine & inRt, VideoCodec inCodec )
No public source comment is attached to this declaration.

Parameters

inRt
Engine &

inCodec
VideoCodec

Returns

oa::Result<VideoDecodeCapabilities>

The declared return value.

static oa::Result<VideoDecodeCapabilities> oa::VideoDecoder::queryDecodeCapabilities( Engine & inRt, const VideoProfile & inProfile )
query capabilities

Parameters

inRt
Engine &

inProfile
const VideoProfile &

Returns

oa::Result<VideoDecodeCapabilities>

The declared return value.