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!
andcompile_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 fromwin_desktop_duplication
.
For example usage, look at examples/rgb_to_nv12.rs
// 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();
// { ... }
}
- ARGB to AYUV
- ARGB to NV12
- 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