Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .agents/skills/commit-scope/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Choose at most one optional scope for `<type>[optional scope][!]: <description>`

```text
meta core error pdu str bulk graphics config input connector session driver
svc dvc cliprdr rdpdr rdpsnd displaycontrol echo egfx rdpeudp rdpeusb rdpemt rdcleanpath
svc dvc cliprdr rdpdr rdpsnd rdpeai displaycontrol echo egfx rdpeudp rdpeusb rdpemt rdcleanpath
tls mstsgu vmconnect

client viewer agent daemon rpc activex server web ffi replay
Expand All @@ -29,6 +29,7 @@ Use these aggregate mappings:
- `driver`: `ironrdp-async`, `ironrdp-blocking`, `ironrdp-tokio`, and `ironrdp-futures`.
- `dvc`: DRDYNVC infrastructure, the COM plugin, and the pipe proxy, but not specific dynamic channels.
- `cliprdr`, `rdpdr`, and `rdpsnd`: each protocol and its format or native support crates.
- `rdpeai`: MS-RDPEAI audio input protocol and related client capture wiring.
- `server`: `ironrdp-acceptor` and `ironrdp-server`.
- `web`: WASM bindings, the Rust web helper, and everything under `web-client`.
- `ffi`: the Rust FFI and generated or manual .NET bindings, but not ActiveX.
Expand Down
13 changes: 13 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions crates/ironrdp-rdpeai/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[package]
name = "ironrdp-rdpeai"
version = "0.1.0"
readme = "README.md"
description = "AUDIO_INPUT dynamic channel for audio capture as described in MS-RDPEAI"
edition.workspace = true
rust-version = "1.94"
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true

publish = false

[lib]
doctest = false
test = false

[dependencies]
ironrdp-core = { path = "../ironrdp-core", version = "0.2", features = ["alloc"] }
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.8" } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.9", features = ["alloc"] } # public
ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.9" } # public — shared AUDIO_FORMAT
ironrdp-svc = { path = "../ironrdp-svc", version = "0.8" } # public
tracing = { version = "0.1", features = ["log"] }

[lints]
workspace = true
14 changes: 14 additions & 0 deletions crates/ironrdp-rdpeai/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# IronRDP AUDIO_INPUT (MS-RDPEAI)

Client-side [MS-RDPEAI][1] implementation over Dynamic Virtual Channels [MS-RDPEDYC][2].

This library includes:

- AUDIO_INPUT PDU parse/serialize (`MSG_SNDIN_*`)
- Dynamic virtual channel client processor
- Capture backend trait for feeding PCM packets upstream

Minimum supported codec: `WAVE_FORMAT_PCM` (0x0001).

[1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpeai/2eb8be0c-4f17-418b-9911-edb8d2ffcde5
[2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpedyc/3bd53020-9b64-4c9a-97fc-90a79e7e1e06
Loading
Loading