From e844aaf726d846cec1a5a0e7bb2917e8e4701127 Mon Sep 17 00:00:00 2001 From: Jakub Pisarek <99591440+sgfn@users.noreply.github.com> Date: Thu, 10 Aug 2023 16:53:52 +0200 Subject: [PATCH] [RTC-308] Make simulcast configurable --- lib/jellyfish/peer/webrtc.ex | 9 +++++++-- lib/jellyfish/room.ex | 7 ++++++- test/jellyfish/room_test.exs | 4 +++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/jellyfish/peer/webrtc.ex b/lib/jellyfish/peer/webrtc.ex index cba361b..fb07260 100644 --- a/lib/jellyfish/peer/webrtc.ex +++ b/lib/jellyfish/peer/webrtc.ex @@ -7,7 +7,12 @@ defmodule Jellyfish.Peer.WebRTC do """ @enforce_keys [] - defstruct @enforce_keys ++ [] + defstruct @enforce_keys ++ + [ + enable_simulcast: true + ] - @type t :: %__MODULE__{} + @type t :: %__MODULE__{ + enable_simulcast: boolean() + } end diff --git a/lib/jellyfish/room.ex b/lib/jellyfish/room.ex index 87fc8bc..03ea73f 100644 --- a/lib/jellyfish/room.ex +++ b/lib/jellyfish/room.ex @@ -146,7 +146,12 @@ defmodule Jellyfish.Room do Tesla.post( client.http_client, "/room/#{room_id}/peer", - %{"type" => Peer.string_from_options(peer)} + %{ + "type" => Peer.string_from_options(peer), + "options" => + Map.from_struct(peer) + |> Map.new(fn {k, v} -> {snake_case_to_camel_case(k), v} end) + } ), {:ok, %{"peer" => peer, "token" => token}} <- Map.fetch(body, "data"), result <- Peer.from_json(peer) do diff --git a/test/jellyfish/room_test.exs b/test/jellyfish/room_test.exs index f2ba56b..1f3b566 100644 --- a/test/jellyfish/room_test.exs +++ b/test/jellyfish/room_test.exs @@ -12,7 +12,9 @@ defmodule Jellyfish.RoomTest do source_uri: "rtsp://ef36c6dff23ecc5bbe311cc880d95dc8.se:2137/does/not/matter" } - @peer_opts %Peer.WebRTC{} + @peer_opts %Peer.WebRTC{ + enable_simulcast: false + } @peer_opts_module Peer.WebRTC @room_id "mock_room_id"