Skip to content

Voice Overhaul and Video Calling #313

Open
@insertish

Description

@insertish

If you are reading this from the roadmap, the following is not a list of features that is currently available but our internal progress on development.

Functional requirements:

  • User can connect to a voice chat and start listening to other participant's or streaming a participant's video.
  • A server owner may restrict who can join using the channel using the "Connect" permission.
  • A server owner or moderator (with "DeafenMembers" permission) may restrict who can listen server-wide.
  • Users may turn on their microphone and broadcast it to other participants.
  • Users are able to turn off their microphone at any moment.
  • A server owner may restrict who can talk in a channel using the "Speak" permission.
  • A server owner or moderator (with "MuteMembers" permission) may restrict who can talk server-wide.
  • Users may share one or more video streams, such as their camera, a game, or their screen.
  • Users are able to turn off their video streams at any moment.
  • A server owner may restrict who can share video by using the "Video" permission.
  • A server owner or moderator (with "MoveMembers" permission) may move a member between channels.
  • A server owner may configure an "afk" room that users are automatically moved in to if they appear to be idle.
  • A user is able to mute another person for themselves in a call.
  • A user is able to change the volume of another person for themselves in a call.
  • A user is able to start or stop watching any particular video stream.
  • Users receive a notification when a call is started in a group chat.
  • The message is updated when the call ends with the total duration.

TODO: incomplete list

Non-functional requirements:

  • Users are only able to join one voice channel at a time.
  • Users experience low-latency communication by default.
  • Users can tell if there is an ongoing call in a room and who is participating.
  • Users can tell at a glance if there is an ongoing call in a server.
  • Users are able to see their current call status at a glance.
  • Users are able to tell who is currently talking in a room.
  • Users are able to tell who is currently not broadcasting their voice.
  • Users are able to tell who is currently not listening to anybody else.
  • Users are able to tell which other people can hear them.
  • Users are able to test if other people would be able to hear them.
  • Users automatically hear voice and (camera) video by default.
  • Users automatically watch screen shares within the context of group chats.
  • Users do not automatically watch screen shares within the context of servers.
  • Users are able to choose a layout which best fits what they are doing, i.e. watching a stream or listening to people.

TODO: incomplete list

Needs discussion:

  • (non-functional) Users are automatically disconnected from voice calls when they are idle.
  • (functional) Users are able to preview video streams before watching them.

Future work:

  • Integrate high-quality noise cancellation a-la Krisp but open-source, e.g. DeepFilterNet

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

🕒 Backlog

Status

In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions