# DxFilter
[](https://docs.rs/dxfilter)
[](https://crates.io/crates/dxfilter)
[](https://crates.io/crates/dxfilter)
Scale and ColorConversion done with DirectX filters. You can also create your
own filters with the provided api.
Crate contains various tools to make these features possible.
- `generate_shader!` and `compile_shader!` macros to write shaders that compile at compile time
- various built filters for converting and scaling from RGB to YUV or NV12
- `DxFilter` interface for writing custom filters
- utils like `create_device_context` , `create_input_tex`, `create_output_tex` for easier setup.
- utils like `AdapterFactory`, `Adapter`, `TextureReader` imported
from [`win_desktop_duplication`](https://crates.io/crates/win_desktop_duplication).
__For example usage, look at examples/rgb_to_nv12.rs__
## Usage
```rust
// for more detailed example see examples/rgb_to_nv12.rs
fn main() {
// {...}
// Texture Texture directx device
let filter = ConvertARGBToNV12::new(&input_tex, &output_tex, &device).unwrap();
// directx device
filter.apply_filter(&context).unwrap();
// { ... }
}
```
## AvailableFilters
* [x] ARGB to AYUV
* [x] ARGB to NV12
* [x] ARGB or AYUV scale only
* [ ] ARGB to YUV planar
* [ ] ARGB to YUV420 planar
* [ ] ARGB16 to Y410
* [ ] ARGB16 to YUV444 10bit planar
* [ ] ARGB16 to YUV420 10bit planar