feat(audio-switcher): support input ports (#287)

This commit is contained in:
blacku
2026-08-07 22:35:39 -04:00
committed by GitHub
parent 9fd283bb52
commit 3467523e00
7 changed files with 217 additions and 9 deletions
+36
View File
@@ -0,0 +1,36 @@
local sourceFile = assert(io.open("service.luau", "rb"))
local source = sourceFile:read("*a")
sourceFile:close()
local beginMarker = "-- BEGIN INPUT PORT HELPERS"
local endMarker = "-- END INPUT PORT HELPERS"
local beginAt = assert(source:find(beginMarker, 1, true), "input port helper start marker missing")
local bodyAt = assert(source:find("\n", beginAt, true)) + 1
local endAt = assert(source:find(endMarker, bodyAt, true), "input port helper end marker missing")
local helperSource = source:sub(bodyAt, endAt - 1)
local loader = assert(load(helperSource .. "\nreturn parseInputPorts", "input port helpers", "t", _G))
local parseInputPorts = loader()
local ports, active = parseInputPorts({
active_port = "analog-input-internal-mic",
ports = {
{ name = "analog-input-internal-mic", description = "Internal Microphone", availability = "available" },
{ name = "analog-input-headset-mic", description = "Headset Microphone", availability = "not available" },
{ name = "analog-input-mic", description = "Microphone", availability = "unknown" },
},
})
assert(active == "analog-input-internal-mic")
assert(#ports == 3)
assert(ports[1].active and ports[1].available and ports[1].description == "Internal Microphone")
assert(not ports[2].active and not ports[2].available and ports[2].description == "Headset Microphone")
assert(ports[3].available, "unknown availability should remain selectable")
local objectPorts, objectActive = parseInputPorts({
active_port = { name = "mic" },
ports = { { name = "mic", description = "", availability = "available" } },
})
assert(objectActive == "mic" and objectPorts[1].active)
assert(objectPorts[1].description == "mic", "port name should be the description fallback")
print("audio input port tests: ok")