vhost-device/staging/vhost-device-video
dependabot[bot] 879e0ff47f build(deps): bump the non-rust-vmm group across 2 directories with 33 updates
Bumps the non-rust-vmm group with 24 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.23` | `4.5.29` |
| [log](https://github.com/rust-lang/log) | `0.4.22` | `0.4.25` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.9` | `2.0.11` |
| [rand](https://github.com/rust-random/rand) | `0.8.5` | `0.9.0` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.14.0` | `3.16.0` |
| [evdev](https://github.com/cmr/evdev) | `0.12.2` | `0.13.0` |
| [rstest](https://github.com/la10736/rstest) | `0.23.0` | `0.24.0` |
| [bitflags](https://github.com/bitflags/bitflags) | `2.6.0` | `2.8.0` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle) | `3.0.6` | `3.0.7` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.6` | `1.2.13` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.7.0` | `2.7.1` |
| [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) | `0.4.14` | `0.4.15` |
| [neli](https://github.com/jbaublitz/neli) | `0.6.4` | `0.6.5` |
| [neli-proc-macros](https://github.com/jbaublitz/neli) | `0.1.3` | `0.1.4` |
| [once_cell](https://github.com/matklad/once_cell) | `1.20.2` | `1.20.3` |
| [pin-project-lite](https://github.com/taiki-e/pin-project-lite) | `0.2.15` | `0.2.16` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.92` | `1.0.93` |
| [rustix](https://github.com/bytecodealliance/rustix) | `0.38.42` | `0.38.44` |
| [ryu](https://github.com/dtolnay/ryu) | `1.0.18` | `1.0.19` |
| [semver](https://github.com/dtolnay/semver) | `1.0.24` | `1.0.25` |
| [toml_edit](https://github.com/toml-rs/toml) | `0.22.22` | `0.22.24` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident) | `1.0.14` | `1.0.16` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.11.0` | `1.13.1` |
| [wait-timeout](https://github.com/alexcrichton/wait-timeout) | `0.2.0` | `0.2.1` |

Bumps the non-rust-vmm group with 20 updates in the /staging directory:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.23` | `4.5.29` |
| [log](https://github.com/rust-lang/log) | `0.4.22` | `0.4.25` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.9` | `2.0.11` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.14.0` | `3.16.0` |
| [rstest](https://github.com/la10736/rstest) | `0.23.0` | `0.24.0` |
| [bitflags](https://github.com/bitflags/bitflags) | `2.6.0` | `2.8.0` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle) | `3.0.6` | `3.0.7` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.7.0` | `2.7.1` |
| [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) | `0.4.14` | `0.4.15` |
| [once_cell](https://github.com/matklad/once_cell) | `1.20.2` | `1.20.3` |
| [pin-project-lite](https://github.com/taiki-e/pin-project-lite) | `0.2.15` | `0.2.16` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.92` | `1.0.93` |
| [rustix](https://github.com/bytecodealliance/rustix) | `0.38.42` | `0.38.44` |
| [semver](https://github.com/dtolnay/semver) | `1.0.24` | `1.0.25` |
| [syn](https://github.com/dtolnay/syn) | `2.0.93` | `2.0.98` |
| [toml_edit](https://github.com/toml-rs/toml) | `0.22.22` | `0.22.24` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident) | `1.0.14` | `1.0.16` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.11.0` | `1.13.1` |
| [wait-timeout](https://github.com/alexcrichton/wait-timeout) | `0.2.0` | `0.2.1` |
| rutabaga_gfx | `0.1.4` | `0.1.5` |

Updates `clap` from 4.5.23 to 4.5.29
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.23...clap_complete-v4.5.29)

Updates `log` from 0.4.22 to 0.4.25
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.22...0.4.25)

Updates `thiserror` from 2.0.9 to 2.0.11
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.9...2.0.11)

Updates `rand` from 0.8.5 to 0.9.0
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.9.0)

Updates `tempfile` from 3.14.0 to 3.16.0
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.14.0...v3.16.0)

Updates `evdev` from 0.12.2 to 0.13.0
- [Changelog](https://github.com/emberian/evdev/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cmr/evdev/compare/0.12.2...0.13.0)

Updates `rstest` from 0.23.0 to 0.24.0
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0)

Updates `bitflags` from 2.6.0 to 2.8.0
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.6.0...2.8.0)

Updates `anstyle-wincon` from 3.0.6 to 3.0.7
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.6...anstyle-wincon-v3.0.7)

Updates `cc` from 1.2.6 to 1.2.13
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.6...cc-v1.2.13)

Updates `clap_builder` from 4.5.23 to 4.5.29
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.23...v4.5.29)

Updates `clap_derive` from 4.5.18 to 4.5.28
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.18...v4.5.28)

Updates `indexmap` from 2.7.0 to 2.7.1
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.0...2.7.1)

Updates `linux-raw-sys` from 0.4.14 to 0.4.15
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.14...v0.4.15)

Updates `memoffset` from 0.6.5 to 0.9.1
- [Changelog](https://github.com/Gilnaa/memoffset/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Gilnaa/memoffset/compare/v0.6.5...v0.9.1)

Updates `neli` from 0.6.4 to 0.6.5
- [Release notes](https://github.com/jbaublitz/neli/releases)
- [Changelog](https://github.com/jbaublitz/neli/blob/neli-v0.6.5/CHANGELOG.md)
- [Commits](https://github.com/jbaublitz/neli/compare/neli-v0.6.4...neli-v0.6.5)

Updates `neli-proc-macros` from 0.1.3 to 0.1.4
- [Release notes](https://github.com/jbaublitz/neli/releases)
- [Changelog](https://github.com/jbaublitz/neli/blob/neli-proc-macros-v0.1.4/PROC_MACRO_CHANGELOG.md)
- [Commits](https://github.com/jbaublitz/neli/compare/neli-proc-macros-v0.1.3...neli-proc-macros-v0.1.4)

Updates `once_cell` from 1.20.2 to 1.20.3
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.2...v1.20.3)

Updates `pin-project-lite` from 0.2.15 to 0.2.16
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.15...v0.2.16)

Updates `proc-macro2` from 1.0.92 to 1.0.93
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.92...1.0.93)

Updates `rstest_macros` from 0.23.0 to 0.24.0
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0)

Updates `rustix` from 0.38.42 to 0.38.44
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.42...v0.38.44)

Updates `ryu` from 1.0.18 to 1.0.19
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.18...1.0.19)

Updates `semver` from 1.0.24 to 1.0.25
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.24...1.0.25)

Updates `toml_edit` from 0.22.22 to 0.22.24
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.22...v0.22.24)

Updates `unicode-ident` from 1.0.14 to 1.0.16
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.14...1.0.16)

Updates `uuid` from 1.11.0 to 1.13.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.13.1)

Updates `uuid-macro-internal` from 1.11.0 to 1.13.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.13.1)

Updates `wait-timeout` from 0.2.0 to 0.2.1
- [Commits](https://github.com/alexcrichton/wait-timeout/compare/0.2.0...0.2.1)

Updates `winnow` from 0.6.21 to 0.7.2
- [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md)
- [Commits](https://github.com/winnow-rs/winnow/compare/v0.6.21...v0.7.2)

Updates `clap` from 4.5.23 to 4.5.29
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.23...clap_complete-v4.5.29)

Updates `log` from 0.4.22 to 0.4.25
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.22...0.4.25)

Updates `thiserror` from 2.0.9 to 2.0.11
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.9...2.0.11)

Updates `tempfile` from 3.14.0 to 3.16.0
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.14.0...v3.16.0)

Updates `rstest` from 0.23.0 to 0.24.0
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0)

Updates `bitflags` from 2.6.0 to 2.8.0
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.6.0...2.8.0)

