Skip to main content

Module smol

Module smol 

Source
Expand description

smol runtime integration.

Provides AsyncReceiver wrapper that uses ::smol::unblock to run NDI operations without blocking the smol runtime.

§Example

use grafton_ndi::{NDI, ReceiverOptionsBuilder, smol::AsyncReceiver};

fn main() -> Result<(), grafton_ndi::Error> {
    ::smol::block_on(async {
        let ndi = NDI::new()?;
        // ... obtain source ...

        let options = ReceiverOptionsBuilder::snapshot_preset(source).build();
        let receiver = grafton_ndi::Receiver::new(&ndi, &options)?;
        let async_receiver = AsyncReceiver::new(receiver);

        // Non-blocking async capture
        match async_receiver.video().try_capture(std::time::Duration::from_millis(100)).await? {
            Some(frame) => println!("Got frame: {}x{}", frame.width(), frame.height()),
            None => println!("No frame available"),
        }

        Ok(())
    })
}

Type Aliases§

AsyncReceiver
Async receiver wrapper for smol runtime.