ndi-sdk-sys 0.1.2

Rust bindings for the NDI SDK
Documentation
use std::{
    collections::HashSet,
    time::{Duration, Instant},
};

use ndi_sdk_sys::{find::NDISourceFinderBuilder, *};

fn main() {
    let v = sdk::version();

    println!("{}", v.unwrap_or("NDI SDK version unavailable"));

    sdk::initialize().unwrap();

    println!("NDI initialized successfully");

    let mut finder = NDISourceFinderBuilder::default()
        .show_local_sources(true)
        .build()
        .unwrap();

    let mut source_list = HashSet::new();

    let start = Instant::now();

    let duration = Duration::from_secs(3);

    while start.elapsed() < duration {
        let sources = finder.get_source_iter().unwrap();

        for source in sources {
            let source = source.to_owned();
            if source_list.insert(source.clone()) {
                println!("Found source: {:?}", source);
            }
        }

        let elapsed = start.elapsed();

        if duration > elapsed {
            finder.wait_for_change(duration - elapsed);
        }
    }

    if source_list.is_empty() {
        println!("No sources found");
    }
}