pub struct AsyncImageDecoder { /* private fields */ }Expand description
Async wrapper around ImageDecoder.
Both open (file I/O + codec init) and decode (pixel conversion) are
performed on spawn_blocking threads so the async executor is not blocked.
There is no into_stream method because an image is a single frame, not a
sequence.
§Examples
ⓘ
use ff_decode::AsyncImageDecoder;
let frame = AsyncImageDecoder::open("photo.png").await?.decode().await?;
println!("{}x{}", frame.width(), frame.height());Implementations§
Source§impl AsyncImageDecoder
impl AsyncImageDecoder
Sourcepub async fn open(
path: impl AsRef<Path> + Send + 'static,
) -> Result<Self, DecodeError>
pub async fn open( path: impl AsRef<Path> + Send + 'static, ) -> Result<Self, DecodeError>
Opens the image file asynchronously.
File I/O and codec initialisation are performed on a spawn_blocking
thread so the async executor is not blocked.
§Errors
Returns DecodeError if the file is missing, contains no video
stream, or uses an unsupported codec.
Sourcepub async fn decode(self) -> Result<VideoFrame, DecodeError>
pub async fn decode(self) -> Result<VideoFrame, DecodeError>
Decodes the image into a VideoFrame.
This consuming method runs on a spawn_blocking thread.
§Errors
Returns DecodeError on codec or I/O errors.
Auto Trait Implementations§
impl !Sync for AsyncImageDecoder
impl Freeze for AsyncImageDecoder
impl RefUnwindSafe for AsyncImageDecoder
impl Send for AsyncImageDecoder
impl Unpin for AsyncImageDecoder
impl UnsafeUnpin for AsyncImageDecoder
impl UnwindSafe for AsyncImageDecoder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more