Renderer for intra-only video codecs with instant seeking.
Unlike VideoNodeRenderer which reads from a frame queue fed by a background thread, this renderer owns its own LibAV decoding context and performs synchronous seek + decode + GPU upload directly in update().
This enables instant seeking for all-intra codecs (ProRes, MJPEG, DNxHD, HAP, etc.) where every frame is independently decodable.
Supports hardware-accelerated decoding when available (VAAPI, D3D11VA, CUDA, VideoToolbox, Vulkan Video). When zero-copy GPU texture import is not possible for the current RHI backend, falls back to av_hwframe_transfer_data() which still avoids software decode CPU cost.
|
|
| DirectVideoNodeRenderer (const VideoNodeBase &node, const Video::VideoMetadata &metadata) noexcept |
| |
|
| DirectVideoNodeRenderer (const DirectVideoNodeRenderer &)=delete |
| |
|
| DirectVideoNodeRenderer (DirectVideoNodeRenderer &&)=delete |
| |
|
DirectVideoNodeRenderer & | operator= (const DirectVideoNodeRenderer &)=delete |
| |
|
DirectVideoNodeRenderer & | operator= (DirectVideoNodeRenderer &&)=delete |
| |
| TextureRenderTarget | renderTargetForInput (const Port &input) override |
| |
| void | init (RenderList &renderer, QRhiResourceUpdateBatch &res) override |
| |
| void | runRenderPass (RenderList &, QRhiCommandBuffer &commands, Edge &edge) override |
| |
| void | update (RenderList &renderer, QRhiResourceUpdateBatch &res, Edge *edge) override |
| |
| void | release (RenderList &r) override |
| |
|
| NodeRenderer (const Node &node) |
| |
|
virtual BufferView | bufferForInput (const Port &input) |
| |
|
virtual BufferView | bufferForOutput (const Port &output) |
| |
| virtual QRhiTexture * | textureForOutput (const Port &output) |
| |
| virtual void | updateInputTexture (const Port &input, QRhiTexture *tex) |
| |
| virtual void | inputAboutToFinish (RenderList &renderer, const Port &p, QRhiResourceUpdateBatch *&) |
| |
|
virtual void | runInitialPasses (RenderList &, QRhiCommandBuffer &commands, QRhiResourceUpdateBatch *&res, Edge &edge) |
| |
|
void | checkForChanges () |
| |
|
void | process (int32_t port, const ossia::geometry_spec &v) |
| |
|
virtual void | process (int32_t port, const ossia::transform3d &v) |
| |