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
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@ Use the command below:
protoc --doc_out=./doc --doc_opt=markdown,docs.md fishjam/**/*.proto
```

## Lint and formatting

The files can be formatted using `buf`.
Check out [installation page](https://buf.build/docs/installation/) for `buf`.

```
buf format -w
```

and linted
```
buf lint
```

## Copyright and License

Copyright 2023, [Software Mansion](https://swmansion.com/?utm_source=git&utm_medium=readme&utm_campaign=fishjam-protos)
Expand Down
29 changes: 25 additions & 4 deletions fishjam/media_events/peer/peer.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ import "fishjam/media_events/shared.proto";

// Defines any type of message sent from Peer to Membrane RTC Engine
message MediaEvent {
// SCHEMAS

message VariantBitrate {
media_events.Variant variant = 1;
int32 bitrate = 2;
}

// MEDIA EVENTS

// Sent when a peer wants to join WebRTC Endpoint.
Expand Down Expand Up @@ -36,14 +43,26 @@ message MediaEvent {
message SdpOffer {
string sdp_offer = 1;
map<string, string> track_id_to_metadata_json = 2;
map<string, TrackBitrate> track_id_to_bitrates = 3;
map<string, TrackBitrates> track_id_to_bitrates = 3;
map<string, string> mid_to_track_id = 4;
}

// Sent when Peer wants to update its track's bitrate
message TrackBitrate {
message TrackBitrates {
string track_id = 1;
int32 bitrate = 2;
repeated VariantBitrate variant_bitrates = 2;
}

// Sent when client disables one of the track variants
message DisableTrackVariant {
string track_id = 1;
media_events.Variant variant = 2;
}

// Sent when client enables one of the track variants
message EnableTrackVariant {
string track_id = 1;
media_events.Variant variant = 2;
}

oneof content {
Expand All @@ -54,6 +73,8 @@ message MediaEvent {
RenegotiateTracks renegotiate_tracks = 5;
media_events.Candidate candidate = 6;
SdpOffer sdp_offer = 7;
TrackBitrate track_bitrate = 8;
TrackBitrates track_bitrates = 8;
EnableTrackVariant enable_track_variant = 9;
DisableTrackVariant disable_track_variant = 10;
}
}
40 changes: 37 additions & 3 deletions fishjam/media_events/server/server.proto
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,21 @@ import "fishjam/media_events/shared.proto";
// Defines any type of message sent from Membrane RTC Engine to Peer
message MediaEvent {
// SCHEMAS
message Track {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all occurence of map<string, string> track_id_to_metadata_json should probably be map<string, Track> track_id_to_track

message SimulcastConfig {
bool enabled = 1;
repeated media_events.Variant enabled_variants = 2;
repeated media_events.Variant disabled_variants = 3;
}

string metadata_json = 1;
SimulcastConfig simulcast_config = 2;
}

message Endpoint {
string endpoint_type = 2;
string metadata_json = 3;
map<string, string> track_id_to_metadata_json = 4;
map<string, Track> track_id_to_track = 4;
}

message IceServer {
Expand All @@ -38,7 +48,7 @@ message MediaEvent {
// Sent to informs that one of the peers has added one or more tracks.
message TracksAdded {
string endpoint_id = 1;
map<string, string> track_id_to_metadata_json = 2;
map<string, Track> track_id_to_track = 2;
}

// Sent to informs that one of the peers has removed one or more tracks.
Expand All @@ -56,7 +66,7 @@ message MediaEvent {
// Sent to the peer after connecting to the WebRTC Endpoint.
message Connected {
string endpoint_id = 1;
map<string, Endpoint> endpoints_id_to_endpoint = 2;
map<string, Endpoint> endpoint_id_to_endpoint = 2;
repeated IceServer ice_servers = 3;
}

Expand Down Expand Up @@ -100,6 +110,27 @@ message MediaEvent {
Status status = 2;
}

// Informs that track's variant has been changed
message TrackVariantSwitched {
string endpoint_id = 1;
string track_id = 2;
media_events.Variant variant = 3;
}

// Sent when track's variant has been disabled
message TrackVariantDisabled {
string endpoint_id = 1;
string track_id = 2;
media_events.Variant variant = 3;
}

// Sent when track's variant has been enabled
message TrackVariantEnabled {
string endpoint_id = 1;
string track_id = 2;
media_events.Variant variant = 3;
}

oneof content {
EndpointUpdated endpoint_updated = 1;
TrackUpdated track_updated = 2;
Expand All @@ -113,5 +144,8 @@ message MediaEvent {
media_events.Candidate candidate = 10;
SdpAnswer sdp_answer = 11;
VadNotification vad_notification = 12;
TrackVariantSwitched track_variant_switched = 13;
TrackVariantDisabled track_variant_disabled = 14;
TrackVariantEnabled track_variant_enabled = 15;
}
}
7 changes: 7 additions & 0 deletions fishjam/media_events/shared.proto
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,10 @@ message Candidate {
string sdp_mid = 3;
string username_fragment = 4;
}

enum Variant {
VARIANT_UNSPECIFIED = 0;
VARIANT_LOW = 1;
VARIANT_MEDIUM = 2;
VARIANT_HIGH = 3;
}
53 changes: 47 additions & 6 deletions fishjam_protos/lib/fishjam/media_events/peer/peer.pb.ex
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
defmodule Fishjam.MediaEvents.Peer.MediaEvent.VariantBitrate do
@moduledoc false

use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.13.0"

field :variant, 1, type: Fishjam.MediaEvents.Variant, enum: true
field :bitrate, 2, type: :int32
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent.Connect do
@moduledoc false

Expand Down Expand Up @@ -50,7 +59,7 @@ defmodule Fishjam.MediaEvents.Peer.MediaEvent.SdpOffer.TrackIdToBitratesEntry do
use Protobuf, map: true, syntax: :proto3, protoc_gen_elixir_version: "0.13.0"

field :key, 1, type: :string
field :value, 2, type: Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrate
field :value, 2, type: Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrates
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent.SdpOffer.MidToTrackIdEntry do
Expand Down Expand Up @@ -88,13 +97,35 @@ defmodule Fishjam.MediaEvents.Peer.MediaEvent.SdpOffer do
map: true
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrate do
defmodule Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrates do
@moduledoc false

use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.13.0"

field :track_id, 1, type: :string, json_name: "trackId"
field :bitrate, 2, type: :int32

field :variant_bitrates, 2,
repeated: true,
type: Fishjam.MediaEvents.Peer.MediaEvent.VariantBitrate,
json_name: "variantBitrates"
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent.DisableTrackVariant do
@moduledoc false

use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.13.0"

field :track_id, 1, type: :string, json_name: "trackId"
field :variant, 2, type: Fishjam.MediaEvents.Variant, enum: true
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent.EnableTrackVariant do
@moduledoc false

use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.13.0"

field :track_id, 1, type: :string, json_name: "trackId"
field :variant, 2, type: Fishjam.MediaEvents.Variant, enum: true
end

defmodule Fishjam.MediaEvents.Peer.MediaEvent do
Expand Down Expand Up @@ -129,8 +160,18 @@ defmodule Fishjam.MediaEvents.Peer.MediaEvent do
json_name: "sdpOffer",
oneof: 0

field :track_bitrate, 8,
type: Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrate,
json_name: "trackBitrate",
field :track_bitrates, 8,
type: Fishjam.MediaEvents.Peer.MediaEvent.TrackBitrates,
json_name: "trackBitrates",
oneof: 0

field :enable_track_variant, 9,
type: Fishjam.MediaEvents.Peer.MediaEvent.EnableTrackVariant,
json_name: "enableTrackVariant",
oneof: 0

field :disable_track_variant, 10,
type: Fishjam.MediaEvents.Peer.MediaEvent.DisableTrackVariant,
json_name: "disableTrackVariant",
oneof: 0
end
Loading