diff --git a/CHANGELOG.md b/CHANGELOG.md
index bf4a7c390..80a6f634f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,7 +40,7 @@ All user visible changes to this project will be documented in this file. This p
- Emit `TracksApplied` event to create new and update existing tracks ([#105]);
- `PeerConnection` renegotiation functionality ([#105]);
- Calculate and send call quality score based on RTC stats ([#132]);
- - Muting/unmuting `MediaTrack`s by receiver ([#127]);
+ - Enabling/disabling `MediaTrack`s by receiver ([#127], [#155]);
- Send `TrackUpdate::IceRestart` based on RTC stats analysis ([#138]);
- Multiple `Room`s served by one RPC connection support ([#147]).
- [Coturn] integration:
@@ -84,6 +84,7 @@ All user visible changes to this project will be documented in this file. This p
[#138]: /../../pull/138
[#147]: /../../pull/147
[#153]: /../../pull/153
+[#155]: /../../pull/155
diff --git a/Cargo.lock b/Cargo.lock
index e9c36b2cb..e3ccbedc3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -293,7 +293,7 @@ dependencies = [
"serde_urlencoded",
"socket2",
"time 0.2.22",
- "tinyvec 1.0.1",
+ "tinyvec",
"url",
]
@@ -405,9 +405,9 @@ dependencies = [
[[package]]
name = "async-executor"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801"
+checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146"
dependencies = [
"async-task",
"concurrent-queue",
@@ -432,9 +432,9 @@ dependencies = [
[[package]]
name = "async-io"
-version = "1.1.10"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54bc4c1c7292475efb2253227dbcfad8fe1ca4c02bc62c510cc2f3da5c4704e"
+checksum = "40a0b2bb8ae20fede194e779150fe283f65a4a08461b496de546ec366b174ad9"
dependencies = [
"concurrent-queue",
"fastrand",
@@ -587,9 +587,9 @@ dependencies = [
[[package]]
name = "base-x"
-version = "0.2.7"
+version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2734baf8ed08920ccecce1b48a2dfce4ac74a973144add031163bd21a1c5dab"
+checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
[[package]]
name = "base64"
@@ -698,9 +698,9 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
[[package]]
name = "cc"
-version = "1.0.61"
+version = "1.0.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d"
+checksum = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40"
[[package]]
name = "cfg-if"
@@ -954,7 +954,7 @@ dependencies = [
"async-trait",
"config",
"deadpool",
- "futures 0.3.7",
+ "futures 0.3.8",
"log",
"redis",
"serde 1.0.117",
@@ -1230,9 +1230,9 @@ checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed"
[[package]]
name = "futures"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95314d38584ffbfda215621d723e0a3906f032e03ae5551e650058dac83d4797"
+checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0"
dependencies = [
"futures-channel",
"futures-core",
@@ -1245,9 +1245,9 @@ dependencies = [
[[package]]
name = "futures-channel"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151"
+checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64"
dependencies = [
"futures-core",
"futures-sink",
@@ -1255,15 +1255,15 @@ dependencies = [
[[package]]
name = "futures-core"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46"
+checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748"
[[package]]
name = "futures-executor"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5f8e0c9258abaea85e78ebdda17ef9666d390e987f006be6080dfe354b708cb"
+checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65"
dependencies = [
"futures-core",
"futures-task",
@@ -1272,9 +1272,9 @@ dependencies = [
[[package]]
name = "futures-io"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b"
+checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb"
[[package]]
name = "futures-lite"
@@ -1293,9 +1293,9 @@ dependencies = [
[[package]]
name = "futures-macro"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e36fccf3fc58563b4a14d265027c627c3b665d7fed489427e88e7cc929559efe"
+checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556"
dependencies = [
"proc-macro-hack",
"proc-macro2 1.0.24",
@@ -1305,24 +1305,24 @@ dependencies = [
[[package]]
name = "futures-sink"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11"
+checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d"
[[package]]
name = "futures-task"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c"
+checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d"
dependencies = [
"once_cell",
]
[[package]]
name = "futures-util"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34"
+checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2"
dependencies = [
"futures 0.1.30",
"futures-channel",
@@ -1745,7 +1745,7 @@ dependencies = [
"dotenv",
"failure",
"function_name",
- "futures 0.3.7",
+ "futures 0.3.8",
"humantime-serde",
"lazy_static",
"medea-client-api-proto",
@@ -1830,7 +1830,7 @@ dependencies = [
"bytes",
"deadpool",
"derive_more",
- "futures 0.3.7",
+ "futures 0.3.8",
"once_cell",
"regex",
"tokio",
@@ -1848,7 +1848,7 @@ dependencies = [
"derive_more",
"downcast",
"fragile",
- "futures 0.3.7",
+ "futures 0.3.8",
"js-sys",
"log",
"medea-client-api-proto",
@@ -1885,7 +1885,7 @@ dependencies = [
name = "medea-reactive"
version = "0.1.0-dev"
dependencies = [
- "futures 0.3.7",
+ "futures 0.3.8",
"tokio",
]
@@ -2076,9 +2076,9 @@ checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397"
[[package]]
name = "once_cell"
-version = "1.4.1"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
+checksum = "f53cef67919d7d247eb9a2f128ca9e522789967ef1eb4ccd8c71a95a8aedf596"
[[package]]
name = "opaque-debug"
@@ -2896,9 +2896,9 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.3.15"
+version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44"
+checksum = "7fd8b795c389288baa5f355489c65e71fd48a02104600d15c4cfbc561e9e429d"
dependencies = [
"cfg-if 0.1.10",
"libc",
@@ -3142,12 +3142,6 @@ dependencies = [
"syn 1.0.48",
]
-[[package]]
-name = "tinyvec"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117"
-
[[package]]
name = "tinyvec"
version = "1.0.1"
@@ -3188,9 +3182,9 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389"
+checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a"
dependencies = [
"proc-macro2 1.0.24",
"quote 1.0.7",
@@ -3508,7 +3502,7 @@ dependencies = [
"async-trait",
"backtrace",
"enum-as-inner",
- "futures 0.3.7",
+ "futures 0.3.8",
"idna",
"lazy_static",
"log",
@@ -3527,7 +3521,7 @@ checksum = "0f23cdfdc3d8300b3c50c9e84302d3bd6d860fb9529af84ace6cf9665f181b77"
dependencies = [
"backtrace",
"cfg-if 0.1.10",
- "futures 0.3.7",
+ "futures 0.3.8",
"ipconfig",
"lazy_static",
"log",
@@ -3562,11 +3556,11 @@ dependencies = [
[[package]]
name = "unicode-normalization"
-version = "0.1.13"
+version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+checksum = "b7f98e67a4d84f730d343392f9bfff7d21e3fca562b9cb7a43b768350beeddc6"
dependencies = [
- "tinyvec 0.3.4",
+ "tinyvec",
]
[[package]]
diff --git a/Makefile b/Makefile
index 93a90a680..c9e7daac7 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@ CONTROL_MOCK_IMAGE_NAME := instrumentisto/medea-control-api-mock
RUST_VER := 1.47
CHROME_VERSION := 86.0
-FIREFOX_VERSION := 82.0
+FIREFOX_VERSION := 82.0.2
crate-dir = .
ifeq ($(crate),medea-jason)
diff --git a/jason/CHANGELOG.md b/jason/CHANGELOG.md
index e3d048922..44ede3354 100644
--- a/jason/CHANGELOG.md
+++ b/jason/CHANGELOG.md
@@ -26,11 +26,11 @@ All user visible changes to this project will be documented in this file. This p
- Media management:
- Library API:
- - Mute/unmute local video/audio ([#40], [#81], [#97], [#144]):
- - `Room.mute_audio()`;
- - `Room.unmute_audio()`;
- - `Room.mute_video()`;
- - `Room.unmute_video()`.
+ - Disable/Enable local video/audio ([#40], [#81], [#97], [#144], [#155]):
+ - `Room.disable_audio()`;
+ - `Room.enable_audio()`;
+ - `Room.disable_video()`;
+ - `Room.enable_video()`.
- `InputDeviceInfo` class obtainable via `MediaManager.enumerate_devices()` ([#46]);
- `MediaManager` class obtainable via `Jason.media_manager()` ([#46]):
- `MediaManager.enumerate_devices()`;
@@ -51,11 +51,11 @@ All user visible changes to this project will be documented in this file. This p
- `Room.on_close` callback for WebSocket close initiated by server ([#55]);
- `MediaTrack.on_enabled` and `MediaTrack.on_disabled` callbacks being called when `MediaTrack` is enabled or disabled ([#123], [#143]);
- `ConnectionHandle.on_remote_track_added` callback being called when new receiver `MediaTrack` is added ([#123], [#143]);
- - Muting/unmuting remote video/audio ([#127]):
- - `Room.mute_remote_audio`;
- - `Room.unmute_remote_audio`;
- - `Room.mute_remote_video`;
- - `Room.unmute_remote_video`.
+ - Enabling/disabling remote video/audio ([#127], [#155]):
+ - `Room.disable_remote_audio`;
+ - `Room.enable_remote_audio`;
+ - `Room.disable_remote_video`;
+ - `Room.enable_remote_video`.
- `MediaTrack.media_source_kind` function ([#145], [#146]).
- Optional tracks support ([#106]);
- Simultaneous device and display video tracks publishing and receiving ([#144]);
@@ -73,7 +73,7 @@ All user visible changes to this project will be documented in this file. This p
- Signalling:
- Emitting of RPC commands:
- `AddPeerConnectionMetrics` with `IceConnectionState` and `PeerConnectionState` ([#71], [#87]);
- - `ApplyTracks` for muting/unmuting ([#81]);
+ - `ApplyTracks` for enabling/disabling ([#81], [#155]);
- `AddPeerConnectionStats` with `RtcStats` ([#90]);
- Handling of RPC events:
- `TracksApplied` with `TrackUpdate::Added`, `TrackUpdate::Updated` and `TrackUpdate::IceRestart` ([#105], [#138]);
@@ -114,6 +114,7 @@ All user visible changes to this project will be documented in this file. This p
[#145]: /../../pull/145
[#146]: /../../pull/146
[#147]: /../../pull/147
+[#155]: /../../pull/155
diff --git a/jason/demo/index.html b/jason/demo/index.html
index 99154b25b..45098bda6 100644
--- a/jason/demo/index.html
+++ b/jason/demo/index.html
@@ -37,10 +37,10 @@
let isVideoEnabledCheckbox = document.getElementById('is-video-enabled');
let isPublishingEnabledCheckbox = document.getElementById('is-publishing-enabled');
let usernameInput = document.getElementById('join__username');
- let muteAudioSendBtn = document.getElementById('control__mute_audio_send');
- let muteVideoSendBtn = document.getElementById('control__mute_video_send');
- let muteAudioRecvBtn = document.getElementById('control__mute_audio_recv');
- let muteVideoRecvBtn = document.getElementById('control__mute_video_recv');
+ let disableAudioSendBtn = document.getElementById('control__disable_audio_send');
+ let disableVideoSendBtn = document.getElementById('control__disable_video_send');
+ let disableAudioRecvBtn = document.getElementById('control__disable_audio_recv');
+ let disableVideoRecvBtn = document.getElementById('control__disable_video_recv');
let joinCallerButton = document.getElementById('join__join');
let connectionState = document.getElementById('connection-state__state');
let videoDiv = document.getElementById('remote-videos');
@@ -56,10 +56,10 @@
let videoPublishPolicy = 'Optional';
let isCallStarted = false;
let isJoinedRoom = false;
- let isAudioSendMuted = false;
- let isVideoSendMuted = false;
- let isAudioRecvMuted = false;
- let isVideoRecvMuted = false;
+ let isAudioSendEnabled = true;
+ let isVideoSendEnabled = true;
+ let isAudioRecvEnabled = true;
+ let isVideoRecvEnabled = true;
let isPublishingEnabled = true;
let remote_videos = [];
@@ -279,8 +279,8 @@
async function initLocalStream() {
let constraints = await build_constraints(
- isAudioSendMuted ? null : audioSelect,
- isVideoSendMuted ? null : videoSelect
+ isAudioSendEnabled ? audioSelect : null,
+ isVideoSendEnabled ? videoSelect : null
);
try {
localTracks = await jason
@@ -505,7 +505,7 @@
track.free();
}
}
- if (!isAudioSendMuted) {
+ if (isAudioSendEnabled) {
constraints = await initLocalStream();
}
await room.set_local_media_settings(constraints);
@@ -518,7 +518,7 @@
track.free();
}
}
- if (!isVideoSendMuted) {
+ if (isVideoSendEnabled) {
constraints = await initLocalStream();
}
await room.set_local_media_settings(constraints);
@@ -653,16 +653,9 @@
);
});
- muteAudioSendBtn.addEventListener('click', async () => {
- if (isAudioSendMuted) {
- await room.unmute_audio();
- isAudioSendMuted = false;
- muteAudioSendBtn.textContent = 'Disable audio send';
- if (!isCallStarted) {
- await initLocalStream();
- }
- } else {
- await room.mute_audio();
+ disableAudioSendBtn.addEventListener('click', async () => {
+ if (isAudioSendEnabled) {
+ await room.disable_audio();
for (const track of localTracks) {
if (track.ptr > 0) {
if (track.kind() === MediaKind.Audio && track.ptr > 0) {
@@ -670,20 +663,20 @@
}
}
}
- isAudioSendMuted = true;
- muteAudioSendBtn.textContent = 'Enable audio send';
- }
- });
- muteVideoSendBtn.addEventListener('click', async () => {
- if (isVideoSendMuted) {
- await room.unmute_video();
- isVideoSendMuted = false;
- muteVideoSendBtn.textContent = 'Disable video send';
+ isAudioSendEnabled = false;
+ disableAudioSendBtn.textContent = 'Enable audio send';
+ } else {
+ await room.enable_audio();
+ isAudioSendEnabled = true;
+ disableAudioSendBtn.textContent = 'Disable audio send';
if (!isCallStarted) {
await initLocalStream();
}
- } else {
- await room.mute_video();
+ }
+ });
+ disableVideoSendBtn.addEventListener('click', async () => {
+ if (isVideoSendEnabled) {
+ await room.disable_video();
for (const track of localTracks) {
if (track.ptr > 0) {
if (track.kind() === MediaKind.Video && track.ptr > 0) {
@@ -691,31 +684,38 @@
}
}
}
- isVideoSendMuted = true;
- muteVideoSendBtn.textContent = 'Enable video send';
+ isVideoSendEnabled = false;
+ disableVideoSendBtn.textContent = 'Enable video send';
+ } else {
+ await room.enable_video();
+ isVideoSendEnabled = true;
+ disableVideoSendBtn.textContent = 'Disable video send';
+ if (!isCallStarted) {
+ await initLocalStream();
+ }
}
});
- muteAudioRecvBtn.addEventListener('click', async () => {
- if (isAudioRecvMuted) {
- await room.unmute_remote_audio();
- isAudioRecvMuted = false;
- muteAudioRecvBtn.textContent = 'Disable audio recv';
+ disableAudioRecvBtn.addEventListener('click', async () => {
+ if (isAudioRecvEnabled) {
+ await room.disable_remote_audio();
+ isAudioRecvEnabled = false;
+ disableAudioRecvBtn.textContent = 'Enable audio recv';
} else {
- await room.mute_remote_audio();
- isAudioRecvMuted = true;
- muteAudioRecvBtn.textContent = 'Enable audio recv';
+ await room.enable_remote_audio();
+ isAudioRecvEnabled = true;
+ disableAudioRecvBtn.textContent = 'Disable audio recv';
}
});
- muteVideoRecvBtn.addEventListener('click', async () => {
- if (isVideoRecvMuted) {
- await room.unmute_remote_video();
- isVideoRecvMuted = false;
- muteVideoRecvBtn.textContent = 'Disable video recv';
+ disableVideoRecvBtn.addEventListener('click', async () => {
+ if (isVideoRecvEnabled) {
+ await room.disable_remote_video();
+ isVideoRecvEnabled = false;
+ disableVideoRecvBtn.textContent = 'Enable video recv';
} else {
- await room.mute_remote_video();
- isVideoRecvMuted = true;
- muteVideoRecvBtn.textContent = 'Enable video recv';
+ await room.enable_remote_video();
+ isVideoRecvEnabled = true;
+ disableVideoRecvBtn.textContent = 'Disable video recv';
}
});
@@ -847,12 +847,12 @@
diff --git a/jason/e2e-demo/js/index.js b/jason/e2e-demo/js/index.js
index 8899c2598..c891cff44 100644
--- a/jason/e2e-demo/js/index.js
+++ b/jason/e2e-demo/js/index.js
@@ -9,10 +9,10 @@ let remote_videos = {};
let joinCallerButton = document.getElementById('connection-settings__connect');
let usernameInput = document.getElementById('connection-settings__username');
let usernameMenuButton = document.getElementById('username-menu-button');
-let muteAudioSend = document.getElementById('control__mute_audio_send');
-let muteVideoSend = document.getElementById('control__mute_video_send');
-let muteAudioRecv = document.getElementById('control__mute_audio_recv');
-let muteVideoRecv = document.getElementById('control__mute_video_recv');
+let disableAudioSend = document.getElementById('control__disable_audio_send');
+let disableVideoSend = document.getElementById('control__disable_video_send');
+let disableAudioRecv = document.getElementById('control__disable_audio_recv');
+let disableVideoRecv = document.getElementById('control__disable_video_recv');
let closeApp = document.getElementById('control__close_app');
let audioSelect = document.getElementById('connect__select-device_audio');
let videoSelect = document.getElementById('connect__select-device_video');
@@ -449,16 +449,16 @@ window.onload = async function() {
let isCallStarted = false;
let localTracks = [];
- let isAudioSendMuted = false;
- let isVideoSendMuted = false;
- let isAudioRecvMuted = false;
- let isVideoRecvMuted = false;
+ let isAudioSendEnabled = true;
+ let isVideoSendEnabled = true;
+ let isAudioRecvEnabled = true;
+ let isVideoRecvEnabled = true;
let room = await newRoom();
async function initLocalStream() {
let constraints = await build_constraints(
- isAudioSendMuted ? null : audioSelect,
- isVideoSendMuted ? null : videoSelect
+ isAudioSendEnabled ? audioSelect : null,
+ isVideoSendEnabled ? videoSelect : null
);
try {
localTracks = await jason.media_manager().init_local_tracks(constraints)
@@ -740,7 +740,7 @@ window.onload = async function() {
track.free();
}
}
- if (!isAudioSendMuted) {
+ if (!isAudioSendEnabled) {
constraints = await initLocalStream();
}
await room.set_local_media_settings(constraints);
@@ -757,7 +757,7 @@ window.onload = async function() {
track.free();
}
}
- if (!isVideoSendMuted) {
+ if (isVideoSendEnabled) {
constraints = await initLocalStream();
}
await room.set_local_media_settings(constraints);
@@ -768,17 +768,10 @@ window.onload = async function() {
videoSelect.addEventListener('change', videoSwitch);
screenshareSwitchEl.addEventListener('change', videoSwitch);
- muteAudioSend.addEventListener('click', async () => {
+ disableAudioSend.addEventListener('click', async () => {
try {
- if (isAudioSendMuted) {
- await room.unmute_audio();
- isAudioSendMuted = false;
- muteAudioSend.textContent = 'Disable audio send';
- if (!isCallStarted) {
- await initLocalStream();
- }
- } else {
- await room.mute_audio();
+ if (isAudioSendEnabled) {
+ await room.disable_audio();
for (const track of localTracks) {
if (track.ptr > 0) {
if (track.kind() === rust.MediaKind.Audio && track.ptr > 0) {
@@ -786,24 +779,24 @@ window.onload = async function() {
}
}
}
- isAudioSendMuted = true;
- muteAudioSend.textContent = 'Enable audio send';
+ isAudioSendEnabled = false;
+ disableAudioSend.textContent = 'Enable audio send';
+ } else {
+ await room.enable_audio();
+ isAudioSendEnabled = true;
+ disableAudioSend.textContent = 'Disable audio send';
+ if (!isCallStarted) {
+ await initLocalStream();
+ }
}
} catch (e) {
console.error(e.message());
}
});
- muteVideoSend.addEventListener('click', async () => {
+ disableVideoSend.addEventListener('click', async () => {
try {
- if (isVideoSendMuted) {
- await room.unmute_video();
- isVideoSendMuted = false;
- muteVideoSend.textContent = 'Disable video send';
- if (!isCallStarted) {
- await initLocalStream();
- }
- } else {
- await room.mute_video();
+ if (isVideoSendEnabled) {
+ await room.disable_video();
for (const track of localTracks) {
if (track.ptr > 0) {
if (track.kind() === rust.MediaKind.Video && track.ptr > 0) {
@@ -811,33 +804,40 @@ window.onload = async function() {
}
}
}
- isVideoSendMuted = true;
- muteVideoSend.textContent = 'Enable video send';
+ isVideoSendEnabled = false;
+ disableVideoSend.textContent = 'Enable video send';
+ } else {
+ await room.enable_video();
+ isVideoSendEnabled = true;
+ disableVideoSend.textContent = 'Disable video send';
+ if (!isCallStarted) {
+ await initLocalStream();
+ }
}
} catch (e) {
console.error(e.trace());
}
});
- muteAudioRecv.addEventListener('click', async () => {
- if (isAudioRecvMuted) {
- await room.unmute_remote_audio();
- isAudioRecvMuted = false;
- muteAudioRecv.textContent = 'Disable audio recv'
+ disableAudioRecv.addEventListener('click', async () => {
+ if (isAudioRecvEnabled) {
+ await room.disable_remote_audio();
+ isAudioRecvEnabled = false;
+ disableAudioRecv.textContent = 'Enable audio recv'
} else {
- await room.mute_remote_audio();
- isAudioRecvMuted = true;
- muteAudioRecv.textContent = 'Enable audio recv'
+ await room.enable_remote_audio();
+ isAudioRecvEnabled = true;
+ disableAudioRecv.textContent = 'Disable audio recv'
}
});
- muteVideoRecv.addEventListener('click', async () => {
- if (isVideoRecvMuted) {
- await room.unmute_remote_video();
- isVideoRecvMuted = false;
- muteVideoRecv.textContent = 'Disable video recv'
+ disableVideoRecv.addEventListener('click', async () => {
+ if (isVideoRecvEnabled) {
+ await room.disable_remote_video();
+ isVideoRecvEnabled = false;
+ disableVideoRecv.textContent = 'Enable video recv'
} else {
- await room.mute_remote_video();
- isVideoRecvMuted = true;
- muteVideoRecv.textContent = 'Enable video recv'
+ await room.enable_remote_video();
+ isVideoRecvEnabled = true;
+ disableVideoRecv.textContent = 'Disable video recv'
}
});
closeApp.addEventListener('click', () => {
diff --git a/jason/e2e-demo/video-call.html b/jason/e2e-demo/video-call.html
index ddec963ab..f209afbcf 100644
--- a/jason/e2e-demo/video-call.html
+++ b/jason/e2e-demo/video-call.html
@@ -34,10 +34,6 @@
border-radius: 3px;
}
- .connect {
- float: left;
- }
-
.local-video {
float: left;
width: auto;
@@ -48,37 +44,6 @@
max-width: 225px;
}
- .connect__username {
- font-size: 16px;
- padding: 5px;
- }
-
- .bottom-btns {
- display: flex;
- position: absolute;
- justify-content: center;
- flex-direction: column;
- bottom: 100px;
- left: 0;
- right: 0;
- margin-left: auto;
- margin-right: auto;
- max-width: 400px;
- }
-
- .bottom-btns button {
- min-width: 175px;
- margin: 3px;
- }
-
- .bottom-btns__mute {
- flex-grow: 4;
- }
-
- .control {
- display: none;
- }
-
.json__key {
color: brown;
}
@@ -204,12 +169,12 @@
-
-
+
+
-
-
+
+