vtsampler 0.1.1

Cross-platform GPU video format conversion and scaling (wgpu compute)
Documentation
# VTSampler

Cross-platform **GPU video format conversion and scaling** on [wgpu](https://docs.rs/wgpu). One [`VTImage`](https://docs.rs/vtsampler/latest/vtsampler/struct.VTImage.html) in, one out — similar in spirit to D3D11 Video Processor, but portable.

**API reference:** [docs.rs/vtsampler](https://docs.rs/vtsampler) · Local: `cargo doc --open --no-deps`

## Features

- **Formats:** RGBA, BGRA, NV12, YUV420P (any → any)
- **Scaling** when input/output sizes differ
- **Color:** BT.601 / BT.709 limited range
- **Backings:** CPU, wgpu textures, D3D11 (Windows), `CVPixelBuffer` (macOS)

## Quick example

```rust
use vtsampler::{PixelData, VTFormat, VTImage, VTProcessOptions, VTSamplerBuilder};

# async fn run() -> Result<(), vtsampler::VTSampleError> {
let mut sampler = VTSamplerBuilder::default().build().await?;

let input = VTImage::from_cpu(&pixel_data, 1920, 1080);
let output = VTImage::from_render_target(&gpu_texture, VTFormat::BGRA);

sampler.process(&input, &output, VTProcessOptions::default())?;
# Ok(())
# }
```

Share your renderer's device with [`VTSamplerBuilder::with_arc_device`](https://docs.rs/vtsampler/latest/vtsampler/struct.VTSamplerBuilder.html#method.with_arc_device).

## Example program

```sh
cargo run --example simple
```

Requires `ffmpeg` on `PATH` (downloads a sample image).

## License

[MIT](./LICENSE) Copyright (c) 2025 mycrl.