Pixelforge is a Rust library for video encoding using Vulkan Video.
cargo build
cargo test
cargo run --example encode_h264The README.md is generated from the doc comments in src/lib.rs using the README.tpl template.
To regenerate:
cargo readme --no-title --no-indent-headings > README.mdDo not edit README.md directly; update the doc comments in src/lib.rs instead.
To verify the quality of the encoded videos, run:
cargo run --example encode_h265 \
&& rm -f decoded.yuv \
&& ffmpeg -hide_banner -loglevel error -y -i output.h265 -pix_fmt yuv420p -f rawvideo decoded.yuv \
&& ffmpeg -hide_banner -loglevel info -s 320x240 -pix_fmt yuv420p -f rawvideo -i testdata/test_frames.yuv -s 320x240 -pix_fmt yuv420p -f rawvideo -i decoded.yuv -lavfi psnr -f null -Make sure there are no Vulkan validation layer errors during execution.
- Follow
rustfmt.tomlformatting rules - Run
cargo fmtbefore committing - Use clippy for linting
- If a comment is a sentence, it should end with a period
- Avoid long files; split into modules if necessary
src/- Library source codeexamples/- Usage examples for encodingtestdata/- Test input files
- Vulkan Video API
- ash (Vulkan bindings for Rust)