diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-08-20 17:21:51 +0100 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-08-20 17:21:51 +0100 |
commit | 7049e1564faaec452428f733ba02235679d6b54d (patch) | |
tree | 7958a7d1396a08b1a319871771dfe5eeedbf82b3 /contrib/vertobot/bot.pl | |
parent | Merge pull request #239 from matrix-org/pynacl (diff) | |
parent | hacky support for video for FS CC DD (diff) | |
download | synapse-7049e1564faaec452428f733ba02235679d6b54d.tar.xz |
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'contrib/vertobot/bot.pl')
-rwxr-xr-x | contrib/vertobot/bot.pl | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/contrib/vertobot/bot.pl b/contrib/vertobot/bot.pl index 0430a38aa8..31eed40925 100755 --- a/contrib/vertobot/bot.pl +++ b/contrib/vertobot/bot.pl @@ -126,12 +126,26 @@ sub on_unknown_event if (!$bridgestate->{$room_id}->{gathered_candidates}) { $bridgestate->{$room_id}->{gathered_candidates} = 1; my $offer = $bridgestate->{$room_id}->{offer}; - my $candidate_block = ""; + my $candidate_block = { + audio => '', + video => '', + }; foreach (@{$event->{content}->{candidates}}) { - $candidate_block .= "a=" . $_->{candidate} . "\r\n"; + if ($_->{sdpMid}) { + $candidate_block->{$_->{sdpMid}} .= "a=" . $_->{candidate} . "\r\n"; + } + else { + $candidate_block->{audio} .= "a=" . $_->{candidate} . "\r\n"; + $candidate_block->{video} .= "a=" . $_->{candidate} . "\r\n"; + } } - # XXX: collate using the right m= line - for now assume audio call - $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/; + + # XXX: assumes audio comes first + #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{audio}/; + #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{video}/; + + $offer =~ s/(m=video)/$candidate_block->{audio}$1/; + $offer =~ s/(.$)/$1\n$candidate_block->{video}$1/; my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, @@ -172,22 +186,18 @@ sub on_room_message warn "[Matrix] in $room_id: $from: " . $content->{body} . "\n"; } -my $verto_connecting = $loop->new_future; -$bot_verto->connect( - %{ $CONFIG{"verto-bot"} }, - on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, - on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, -)->then( sub { - warn("[Verto] connected to websocket"); - $verto_connecting->done($bot_verto) if not $verto_connecting->is_done; -}); - Future->needs_all( $bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub { $bot_matrix->start; }), - $verto_connecting, + $bot_verto->connect( + %{ $CONFIG{"verto-bot"} }, + on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, + on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, + )->on_done( sub { + warn("[Verto] connected to websocket"); + }), )->get; $loop->attach_signal( |