Updates `anstyle-wincon` from 3.0.6 to 3.0.7
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.6...anstyle-wincon-v3.0.7)

Updates `clap_builder` from 4.5.23 to 4.5.29
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.23...v4.5.29)

Updates `clap_derive` from 4.5.18 to 4.5.28
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.18...v4.5.28)

Updates `indexmap` from 2.7.0 to 2.7.1
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.0...2.7.1)

Updates `linux-raw-sys` from 0.4.14 to 0.4.15
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.14...v0.4.15)

Updates `once_cell` from 1.20.2 to 1.20.3
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.2...v1.20.3)

Updates `pin-project-lite` from 0.2.15 to 0.2.16
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.15...v0.2.16)

Updates `proc-macro2` from 1.0.92 to 1.0.93
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.92...1.0.93)

Updates `rstest_macros` from 0.23.0 to 0.24.0
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0)

Updates `rustix` from 0.38.42 to 0.38.44
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.42...v0.38.44)

Updates `semver` from 1.0.24 to 1.0.25
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.24...1.0.25)

Updates `syn` from 2.0.93 to 2.0.98
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.93...2.0.98)

Updates `toml_edit` from 0.22.22 to 0.22.24
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.22...v0.22.24)

Updates `unicode-ident` from 1.0.14 to 1.0.16
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.14...1.0.16)

Updates `uuid` from 1.11.0 to 1.13.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.13.1)

Updates `uuid-macro-internal` from 1.11.0 to 1.13.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.13.1)

