Go Live hosting works (#14), but it carries picture and nothing else. A viewer
on the other side gets the window and hears none of it - not the game, not the
video, not the call being shared.
It is absent by construction rather than broken, in three places that agree:
nobilis/src/backend/discord/streamconn.rs:400 announces "audio_ssrc": 0.
Opus is offered in the codec list a few lines above as a handshake
formality, but no audio SSRC is ever claimed.
src/renderer/src/state/store.ts opens the capture with audio: false.
src/renderer/src/lib/discordscreen.ts encodes VP8 and has no audio path at
all.
So nothing is dropping frames somewhere - there is no second media type yet.
The pieces it needs are already standing. The stream has its own connection,
its own UDP socket, its own crypto and its own DAVE session, and all of that is
indifferent to what it carries: encrypt already takes a MediaType. What is
missing is a real audio_ssrc, Opus frames packetised onto the same pipe, and
a capture to feed them - which on Linux means asking the desktop portal for the
shared window's sound rather than the microphone, and is the part with no
equivalent elsewhere in the codebase to copy.
Worth doing before the viewing half of #14: somebody watching a silent stream
cannot tell whether the sound is missing or the stream is broken.
Go Live hosting works (#14), but it carries picture and nothing else. A viewer
on the other side gets the window and hears none of it - not the game, not the
video, not the call being shared.
It is absent by construction rather than broken, in three places that agree:
- `nobilis/src/backend/discord/streamconn.rs:400` announces `"audio_ssrc": 0`.
Opus is offered in the codec list a few lines above as a handshake
formality, but no audio SSRC is ever claimed.
- `src/renderer/src/state/store.ts` opens the capture with `audio: false`.
- `src/renderer/src/lib/discordscreen.ts` encodes VP8 and has no audio path at
all.
So nothing is dropping frames somewhere - there is no second media type yet.
The pieces it needs are already standing. The stream has its own connection,
its own UDP socket, its own crypto and its own DAVE session, and all of that is
indifferent to what it carries: `encrypt` already takes a `MediaType`. What is
missing is a real `audio_ssrc`, Opus frames packetised onto the same pipe, and
a capture to feed them - which on Linux means asking the desktop portal for the
shared window's sound rather than the microphone, and is the part with no
equivalent elsewhere in the codebase to copy.
Worth doing before the viewing half of #14: somebody watching a silent stream
cannot tell whether the sound is missing or the stream is broken.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Go Live hosting works (#14), but it carries picture and nothing else. A viewer
on the other side gets the window and hears none of it - not the game, not the
video, not the call being shared.
It is absent by construction rather than broken, in three places that agree:
nobilis/src/backend/discord/streamconn.rs:400announces"audio_ssrc": 0.Opus is offered in the codec list a few lines above as a handshake
formality, but no audio SSRC is ever claimed.
src/renderer/src/state/store.tsopens the capture withaudio: false.src/renderer/src/lib/discordscreen.tsencodes VP8 and has no audio path atall.
So nothing is dropping frames somewhere - there is no second media type yet.
The pieces it needs are already standing. The stream has its own connection,
its own UDP socket, its own crypto and its own DAVE session, and all of that is
indifferent to what it carries:
encryptalready takes aMediaType. What ismissing is a real
audio_ssrc, Opus frames packetised onto the same pipe, anda capture to feed them - which on Linux means asking the desktop portal for the
shared window's sound rather than the microphone, and is the part with no
equivalent elsewhere in the codebase to copy.
Worth doing before the viewing half of #14: somebody watching a silent stream
cannot tell whether the sound is missing or the stream is broken.
Finished
92dffca011c67cbde8dd