openpnp_capture 0.1.0

OpenPnP capture safe bindings
# Safe openpnp-capture bindings

[![license](https://img.shields.io/github/license/raymanfx/libv4l-rs?style=for-the-badge)](https://github.com/raymanfx/libv4l-rs/blob/master/LICENSE.txt)

This crate provides safe bindings to the openpnp-capture library for cross-platform camera capture.

## Layout
The `sys` subdir contains the `openpnp_capture_sys` crate which holds the actual FFI bindings wrapping the C API.

## Usage
```toml
openpnp_capture = "0.1"
```

## Example
```rust
use openpnp_capture::{Device, Format, Stream};

fn main() {
    // Fetch some generic device information
    let devices = Device::enumerate();
    println!("Found {} devices.", devices.len());

    // Choose the first device we see
    let dev = Device::new(devices[0]).expect("Failed to open device");

    // Create the stream
    let format = Format::default().width(1280).height(720).fps(30);
    let mut stream = Stream::new(&dev, &format).expect("Failed to create stream");

    // Print some format information
    println!(
        "[0] {} ({}x{}@{})",
        stream.format().fourcc,
        stream.format().width,
        stream.format().height,
        stream.format().fps
    );

    // Prepare a buffer to hold camera frames
    let mut rgb_buffer = Vec::new();

    // Capture some frames
    stream.advance();
    stream.read(&mut rgb_buffer);
}
```

Have a look at the provided `examples` for more sample applications.