Parcel audio from in-world speaker objects (positional, through room acoustics) #892
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#892
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Today the parcel music stream plays directly to the listener: it isn't positioned, and room acoustics (#683) don't apply to it.
Goal
Play the parcel audio stream through one or more in-world objects, the "speakers", as positioned sound sources, so it behaves like other in-world sound:
Open questions (feasibility)
Getting PCM out of the stream. Streaming audio currently goes through the media plugin path (LibVLC / LLStreamingAudio). Can the decoded audio be taken (for example with libvlc audio callbacks) and fed into an OpenAL streaming source with our EFX and acoustics, instead of the plugin's own audio output? What latency, buffering and resampling does that need? Does it work on Windows, Linux and macOS?
Designating speakers. Options:
[slwx]weather tag;It has to work with nothing new on the server.
Multiple speakers. Several speakers playing one stream in sync.
Falling back. When no speaker is in range, or the feature is off, what happens: fall back to normal stereo, or go silent?
Other details. Volume controls, the stream's own stereo image, and cost.
Feasibility study done. Design decisions:
[slspk grp=stage ch=M|L|R|S vol= r= ...], set by a script that can delete itself afterwards. The owner and group come from one properties request per tagged object.t0=sync to about ±1 s.Fixed in 1.4.1 (
2100d12ef8). Reopen if you still see it.