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 @@
- - + +
- - + +