pub struct VulkanEncodeFrameAccess<'a> { /* private fields */ }Expand description
One encoder-pool frame held open for a native GPU write.
The decode path reaches its frames through a VulkanFrameLease, which
owns the AVFrame behind a mutex because several decode threads share it.
An encoder-input frame has one owner (the export that took it from the
pool), so it is borrowed directly, and this guard exists only to pair
frame_access_begin with its end.
It stays on the thread that began it: begin takes FFmpeg’s frame mutex
and the bridge’s queue mutex, which only the thread holding them can
release.
Implementations§
Source§impl<'a> VulkanEncodeFrameAccess<'a>
impl<'a> VulkanEncodeFrameAccess<'a>
Sourcepub fn retain_frame(&self) -> Result<AVFrame, BridgeError>
pub fn retain_frame(&self) -> Result<AVFrame, BridgeError>
Retains the frame’s buffers and hardware pool beyond this access guard.
§Errors
Returns an allocation error if FFmpeg cannot create the reference.
Sourcepub fn begin(frame: &'a mut AVFrame) -> Result<Self, BridgeError>
pub fn begin(frame: &'a mut AVFrame) -> Result<Self, BridgeError>
Opens one handoff on an encoder-pool frame.
§Errors
Returns an error when the frame is not a usable Vulkan frame.
Sourcepub const fn access(&self) -> &VulkanFrameAccess
pub const fn access(&self) -> &VulkanFrameAccess
The frame’s state while its FFmpeg locks are held.
Sourcepub const unsafe fn access_mut(&mut self) -> &mut VulkanFrameAccess
pub const unsafe fn access_mut(&mut self) -> &mut VulkanFrameAccess
The record written back to the frame on Self::commit, for a
submission to update; checked as VulkanFrameAccessGuard::access_mut
says.
§Safety
Trait Implementations§
Source§impl Drop for VulkanEncodeFrameAccess<'_>
Available on Linux and crate feature hwdevice only.
impl Drop for VulkanEncodeFrameAccess<'_>
hwdevice only.