Updates `wait-timeout` from 0.2.0 to 0.2.1
- [Commits](https://github.com/alexcrichton/wait-timeout/compare/0.2.0...0.2.1)

Updates `wasi` from 0.11.0+wasi-snapshot-preview1 to 0.13.3+wasi-0.2.2
- [Commits](https://github.com/bytecodealliance/wasi-rs/compare/0.11.0...0.13.3)

Updates `winnow` from 0.6.21 to 0.7.2
- [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md)
- [Commits](https://github.com/winnow-rs/winnow/compare/v0.6.21...v0.7.2)

Updates `rutabaga_gfx` from 0.1.4 to 0.1.5

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: rand
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: evdev
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: bitflags
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: anstyle-wincon
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: clap_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: indexmap
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: memoffset
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: neli
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: neli-proc-macros
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: rstest_macros
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: semver
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: toml_edit
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: uuid-macro-internal
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: wait-timeout
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: winnow
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: bitflags
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: anstyle-wincon
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: clap_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: indexmap
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: rstest_macros
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: semver
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: toml_edit
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: uuid-macro-internal
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: wait-timeout
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
- dependency-name: wasi
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: winnow
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: non-rust-vmm
- dependency-name: rutabaga_gfx
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: non-rust-vmm
...

Signed-off-by: dependabot[bot] <support@github.com>
[SG: fix `type annotations needed` errors in gpu tests]
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2025-02-12 13:59:51 +01:00
..
src Fix clippy::empty_line_after_doc_comments 2024-12-16 14:00:08 +05:30
Cargo.toml build(deps): bump the non-rust-vmm group across 2 directories with 33 updates 2025-02-12 13:59:51 +01:00
CHANGELOG.md chore: standardize changelogs 2024-07-24 19:37:19 +05:30
LICENSE-APACHE video: initial skeleton 2023-10-24 11:17:33 +02:00
LICENSE-BSD-3-Clause video: initial skeleton 2023-10-24 11:17:33 +02:00
README.md video: fill readme 2023-10-24 11:17:33 +02:00
rustfmt.toml video: initial skeleton 2023-10-24 11:17:33 +02:00

vhost-user-video

Synopsis

vhost-user-video --socket-path <SOCKET_PATH> --backend <BACKEND>

Description

A virtio-video device using the vhost-user protocol.

Arguments

    <BACKEND>
        Video backend to be used [possible values: null, v4l2-decoder]

Options

    -s, --socket-path <SOCKET_PATH>
        Unix socket to which a hypervisor connects to and sets up the control path with the device

    -d, --v4l2-device <V4L2_DEVICE>
        Path to the video device file [default: /dev/video0]

    -b, --backend <BACKEND>
        Video backend to be used [possible values: null, v4l2-decoder]

    -h, --help
        Print help

    -V, --version
        Print version

Limitations

Currently this crate only supports v4l2 stateful decoder devices, and the intention is it will be used with Arm SoCs that implement stateful decode/encode devices such as Qcom Venus, RPi, MediaTek etc.

Support for VAAPI or decoding via libavcodec or similar libraries is not implemented, but this could be added in the future through different video backends.

Features

This crate is a work-in-progress. Also, the specification for this device is still a work-in-progress, so it requires and out-of-tree kernel on the guest. Currently, the vmm translates from virtio-video v3 protocol and writes to a v4l2 mem2mem stateful decoder device. The v3 of the specification was chosen as there is a virtio-video Linux frontend driver implementation available for testing.

The primary goal so far is to enable development of virtio-video frontend driver using purely open source software. Using vicodec v4l2 stateful decoder on the host for testing allows a pure virtual environment for development and testing.

Working example

In this section we provide with some example commands to run the daemon and decode a video using vicodec.

Guest Linux kernel modules:

CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_TEST_SUPPORT=y
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIRTIO_VIDEO=y
CONFIG_GDB_SCRIPTS=y
CONFIG_DRM_VIRTIO_GPU=y

Host kernel modules:

CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_TEST_SUPPORT=y
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VICODEC=y

The daemon should be started first (video3 typically is the stateful video):

host# vhost-user-video --socket-path=/tmp/video.sock --v4l2-device=/dev/video3 --backend=v4l2-decoder

The QEMU invocation needs to create a chardev socket the device can use to communicate as well as share the guests memory over a memfd.

host# qemu-system								                            \
    -device vhost-user-video-pci,chardev=video,id=video                     \
    -chardev socket,path=/tmp/video.sock,id=video                           \
    -m 4096 		        					                            \
    -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on	\
    -numa node,memdev=mem							                        \
    ...

After booting, the device should be available at /dev/video0:

guest# v4l2-ctl -d/dev/video0 --info
Driver Info:
        Driver name      : virtio-video
        Card type        : 
        Bus info         : virtio:stateful-decoder
        Driver version   : 6.1.0
        Capabilities     : 0x84204000
                Video Memory-to-Memory Multiplanar
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04204000
                Video Memory-to-Memory Multiplanar
                Streaming
                Extended Pix Format

Example v4l2-ctl decode command:

guest# v4l2-ctl -d0 -x width=640,height=480 -v width=640,height=480,pixelformat=YU12 \
    --stream-mmap --stream-out-mmap --stream-from test_640_480-420P.fwht            \
    --stream-to out-test-640-480.YU12

Play the raw decoded video with ffplay or mplayer:

guest# ffplay -loglevel warning -v info -f rawvideo -pixel_format yuv420p \
    -video_size "640x480" ./out-test-640-480.YU12
guest# mplayer -demuxer rawvideo -rawvideo \
    format=i420:w=640:h=480:fps=25 out-test-640-480.YU12

Enable v4l2 debug in virtio-video driver:

# echo 0x1f > /sys/class/video4linux/videoX/dev_debug

License

This project is licensed under either of