Merge remote-tracking branch 'origin/master' into develop
commit
7049e1564f
|
@ -126,12 +126,26 @@ sub on_unknown_event
|
||||||
if (!$bridgestate->{$room_id}->{gathered_candidates}) {
|
if (!$bridgestate->{$room_id}->{gathered_candidates}) {
|
||||||
$bridgestate->{$room_id}->{gathered_candidates} = 1;
|
$bridgestate->{$room_id}->{gathered_candidates} = 1;
|
||||||
my $offer = $bridgestate->{$room_id}->{offer};
|
my $offer = $bridgestate->{$room_id}->{offer};
|
||||||
my $candidate_block = "";
|
my $candidate_block = {
|
||||||
|
audio => '',
|
||||||
|
video => '',
|
||||||
|
};
|
||||||
foreach (@{$event->{content}->{candidates}}) {
|
foreach (@{$event->{content}->{candidates}}) {
|
||||||
$candidate_block .= "a=" . $_->{candidate} . "\r\n";
|
if ($_->{sdpMid}) {
|
||||||
|
$candidate_block->{$_->{sdpMid}} .= "a=" . $_->{candidate} . "\r\n";
|
||||||
}
|
}
|
||||||
# XXX: collate using the right m= line - for now assume audio call
|
else {
|
||||||
$offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/;
|
$candidate_block->{audio} .= "a=" . $_->{candidate} . "\r\n";
|
||||||
|
$candidate_block->{video} .= "a=" . $_->{candidate} . "\r\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# 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", {
|
my $f = send_verto_json_request("verto.invite", {
|
||||||
"sdp" => $offer,
|
"sdp" => $offer,
|
||||||
|
@ -172,22 +186,18 @@ sub on_room_message
|
||||||
warn "[Matrix] in $room_id: $from: " . $content->{body} . "\n";
|
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(
|
Future->needs_all(
|
||||||
$bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub {
|
$bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub {
|
||||||
$bot_matrix->start;
|
$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;
|
)->get;
|
||||||
|
|
||||||
$loop->attach_signal(
|
$loop->attach_signal(
|
||||||
|
|
|
@ -11,7 +11,4 @@ requires 'YAML', 0;
|
||||||
requires 'JSON', 0;
|
requires 'JSON', 0;
|
||||||
requires 'Getopt::Long', 0;
|
requires 'Getopt::Long', 0;
|
||||||
|
|
||||||
on 'test' => sub {
|
|
||||||
requires 'Test::More', '>= 0.98';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue