diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68eea6a7a..4948f5f4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -235,8 +235,10 @@ jobs: include: - platform: android os: macos - - platform: linux - os: ubuntu +# TODO: Flutter requires `libc6` of 2.34 version for some reason. +# Uncomment when github will update `ubuntu-latest` to 22.04. +# - platform: linux +# os: ubuntu - platform: windows os: windows runs-on: ${{ matrix.os }}-latest diff --git a/flutter/assets/pkg/medea_jason.js b/flutter/assets/pkg/medea_jason.js index 0cf61ab90..5a9aa3923 100644 --- a/flutter/assets/pkg/medea_jason.js +++ b/flutter/assets/pkg/medea_jason.js @@ -21,18 +21,7 @@ function takeObject(idx) { return ret; } -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); +let WASM_VECTOR_LEN = 0; let cachegetUint8Memory0 = null; function getUint8Memory0() { @@ -42,13 +31,7 @@ function getUint8Memory0() { return cachegetUint8Memory0; } -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - -let WASM_VECTOR_LEN = 0; - -let cachedTextEncoder = new TextEncoder('utf-8'); +const cachedTextEncoder = new TextEncoder('utf-8'); const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' ? function (arg, view) { @@ -109,6 +92,23 @@ function getInt32Memory0() { return cachegetInt32Memory0; } +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + function isLikeNone(x) { return x === undefined || x === null; } @@ -211,27 +211,27 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } function __wbg_adapter_32(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1b97165bb52db72c(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4708d3c50e7a9049(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_35(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1b97165bb52db72c(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4708d3c50e7a9049(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_38(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1b97165bb52db72c(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4708d3c50e7a9049(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_41(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1b97165bb52db72c(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4708d3c50e7a9049(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_44(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1b97165bb52db72c(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4708d3c50e7a9049(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_47(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h19bda22c75da22f8(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h76f42b4681e51c97(arg0, arg1, addHeapObject(arg2)); } function _assertClass(instance, klass) { @@ -253,9 +253,73 @@ function getArrayU8FromWasm0(ptr, len) { return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); } function __wbg_adapter_349(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h82fe326f9a0bf11b(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); + wasm.wasm_bindgen__convert__closures__invoke2_mut__h4d42456920a5d3ed(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } +/** +* Possible error kinds of a [`LocalMediaInitException`]. +*/ +export const LocalMediaInitExceptionKind = Object.freeze({ +/** +* Occurs if the [getUserMedia()][1] request failed. +* +* [1]: https://tinyurl.com/w3-streams#dom-mediadevices-getusermedia +*/ +GetUserMediaFailed:0,"0":"GetUserMediaFailed", +/** +* Occurs if the [getDisplayMedia()][1] request failed. +* +* [1]: https://w3.org/TR/screen-capture/#dom-mediadevices-getdisplaymedia +*/ +GetDisplayMediaFailed:1,"1":"GetDisplayMediaFailed", +/** +* Occurs when local track is [`ended`][1] right after [getUserMedia()][2] +* or [getDisplayMedia()][3] request. +* +* [1]: https://tinyurl.com/w3-streams#idl-def-MediaStreamTrackState.ended +* [2]: https://tinyurl.com/rnxcavf +* [3]: https://w3.org/TR/screen-capture#dom-mediadevices-getdisplaymedia +*/ +LocalTrackIsEnded:2,"2":"LocalTrackIsEnded", }); +/** +* Possible error kinds of a [`RpcClientException`]. +*/ +export const RpcClientExceptionKind = Object.freeze({ +/** +* Connection with a server was lost. +* +* This usually means that some transport error occurred, so a client can +* continue performing reconnecting attempts. +*/ +ConnectionLost:0,"0":"ConnectionLost", +/** +* Could not authorize an RPC session. +* +* This usually means that authentication data a client provides is +* obsolete. +*/ +AuthorizationFailed:1,"1":"AuthorizationFailed", +/** +* RPC session has been finished. This is a terminal state. +*/ +SessionFinished:2,"2":"SessionFinished", }); +/** +* Kind of a [`MediaStateTransitionException`]. +*/ +export const MediaStateTransitionExceptionKind = Object.freeze({ +/** +* Media state of a [`Sender`] transits to an opposite of the requested +* one. +* +* [`Sender`]: crate::peer::media::Sender +*/ +OppositeState:0,"0":"OppositeState", +/** +* Requested state transition is not allowed by [`Sender`]'s settings. +* +* [`Sender`]: crate::peer::media::Sender +*/ +ProhibitedState:1,"1":"ProhibitedState", }); /** * Describes directions that a camera can face, as seen from a user's * perspective. Representation of a [VideoFacingModeEnum][1]. @@ -324,70 +388,6 @@ Audio:0,"0":"Audio", */ Video:1,"1":"Video", }); /** -* Possible error kinds of a [`LocalMediaInitException`]. -*/ -export const LocalMediaInitExceptionKind = Object.freeze({ -/** -* Occurs if the [getUserMedia()][1] request failed. -* -* [1]: https://tinyurl.com/w3-streams#dom-mediadevices-getusermedia -*/ -GetUserMediaFailed:0,"0":"GetUserMediaFailed", -/** -* Occurs if the [getDisplayMedia()][1] request failed. -* -* [1]: https://w3.org/TR/screen-capture/#dom-mediadevices-getdisplaymedia -*/ -GetDisplayMediaFailed:1,"1":"GetDisplayMediaFailed", -/** -* Occurs when local track is [`ended`][1] right after [getUserMedia()][2] -* or [getDisplayMedia()][3] request. -* -* [1]: https://tinyurl.com/w3-streams#idl-def-MediaStreamTrackState.ended -* [2]: https://tinyurl.com/rnxcavf -* [3]: https://w3.org/TR/screen-capture#dom-mediadevices-getdisplaymedia -*/ -LocalTrackIsEnded:2,"2":"LocalTrackIsEnded", }); -/** -* Possible error kinds of a [`RpcClientException`]. -*/ -export const RpcClientExceptionKind = Object.freeze({ -/** -* Connection with a server was lost. -* -* This usually means that some transport error occurred, so a client can -* continue performing reconnecting attempts. -*/ -ConnectionLost:0,"0":"ConnectionLost", -/** -* Could not authorize an RPC session. -* -* This usually means that authentication data a client provides is -* obsolete. -*/ -AuthorizationFailed:1,"1":"AuthorizationFailed", -/** -* RPC session has been finished. This is a terminal state. -*/ -SessionFinished:2,"2":"SessionFinished", }); -/** -* Kind of a [`MediaStateTransitionException`]. -*/ -export const MediaStateTransitionExceptionKind = Object.freeze({ -/** -* Media state of a [`Sender`] transits to an opposite of the requested -* one. -* -* [`Sender`]: crate::peer::media::Sender -*/ -OppositeState:0,"0":"OppositeState", -/** -* Requested state transition is not allowed by [`Sender`]'s settings. -* -* [`Sender`]: crate::peer::media::Sender -*/ -ProhibitedState:1,"1":"ProhibitedState", }); -/** * Constraints applicable to audio tracks. */ export class AudioTrackConstraints { @@ -414,7 +414,7 @@ export class AudioTrackConstraints { * Creates new [`AudioTrackConstraints`] with none constraints configured. */ constructor() { - var ret = wasm.audiotrackconstraints_new(); + const ret = wasm.audiotrackconstraints_new(); return AudioTrackConstraints.__wrap(ret); } /** @@ -424,8 +424,8 @@ export class AudioTrackConstraints { * @param {string} device_id */ device_id(device_id) { - var ptr0 = passStringToWasm0(device_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + const ptr0 = passStringToWasm0(device_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; wasm.audiotrackconstraints_device_id(this.ptr, ptr0, len0); } } @@ -596,7 +596,7 @@ export class ConnectionHandle { * @returns {Promise} */ enable_remote_audio() { - var ret = wasm.connectionhandle_enable_remote_audio(this.ptr); + const ret = wasm.connectionhandle_enable_remote_audio(this.ptr); return takeObject(ret); } /** @@ -615,7 +615,7 @@ export class ConnectionHandle { * @returns {Promise} */ disable_remote_audio() { - var ret = wasm.connectionhandle_disable_remote_audio(this.ptr); + const ret = wasm.connectionhandle_disable_remote_audio(this.ptr); return takeObject(ret); } /** @@ -634,7 +634,7 @@ export class ConnectionHandle { * @returns {Promise} */ enable_remote_video() { - var ret = wasm.connectionhandle_enable_remote_video(this.ptr); + const ret = wasm.connectionhandle_enable_remote_video(this.ptr); return takeObject(ret); } /** @@ -653,7 +653,7 @@ export class ConnectionHandle { * @returns {Promise} */ disable_remote_video() { - var ret = wasm.connectionhandle_disable_remote_video(this.ptr); + const ret = wasm.connectionhandle_disable_remote_video(this.ptr); return takeObject(ret); } } @@ -686,7 +686,7 @@ export class DeviceVideoTrackConstraints { * configured. */ constructor() { - var ret = wasm.devicevideotrackconstraints_new(); + const ret = wasm.devicevideotrackconstraints_new(); return DeviceVideoTrackConstraints.__wrap(ret); } /** @@ -696,8 +696,8 @@ export class DeviceVideoTrackConstraints { * @param {string} device_id */ device_id(device_id) { - var ptr0 = passStringToWasm0(device_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + const ptr0 = passStringToWasm0(device_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; wasm.audiotrackconstraints_device_id(this.ptr, ptr0, len0); } /** @@ -803,7 +803,7 @@ export class DisplayVideoTrackConstraints { * configured. */ constructor() { - var ret = wasm.displayvideotrackconstraints_new(); + const ret = wasm.displayvideotrackconstraints_new(); return DisplayVideoTrackConstraints.__wrap(ret); } } @@ -835,7 +835,7 @@ export class EnumerateDevicesException { * @returns {Error} */ cause() { - var ret = wasm.enumeratedevicesexception_cause(this.ptr); + const ret = wasm.enumeratedevicesexception_cause(this.ptr); return takeObject(ret); } /** @@ -943,7 +943,7 @@ export class InternalException { * @returns {Error | undefined} */ cause() { - var ret = wasm.internalexception_cause(this.ptr); + const ret = wasm.internalexception_cause(this.ptr); return takeObject(ret); } /** @@ -1026,7 +1026,7 @@ export class Jason { * Instantiates a new [`Jason`] interface to interact with this library. */ constructor() { - var ret = wasm.jason_new(); + const ret = wasm.jason_new(); return Jason.__wrap(ret); } /** @@ -1034,7 +1034,7 @@ export class Jason { * @returns {RoomHandle} */ init_room() { - var ret = wasm.jason_init_room(this.ptr); + const ret = wasm.jason_init_room(this.ptr); return RoomHandle.__wrap(ret); } /** @@ -1042,7 +1042,7 @@ export class Jason { * @returns {MediaManagerHandle} */ media_manager() { - var ret = wasm.jason_media_manager(this.ptr); + const ret = wasm.jason_media_manager(this.ptr); return MediaManagerHandle.__wrap(ret); } /** @@ -1094,7 +1094,7 @@ export class LocalMediaInitException { * @returns {number} */ kind() { - var ret = wasm.localmediainitexception_kind(this.ptr); + const ret = wasm.localmediainitexception_kind(this.ptr); return ret >>> 0; } /** @@ -1118,7 +1118,7 @@ export class LocalMediaInitException { * @returns {Error | undefined} */ cause() { - var ret = wasm.internalexception_cause(this.ptr); + const ret = wasm.internalexception_cause(this.ptr); return takeObject(ret); } /** @@ -1173,7 +1173,7 @@ export class LocalMediaTrack { * @returns {MediaStreamTrack} */ get_track() { - var ret = wasm.localmediatrack_get_track(this.ptr); + const ret = wasm.localmediatrack_get_track(this.ptr); return takeObject(ret); } /** @@ -1182,7 +1182,7 @@ export class LocalMediaTrack { * @returns {number} */ kind() { - var ret = wasm.localmediatrack_kind(this.ptr); + const ret = wasm.localmediatrack_kind(this.ptr); return ret >>> 0; } /** @@ -1195,7 +1195,7 @@ export class LocalMediaTrack { * @returns {number} */ media_source_kind() { - var ret = wasm.localmediatrack_media_source_kind(this.ptr); + const ret = wasm.localmediatrack_media_source_kind(this.ptr); return ret >>> 0; } } @@ -1249,7 +1249,7 @@ export class MediaDeviceInfo { * @returns {number} */ kind() { - var ret = wasm.mediadeviceinfo_kind(this.ptr); + const ret = wasm.mediadeviceinfo_kind(this.ptr); return ret >>> 0; } /** @@ -1358,7 +1358,7 @@ export class MediaManagerHandle { * @returns {Promise} */ enumerate_devices() { - var ret = wasm.mediamanagerhandle_enumerate_devices(this.ptr); + const ret = wasm.mediamanagerhandle_enumerate_devices(this.ptr); return takeObject(ret); } /** @@ -1382,7 +1382,7 @@ export class MediaManagerHandle { */ init_local_tracks(caps) { _assertClass(caps, MediaStreamSettings); - var ret = wasm.mediamanagerhandle_init_local_tracks(this.ptr, caps.ptr); + const ret = wasm.mediamanagerhandle_init_local_tracks(this.ptr, caps.ptr); return takeObject(ret); } /** @@ -1450,7 +1450,7 @@ export class MediaSettingsUpdateException { * @returns {any} */ cause() { - var ret = wasm.mediasettingsupdateexception_cause(this.ptr); + const ret = wasm.mediasettingsupdateexception_cause(this.ptr); return takeObject(ret); } /** @@ -1459,7 +1459,7 @@ export class MediaSettingsUpdateException { * @returns {boolean} */ rolled_back() { - var ret = wasm.mediasettingsupdateexception_rolled_back(this.ptr); + const ret = wasm.mediasettingsupdateexception_rolled_back(this.ptr); return ret !== 0; } } @@ -1524,7 +1524,7 @@ export class MediaStateTransitionException { * @returns {number} */ kind() { - var ret = wasm.mediastatetransitionexception_kind(this.ptr); + const ret = wasm.mediastatetransitionexception_kind(this.ptr); return ret >>> 0; } } @@ -1557,7 +1557,7 @@ export class MediaStreamSettings { * Creates new [`MediaStreamSettings`] with none constraints configured. */ constructor() { - var ret = wasm.mediastreamsettings_new(); + const ret = wasm.mediastreamsettings_new(); return MediaStreamSettings.__wrap(ret); } /** @@ -1647,7 +1647,7 @@ export class ReconnectHandle { * @returns {Promise} */ reconnect_with_delay(delay_ms) { - var ret = wasm.reconnecthandle_reconnect_with_delay(this.ptr, delay_ms); + const ret = wasm.reconnecthandle_reconnect_with_delay(this.ptr, delay_ms); return takeObject(ret); } /** @@ -1690,7 +1690,7 @@ export class ReconnectHandle { * @returns {Promise} */ reconnect_with_backoff(starting_delay_ms, multiplier, max_delay, max_elapsed_time_ms) { - var ret = wasm.reconnecthandle_reconnect_with_backoff(this.ptr, starting_delay_ms, multiplier, max_delay, !isLikeNone(max_elapsed_time_ms), isLikeNone(max_elapsed_time_ms) ? 0 : max_elapsed_time_ms); + const ret = wasm.reconnecthandle_reconnect_with_backoff(this.ptr, starting_delay_ms, multiplier, max_delay, !isLikeNone(max_elapsed_time_ms), isLikeNone(max_elapsed_time_ms) ? 0 : max_elapsed_time_ms); return takeObject(ret); } } @@ -1726,7 +1726,7 @@ export class RemoteMediaTrack { * @returns {MediaStreamTrack} */ get_track() { - var ret = wasm.remotemediatrack_get_track(this.ptr); + const ret = wasm.remotemediatrack_get_track(this.ptr); return takeObject(ret); } /** @@ -1734,7 +1734,7 @@ export class RemoteMediaTrack { * @returns {boolean} */ enabled() { - var ret = wasm.remotemediatrack_enabled(this.ptr); + const ret = wasm.remotemediatrack_enabled(this.ptr); return ret !== 0; } /** @@ -1742,7 +1742,7 @@ export class RemoteMediaTrack { * @returns {boolean} */ muted() { - var ret = wasm.remotemediatrack_muted(this.ptr); + const ret = wasm.remotemediatrack_muted(this.ptr); return ret !== 0; } /** @@ -1787,7 +1787,7 @@ export class RemoteMediaTrack { * @returns {number} */ kind() { - var ret = wasm.remotemediatrack_kind(this.ptr); + const ret = wasm.remotemediatrack_kind(this.ptr); return ret >>> 0; } /** @@ -1800,7 +1800,7 @@ export class RemoteMediaTrack { * @returns {number} */ media_source_kind() { - var ret = wasm.remotemediatrack_media_source_kind(this.ptr); + const ret = wasm.remotemediatrack_media_source_kind(this.ptr); return ret >>> 0; } } @@ -1857,7 +1857,7 @@ export class RoomCloseReason { * @returns {boolean} */ is_closed_by_server() { - var ret = wasm.roomclosereason_is_closed_by_server(this.ptr); + const ret = wasm.roomclosereason_is_closed_by_server(this.ptr); return ret !== 0; } /** @@ -1867,7 +1867,7 @@ export class RoomCloseReason { * @returns {boolean} */ is_err() { - var ret = wasm.roomclosereason_is_err(this.ptr); + const ret = wasm.roomclosereason_is_err(this.ptr); return ret !== 0; } } @@ -1929,9 +1929,9 @@ export class RoomHandle { * @returns {Promise} */ join(token) { - var ptr0 = passStringToWasm0(token, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - var ret = wasm.roomhandle_join(this.ptr, ptr0, len0); + const ptr0 = passStringToWasm0(token, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.roomhandle_join(this.ptr, ptr0, len0); return takeObject(ret); } /** @@ -2108,7 +2108,7 @@ export class RoomHandle { */ set_local_media_settings(settings, stop_first, rollback_on_fail) { _assertClass(settings, MediaStreamSettings); - var ret = wasm.roomhandle_set_local_media_settings(this.ptr, settings.ptr, stop_first, rollback_on_fail); + const ret = wasm.roomhandle_set_local_media_settings(this.ptr, settings.ptr, stop_first, rollback_on_fail); return takeObject(ret); } /** @@ -2128,7 +2128,7 @@ export class RoomHandle { * @returns {Promise} */ mute_audio() { - var ret = wasm.roomhandle_mute_audio(this.ptr); + const ret = wasm.roomhandle_mute_audio(this.ptr); return takeObject(ret); } /** @@ -2148,7 +2148,7 @@ export class RoomHandle { * @returns {Promise} */ unmute_audio() { - var ret = wasm.roomhandle_unmute_audio(this.ptr); + const ret = wasm.roomhandle_unmute_audio(this.ptr); return takeObject(ret); } /** @@ -2169,7 +2169,7 @@ export class RoomHandle { * @returns {Promise} */ mute_video(source_kind) { - var ret = wasm.roomhandle_mute_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); + const ret = wasm.roomhandle_mute_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); return takeObject(ret); } /** @@ -2190,7 +2190,7 @@ export class RoomHandle { * @returns {Promise} */ unmute_video(source_kind) { - var ret = wasm.roomhandle_unmute_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); + const ret = wasm.roomhandle_unmute_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); return takeObject(ret); } /** @@ -2210,7 +2210,7 @@ export class RoomHandle { * @returns {Promise} */ disable_audio() { - var ret = wasm.roomhandle_disable_audio(this.ptr); + const ret = wasm.roomhandle_disable_audio(this.ptr); return takeObject(ret); } /** @@ -2234,7 +2234,7 @@ export class RoomHandle { * @returns {Promise} */ enable_audio() { - var ret = wasm.roomhandle_enable_audio(this.ptr); + const ret = wasm.roomhandle_enable_audio(this.ptr); return takeObject(ret); } /** @@ -2256,7 +2256,7 @@ export class RoomHandle { * @returns {Promise} */ disable_video(source_kind) { - var ret = wasm.roomhandle_disable_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); + const ret = wasm.roomhandle_disable_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); return takeObject(ret); } /** @@ -2282,7 +2282,7 @@ export class RoomHandle { * @returns {Promise} */ enable_video(source_kind) { - var ret = wasm.roomhandle_enable_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); + const ret = wasm.roomhandle_enable_video(this.ptr, isLikeNone(source_kind) ? 2 : source_kind); return takeObject(ret); } /** @@ -2302,7 +2302,7 @@ export class RoomHandle { * @returns {Promise} */ disable_remote_audio() { - var ret = wasm.roomhandle_disable_remote_audio(this.ptr); + const ret = wasm.roomhandle_disable_remote_audio(this.ptr); return takeObject(ret); } /** @@ -2322,7 +2322,7 @@ export class RoomHandle { * @returns {Promise} */ disable_remote_video() { - var ret = wasm.roomhandle_disable_remote_video(this.ptr); + const ret = wasm.roomhandle_disable_remote_video(this.ptr); return takeObject(ret); } /** @@ -2342,7 +2342,7 @@ export class RoomHandle { * @returns {Promise} */ enable_remote_audio() { - var ret = wasm.roomhandle_enable_remote_audio(this.ptr); + const ret = wasm.roomhandle_enable_remote_audio(this.ptr); return takeObject(ret); } /** @@ -2362,7 +2362,7 @@ export class RoomHandle { * @returns {Promise} */ enable_remote_video() { - var ret = wasm.roomhandle_enable_remote_video(this.ptr); + const ret = wasm.roomhandle_enable_remote_video(this.ptr); return takeObject(ret); } } @@ -2395,7 +2395,7 @@ export class RpcClientException { * @returns {number} */ kind() { - var ret = wasm.localmediainitexception_kind(this.ptr); + const ret = wasm.localmediainitexception_kind(this.ptr); return ret >>> 0; } /** @@ -2419,7 +2419,7 @@ export class RpcClientException { * @returns {Error | undefined} */ cause() { - var ret = wasm.internalexception_cause(this.ptr); + const ret = wasm.internalexception_cause(this.ptr); return takeObject(ret); } /** @@ -2537,121 +2537,121 @@ async function init(input) { imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; - imports.wbg.__wbg_localmediatrack_new = function(arg0) { - var ret = LocalMediaTrack.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - var ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_number_new = function(arg0) { - var ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = takeObject(arg0).original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; - } - var ret = false; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; return ret; }; - imports.wbg.__wbg_connectionhandle_new = function(arg0) { - var ret = ConnectionHandle.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_roomclosereason_new = function(arg0) { - var ret = RoomCloseReason.__wrap(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_mediadeviceinfo_new = function(arg0) { - var ret = MediaDeviceInfo.__wrap(arg0); - return addHeapObject(ret); + imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = JSON.stringify(obj === undefined ? null : obj); + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; imports.wbg.__wbg_stateerror_new = function(arg0) { - var ret = StateError.__wrap(arg0); + const ret = StateError.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_localmediainitexception_new = function(arg0) { - var ret = LocalMediaInitException.__wrap(arg0); + const ret = LocalMediaInitException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_enumeratedevicesexception_new = function(arg0) { - var ret = EnumerateDevicesException.__wrap(arg0); + const ret = EnumerateDevicesException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_rpcclientexception_new = function(arg0) { - var ret = RpcClientException.__wrap(arg0); + const ret = RpcClientException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_internalexception_new = function(arg0) { - var ret = InternalException.__wrap(arg0); + const ret = InternalException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_formatexception_new = function(arg0) { - var ret = FormatException.__wrap(arg0); + const ret = FormatException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_mediastatetransitionexception_new = function(arg0) { - var ret = MediaStateTransitionException.__wrap(arg0); + const ret = MediaStateTransitionException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_mediasettingsupdateexception_new = function(arg0) { - var ret = MediaSettingsUpdateException.__wrap(arg0); + const ret = MediaSettingsUpdateException.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - var ret = getStringFromWasm0(arg0, arg1); + const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; - imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) { + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { const obj = getObject(arg1); - var ret = JSON.stringify(obj === undefined ? null : obj); - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - var ret = getObject(arg0) === undefined; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; return ret; }; - imports.wbg.__wbindgen_is_string = function(arg0) { - var ret = typeof(getObject(arg0)) === 'string'; - return ret; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = getObject(arg1); - var ret = typeof(obj) === 'string' ? obj : undefined; - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; + imports.wbg.__wbg_roomclosereason_new = function(arg0) { + const ret = RoomCloseReason.__wrap(arg0); + return addHeapObject(ret); }; imports.wbg.__wbg_remotemediatrack_new = function(arg0) { - var ret = RemoteMediaTrack.__wrap(arg0); + const ret = RemoteMediaTrack.__wrap(arg0); return addHeapObject(ret); }; imports.wbg.__wbg_reconnecthandle_new = function(arg0) { - var ret = ReconnectHandle.__wrap(arg0); + const ret = ReconnectHandle.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_mediadeviceinfo_new = function(arg0) { + const ret = MediaDeviceInfo.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_localmediatrack_new = function(arg0) { + const ret = LocalMediaTrack.__wrap(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_connectionhandle_new = function(arg0) { + const ret = ConnectionHandle.__wrap(arg0); return addHeapObject(ret); }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; imports.wbg.__wbindgen_number_get = function(arg0, arg1) { const obj = getObject(arg1); - var ret = typeof(obj) === 'number' ? obj : undefined; + const ret = typeof(obj) === 'number' ? obj : undefined; getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); }; imports.wbg.__wbg_new_693216e109162396 = function() { - var ret = new Error(); + const ret = new Error(); return addHeapObject(ret); }; imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) { - var ret = getObject(arg1).stack; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + const ret = getObject(arg1).stack; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; @@ -2669,367 +2669,367 @@ async function init(input) { getObject(arg0).getRandomValues(getObject(arg1)); }, arguments) }; imports.wbg.__wbg_process_70251ed1291754d5 = function(arg0) { - var ret = getObject(arg0).process; + const ret = getObject(arg0).process; return addHeapObject(ret); }; imports.wbg.__wbindgen_is_object = function(arg0) { const val = getObject(arg0); - var ret = typeof(val) === 'object' && val !== null; + const ret = typeof(val) === 'object' && val !== null; return ret; }; imports.wbg.__wbg_versions_b23f2588cdb2ddbb = function(arg0) { - var ret = getObject(arg0).versions; + const ret = getObject(arg0).versions; return addHeapObject(ret); }; imports.wbg.__wbg_node_61b8c9a82499895d = function(arg0) { - var ret = getObject(arg0).node; + const ret = getObject(arg0).node; return addHeapObject(ret); }; imports.wbg.__wbg_static_accessor_NODE_MODULE_33b45247c55045b0 = function() { - var ret = module; + const ret = module; return addHeapObject(ret); }; imports.wbg.__wbg_require_2a93bc09fee45aca = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2)); + const ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); }, arguments) }; imports.wbg.__wbg_crypto_2f56257a38275dbd = function(arg0) { - var ret = getObject(arg0).crypto; + const ret = getObject(arg0).crypto; return addHeapObject(ret); }; imports.wbg.__wbg_msCrypto_d07655bf62361f21 = function(arg0) { - var ret = getObject(arg0).msCrypto; + const ret = getObject(arg0).msCrypto; return addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) { - var ret = getObject(arg0) instanceof Window; + imports.wbg.__wbg_instanceof_Window_0e6c0f1096d66c3c = function(arg0) { + const ret = getObject(arg0) instanceof Window; return ret; }; - imports.wbg.__wbg_navigator_0e0588c949560476 = function(arg0) { - var ret = getObject(arg0).navigator; + imports.wbg.__wbg_navigator_1f72d7edb7b4c387 = function(arg0) { + const ret = getObject(arg0).navigator; return addHeapObject(ret); }; - imports.wbg.__wbg_setTimeout_1c75092906446b91 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).setTimeout(getObject(arg1), arg2); + imports.wbg.__wbg_setTimeout_a100c5fd6f7b2032 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).setTimeout(getObject(arg1), arg2); return ret; }, arguments) }; - imports.wbg.__wbg_debug_6df4b1a327dd2e94 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_debug_36a773d49b063572 = function(arg0, arg1, arg2, arg3) { console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); }; - imports.wbg.__wbg_error_ca520cb687b085a1 = function(arg0) { + imports.wbg.__wbg_error_8ff19d586a987aef = function(arg0) { console.error(getObject(arg0)); }; - imports.wbg.__wbg_error_644d3bc8c0537e80 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_error_2bd80fa6a8a2a2f8 = function(arg0, arg1, arg2, arg3) { console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); }; - imports.wbg.__wbg_info_8bed0988e7416289 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_info_db0d129f2154d4c8 = function(arg0, arg1, arg2, arg3) { console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); }; - imports.wbg.__wbg_log_681299aef22afa27 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_log_b0c9d8633cc17060 = function(arg0, arg1, arg2, arg3) { console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); }; - imports.wbg.__wbg_warn_ca021eeadd0df9cd = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_warn_e797461046a6b725 = function(arg0, arg1, arg2, arg3) { console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); }; - imports.wbg.__wbg_code_32a97f32b2304d71 = function(arg0) { - var ret = getObject(arg0).code; + imports.wbg.__wbg_code_2c018f346a95f33d = function(arg0) { + const ret = getObject(arg0).code; return ret; }; - imports.wbg.__wbg_reason_51cb1f322946c0a8 = function(arg0, arg1) { - var ret = getObject(arg1).reason; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_reason_0a29e5ce7c3ef62d = function(arg0, arg1) { + const ret = getObject(arg1).reason; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_replaceTrack_1b05265193c931e5 = function(arg0, arg1) { - var ret = getObject(arg0).replaceTrack(getObject(arg1)); + imports.wbg.__wbg_replaceTrack_2ff427b448d8267f = function(arg0, arg1) { + const ret = getObject(arg0).replaceTrack(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_now_5fa0ca001e042f8a = function(arg0) { - var ret = getObject(arg0).now(); + imports.wbg.__wbg_now_20d2aadcf3cc17f7 = function(arg0) { + const ret = getObject(arg0).now(); return ret; }; - imports.wbg.__wbg_data_44aaea098b9f4c6b = function(arg0) { - var ret = getObject(arg0).data; + imports.wbg.__wbg_data_9ccfa9ae4eb71e78 = function(arg0) { + const ret = getObject(arg0).data; return addHeapObject(ret); }; - imports.wbg.__wbg_enumerateDevices_dd9d2792dc481184 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).enumerateDevices(); + imports.wbg.__wbg_enumerateDevices_4116b72342914d4f = function() { return handleError(function (arg0) { + const ret = getObject(arg0).enumerateDevices(); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_getDisplayMedia_df053cf5443424c5 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).getDisplayMedia(getObject(arg1)); + imports.wbg.__wbg_getDisplayMedia_6df4a5b8cf9ef154 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).getDisplayMedia(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_getUserMedia_55aa2788a18b9774 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).getUserMedia(getObject(arg1)); + imports.wbg.__wbg_getUserMedia_a9a567a3d9b24f17 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).getUserMedia(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_track_4ccdf1baaba23079 = function(arg0) { - var ret = getObject(arg0).track; + imports.wbg.__wbg_track_66877c6d504c8e00 = function(arg0) { + const ret = getObject(arg0).track; return addHeapObject(ret); }; - imports.wbg.__wbg_transceiver_b1f6f687e323aa2b = function(arg0) { - var ret = getObject(arg0).transceiver; + imports.wbg.__wbg_transceiver_1510347ee0e6ea93 = function(arg0) { + const ret = getObject(arg0).transceiver; return addHeapObject(ret); }; - imports.wbg.__wbg_candidate_f4af4aaedf706289 = function(arg0, arg1) { - var ret = getObject(arg1).candidate; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_candidate_3a423b30a4545015 = function(arg0, arg1) { + const ret = getObject(arg1).candidate; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_sdpMid_9318f9d860ed4841 = function(arg0, arg1) { - var ret = getObject(arg1).sdpMid; + imports.wbg.__wbg_sdpMid_09acd4beb6a20256 = function(arg0, arg1) { + const ret = getObject(arg1).sdpMid; var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_sdpMLineIndex_fb37ae5073ed3f68 = function(arg0) { - var ret = getObject(arg0).sdpMLineIndex; + imports.wbg.__wbg_sdpMLineIndex_e2e8c2d05b9a51ae = function(arg0) { + const ret = getObject(arg0).sdpMLineIndex; return isLikeNone(ret) ? 0xFFFFFF : ret; }; - imports.wbg.__wbg_candidate_0c0b5e21bdceb48e = function(arg0) { - var ret = getObject(arg0).candidate; + imports.wbg.__wbg_candidate_7d643aca4d6f96d6 = function(arg0) { + const ret = getObject(arg0).candidate; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_iceConnectionState_925970df8128ea7d = function(arg0) { - var ret = getObject(arg0).iceConnectionState; + imports.wbg.__wbg_iceConnectionState_3956f533c132e24c = function(arg0) { + const ret = getObject(arg0).iceConnectionState; return addHeapObject(ret); }; - imports.wbg.__wbg_newwithconfiguration_fdd8e086bd06b548 = function() { return handleError(function (arg0) { - var ret = new RTCPeerConnection(getObject(arg0)); + imports.wbg.__wbg_newwithconfiguration_9391f5ab68b83330 = function() { return handleError(function (arg0) { + const ret = new RTCPeerConnection(getObject(arg0)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_addIceCandidate_189b0ddb4bda9265 = function(arg0, arg1) { - var ret = getObject(arg0).addIceCandidate(getObject(arg1)); + imports.wbg.__wbg_addIceCandidate_ec548ec2ed10d777 = function(arg0, arg1) { + const ret = getObject(arg0).addIceCandidate(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_addTransceiver_a5dcd1dfd8703ba2 = function(arg0, arg1, arg2, arg3) { - var ret = getObject(arg0).addTransceiver(getStringFromWasm0(arg1, arg2), getObject(arg3)); + imports.wbg.__wbg_addTransceiver_837916397e5e4c70 = function(arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).addTransceiver(getStringFromWasm0(arg1, arg2), getObject(arg3)); return addHeapObject(ret); }; - imports.wbg.__wbg_close_e022b407c0bf6a74 = function(arg0) { + imports.wbg.__wbg_close_088f92ce97c59258 = function(arg0) { getObject(arg0).close(); }; - imports.wbg.__wbg_createAnswer_c0cb49912efe992a = function(arg0) { - var ret = getObject(arg0).createAnswer(); + imports.wbg.__wbg_createAnswer_b24141d037f45277 = function(arg0) { + const ret = getObject(arg0).createAnswer(); return addHeapObject(ret); }; - imports.wbg.__wbg_createOffer_4ca6c4468e5aa9b0 = function(arg0, arg1) { - var ret = getObject(arg0).createOffer(getObject(arg1)); + imports.wbg.__wbg_createOffer_1c25868bfc370339 = function(arg0, arg1) { + const ret = getObject(arg0).createOffer(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_getStats_b8d8cb0371cf5e75 = function(arg0) { - var ret = getObject(arg0).getStats(); + imports.wbg.__wbg_getStats_fa7c30988a05351f = function(arg0) { + const ret = getObject(arg0).getStats(); return addHeapObject(ret); }; - imports.wbg.__wbg_getTransceivers_2d591fea77ede751 = function(arg0) { - var ret = getObject(arg0).getTransceivers(); + imports.wbg.__wbg_getTransceivers_3864576db26c08de = function(arg0) { + const ret = getObject(arg0).getTransceivers(); return addHeapObject(ret); }; - imports.wbg.__wbg_setLocalDescription_7063a95d5b0f6d3a = function(arg0, arg1) { - var ret = getObject(arg0).setLocalDescription(getObject(arg1)); + imports.wbg.__wbg_setLocalDescription_4108b903b7b448bb = function(arg0, arg1) { + const ret = getObject(arg0).setLocalDescription(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_setRemoteDescription_627f057fec1b43ab = function(arg0, arg1) { - var ret = getObject(arg0).setRemoteDescription(getObject(arg1)); + imports.wbg.__wbg_setRemoteDescription_95f2e370c6358867 = function(arg0, arg1) { + const ret = getObject(arg0).setRemoteDescription(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_kind_2675ed94f8d218d0 = function(arg0, arg1) { - var ret = getObject(arg1).kind; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_kind_347794b3b79c7675 = function(arg0, arg1) { + const ret = getObject(arg1).kind; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_id_4e75a22c36e1059f = function(arg0, arg1) { - var ret = getObject(arg1).id; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_id_ec934d9f7522a785 = function(arg0, arg1) { + const ret = getObject(arg1).id; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_setenabled_2ecb88f65a56a93d = function(arg0, arg1) { + imports.wbg.__wbg_setenabled_73fd5fdfaa28ebbe = function(arg0, arg1) { getObject(arg0).enabled = arg1 !== 0; }; - imports.wbg.__wbg_readyState_c5f5945b31c24284 = function(arg0) { - var ret = getObject(arg0).readyState; + imports.wbg.__wbg_readyState_3dfb42b5d27650b8 = function(arg0) { + const ret = getObject(arg0).readyState; return addHeapObject(ret); }; - imports.wbg.__wbg_clone_2db71c8c551ce4f0 = function(arg0) { - var ret = getObject(arg0).clone(); + imports.wbg.__wbg_clone_3668dc8b05c0e7a5 = function(arg0) { + const ret = getObject(arg0).clone(); return addHeapObject(ret); }; - imports.wbg.__wbg_getSettings_1c266d3cf8287c34 = function(arg0) { - var ret = getObject(arg0).getSettings(); + imports.wbg.__wbg_getSettings_c8fcd449273a41c4 = function(arg0) { + const ret = getObject(arg0).getSettings(); return addHeapObject(ret); }; - imports.wbg.__wbg_stop_193f790c38f39d77 = function(arg0) { + imports.wbg.__wbg_stop_4864eb4081f8d428 = function(arg0) { getObject(arg0).stop(); }; - imports.wbg.__wbg_mid_fea259559e349485 = function(arg0, arg1) { - var ret = getObject(arg1).mid; + imports.wbg.__wbg_mid_13247cd81f27bb44 = function(arg0, arg1) { + const ret = getObject(arg1).mid; var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_sender_0d519e09749ec40b = function(arg0) { - var ret = getObject(arg0).sender; + imports.wbg.__wbg_sender_023d2c0af9e0a864 = function(arg0) { + const ret = getObject(arg0).sender; return addHeapObject(ret); }; - imports.wbg.__wbg_stopped_fccb7b580cdd115e = function(arg0) { - var ret = getObject(arg0).stopped; + imports.wbg.__wbg_stopped_a4d4cac8624b16e0 = function(arg0) { + const ret = getObject(arg0).stopped; return ret; }; - imports.wbg.__wbg_direction_ae94b70b1cbadd1d = function(arg0) { - var ret = getObject(arg0).direction; + imports.wbg.__wbg_direction_42d86436b61e4fb2 = function(arg0) { + const ret = getObject(arg0).direction; return addHeapObject(ret); }; - imports.wbg.__wbg_setdirection_4f3b55edf4c1bb41 = function(arg0, arg1) { + imports.wbg.__wbg_setdirection_d0b37f157d411c44 = function(arg0, arg1) { getObject(arg0).direction = takeObject(arg1); }; - imports.wbg.__wbg_sdp_cfdb4ca5db1f89f8 = function(arg0, arg1) { - var ret = getObject(arg1).sdp; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_sdp_e4a7ba17f5382b98 = function(arg0, arg1) { + const ret = getObject(arg1).sdp; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_mediaDevices_931f35a83dbb1470 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).mediaDevices; + imports.wbg.__wbg_mediaDevices_12ba679f3f68473d = function() { return handleError(function (arg0) { + const ret = getObject(arg0).mediaDevices; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_getTracks_ba7ed3118f55bfb4 = function(arg0) { - var ret = getObject(arg0).getTracks(); + imports.wbg.__wbg_getTracks_3752c50f70020e43 = function(arg0) { + const ret = getObject(arg0).getTracks(); return addHeapObject(ret); }; - imports.wbg.__wbg_new_9d38005ad72b669a = function() { return handleError(function (arg0, arg1) { - var ret = new WebSocket(getStringFromWasm0(arg0, arg1)); + imports.wbg.__wbg_new_8c0a774383a8516d = function() { return handleError(function (arg0, arg1) { + const ret = new WebSocket(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_close_a9201eb665c13af3 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_close_758123861583a759 = function() { return handleError(function (arg0, arg1, arg2, arg3) { getObject(arg0).close(arg1, getStringFromWasm0(arg2, arg3)); }, arguments) }; - imports.wbg.__wbg_send_2bad75269a8cc966 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_send_17ffe30ae8fb4adb = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).send(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_addEventListener_6bdba88519fdc1c9 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_addEventListener_78d3aa7e06ee5b73 = function() { return handleError(function (arg0, arg1, arg2, arg3) { getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3)); }, arguments) }; - imports.wbg.__wbg_removeEventListener_8d16089e686f486a = function() { return handleError(function (arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_removeEventListener_ab2f93784dae0528 = function() { return handleError(function (arg0, arg1, arg2, arg3) { getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3)); }, arguments) }; - imports.wbg.__wbg_deviceId_b2f8c2009a30d737 = function(arg0, arg1) { - var ret = getObject(arg1).deviceId; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_deviceId_0217c96c1e009d98 = function(arg0, arg1) { + const ret = getObject(arg1).deviceId; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_kind_9192ec36f0ed987a = function(arg0) { - var ret = getObject(arg0).kind; + imports.wbg.__wbg_kind_826b953a62f4042d = function(arg0) { + const ret = getObject(arg0).kind; return addHeapObject(ret); }; - imports.wbg.__wbg_label_fa1157aba8d05487 = function(arg0, arg1) { - var ret = getObject(arg1).label; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_label_ec2c01649dbfdfb1 = function(arg0, arg1) { + const ret = getObject(arg1).label; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_groupId_1c50c0815e1d49b0 = function(arg0, arg1) { - var ret = getObject(arg1).groupId; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + imports.wbg.__wbg_groupId_3dcbd781d9a7f408 = function(arg0, arg1) { + const ret = getObject(arg1).groupId; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_get_f45dff51f52d7222 = function(arg0, arg1) { - var ret = getObject(arg0)[arg1 >>> 0]; + imports.wbg.__wbg_get_590a2cd912f2ae46 = function(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; return addHeapObject(ret); }; - imports.wbg.__wbg_new_16f24b0728c5e67b = function() { - var ret = new Array(); + imports.wbg.__wbg_new_94fb1279cf6afea5 = function() { + const ret = new Array(); return addHeapObject(ret); }; imports.wbg.__wbindgen_is_function = function(arg0) { - var ret = typeof(getObject(arg0)) === 'function'; + const ret = typeof(getObject(arg0)) === 'function'; return ret; }; - imports.wbg.__wbg_newnoargs_f579424187aa1717 = function(arg0, arg1) { - var ret = new Function(getStringFromWasm0(arg0, arg1)); + imports.wbg.__wbg_newnoargs_e23b458e372830de = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_next_c7a2a6b012059a5e = function(arg0) { - var ret = getObject(arg0).next; + imports.wbg.__wbg_next_cabb70b365520721 = function(arg0) { + const ret = getObject(arg0).next; return addHeapObject(ret); }; - imports.wbg.__wbg_next_dd1a890d37e38d73 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).next(); + imports.wbg.__wbg_next_bf3d83fc18df496e = function() { return handleError(function (arg0) { + const ret = getObject(arg0).next(); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_done_982b1c7ac0cbc69d = function(arg0) { - var ret = getObject(arg0).done; + imports.wbg.__wbg_done_040f966faa9a72b3 = function(arg0) { + const ret = getObject(arg0).done; return ret; }; - imports.wbg.__wbg_value_2def2d1fb38b02cd = function(arg0) { - var ret = getObject(arg0).value; + imports.wbg.__wbg_value_419afbd9b9574c4c = function(arg0) { + const ret = getObject(arg0).value; return addHeapObject(ret); }; - imports.wbg.__wbg_iterator_4b9cedbeda0c0e30 = function() { - var ret = Symbol.iterator; + imports.wbg.__wbg_iterator_4832ef1f15b0382b = function() { + const ret = Symbol.iterator; return addHeapObject(ret); }; - imports.wbg.__wbg_get_8bbb82393651dd9c = function() { return handleError(function (arg0, arg1) { - var ret = Reflect.get(getObject(arg0), getObject(arg1)); + imports.wbg.__wbg_get_a9cab131e3152c49 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_call_89558c3e96703ca1 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).call(getObject(arg1)); + imports.wbg.__wbg_call_ae78342adc33730a = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_new_d3138911a89329b0 = function() { - var ret = new Object(); + imports.wbg.__wbg_new_36359baae5a47e27 = function() { + const ret = new Object(); return addHeapObject(ret); }; - imports.wbg.__wbg_from_4216160a11e086ef = function(arg0) { - var ret = Array.from(getObject(arg0)); + imports.wbg.__wbg_from_7b9a99a7cd3ef15f = function(arg0) { + const ret = Array.from(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_push_a72df856079e6930 = function(arg0, arg1) { - var ret = getObject(arg0).push(getObject(arg1)); + imports.wbg.__wbg_push_40c6a90f1805aa90 = function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); return ret; }; - imports.wbg.__wbg_values_71935f80778b5113 = function(arg0) { - var ret = getObject(arg0).values(); + imports.wbg.__wbg_values_b1b9e8c63dbe01c2 = function(arg0) { + const ret = getObject(arg0).values(); return addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_Error_4287ce7d75f0e3a2 = function(arg0) { - var ret = getObject(arg0) instanceof Error; + imports.wbg.__wbg_instanceof_Error_b074c76f6096db9b = function(arg0) { + const ret = getObject(arg0) instanceof Error; return ret; }; - imports.wbg.__wbg_new_55259b13834a484c = function(arg0, arg1) { - var ret = new Error(getStringFromWasm0(arg0, arg1)); + imports.wbg.__wbg_new_3047bf4b4f02b802 = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_toString_3e854a6a919f2996 = function(arg0) { - var ret = getObject(arg0).toString(); + imports.wbg.__wbg_toString_eec28c54c24b830b = function(arg0) { + const ret = getObject(arg0).toString(); return addHeapObject(ret); }; - imports.wbg.__wbg_call_94697a95cb7e239c = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + imports.wbg.__wbg_call_3ed288a247f13ea5 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_is_3d73f4d91adacc37 = function(arg0, arg1) { - var ret = Object.is(getObject(arg0), getObject(arg1)); + imports.wbg.__wbg_is_40969b082b54c84d = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); return ret; }; - imports.wbg.__wbg_new_4beacc9c71572250 = function(arg0, arg1) { + imports.wbg.__wbg_new_37705eed627d5ed9 = function(arg0, arg1) { try { var state0 = {a: arg0, b: arg1}; var cb0 = (arg0, arg1) => { @@ -3041,71 +3041,71 @@ async function init(input) { state0.a = a; } }; - var ret = new Promise(cb0); + const ret = new Promise(cb0); return addHeapObject(ret); } finally { state0.a = state0.b = 0; } }; - imports.wbg.__wbg_resolve_4f8f547f26b30b27 = function(arg0) { - var ret = Promise.resolve(getObject(arg0)); + imports.wbg.__wbg_resolve_a9a87bdd64e9e62c = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_a6860c82b90816ca = function(arg0, arg1) { - var ret = getObject(arg0).then(getObject(arg1)); + imports.wbg.__wbg_then_ce526c837d07b68f = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_58a04e42527f52c6 = function(arg0, arg1, arg2) { - var ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + imports.wbg.__wbg_then_842e65b843962f56 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }; - imports.wbg.__wbg_self_e23d74ae45fb17d1 = function() { return handleError(function () { - var ret = self.self; + imports.wbg.__wbg_self_99737b4dcdf6f0d8 = function() { return handleError(function () { + const ret = self.self; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_window_b4be7f48b24ac56e = function() { return handleError(function () { - var ret = window.window; + imports.wbg.__wbg_window_9b61fbbf3564c4fb = function() { return handleError(function () { + const ret = window.window; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_globalThis_d61b1f48a57191ae = function() { return handleError(function () { - var ret = globalThis.globalThis; + imports.wbg.__wbg_globalThis_8e275ef40caea3a3 = function() { return handleError(function () { + const ret = globalThis.globalThis; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_global_e7669da72fd7f239 = function() { return handleError(function () { - var ret = global.global; + imports.wbg.__wbg_global_5de1e0f82bddcd27 = function() { return handleError(function () { + const ret = global.global; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_buffer_5e74a88a1424a2e0 = function(arg0) { - var ret = getObject(arg0).buffer; + imports.wbg.__wbg_buffer_7af23f65f6c64548 = function(arg0) { + const ret = getObject(arg0).buffer; return addHeapObject(ret); }; - imports.wbg.__wbg_new_e3b800e570795b3c = function(arg0) { - var ret = new Uint8Array(getObject(arg0)); + imports.wbg.__wbg_new_cc9018bd6f283b6f = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_set_5b8081e9d002f0df = function(arg0, arg1, arg2) { + imports.wbg.__wbg_set_f25e869e4565d2a2 = function(arg0, arg1, arg2) { getObject(arg0).set(getObject(arg1), arg2 >>> 0); }; - imports.wbg.__wbg_length_30803400a8f15c59 = function(arg0) { - var ret = getObject(arg0).length; + imports.wbg.__wbg_length_0acb1cf9bbaf8519 = function(arg0) { + const ret = getObject(arg0).length; return ret; }; - imports.wbg.__wbg_newwithlength_5f4ce114a24dfe1e = function(arg0) { - var ret = new Uint8Array(arg0 >>> 0); + imports.wbg.__wbg_newwithlength_8f0657faca9f1422 = function(arg0) { + const ret = new Uint8Array(arg0 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_subarray_a68f835ca2af506f = function(arg0, arg1, arg2) { - var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + imports.wbg.__wbg_subarray_da527dbd24eafb6b = function(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_set_c42875065132a932 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + imports.wbg.__wbg_set_93b1c87ee2af852e = function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); return ret; }, arguments) }; imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - var ret = debugString(getObject(arg1)); - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; + const ret = debugString(getObject(arg1)); + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; @@ -3113,31 +3113,31 @@ async function init(input) { throw new Error(getStringFromWasm0(arg0, arg1)); }; imports.wbg.__wbindgen_memory = function() { - var ret = wasm.memory; + const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper572 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 73, __wbg_adapter_32); + imports.wbg.__wbindgen_closure_wrapper590 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 142, __wbg_adapter_32); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper573 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 73, __wbg_adapter_35); + imports.wbg.__wbindgen_closure_wrapper591 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 142, __wbg_adapter_35); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper574 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 73, __wbg_adapter_38); + imports.wbg.__wbindgen_closure_wrapper592 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 142, __wbg_adapter_38); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper575 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 73, __wbg_adapter_41); + imports.wbg.__wbindgen_closure_wrapper593 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 142, __wbg_adapter_41); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper583 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 73, __wbg_adapter_44); + imports.wbg.__wbindgen_closure_wrapper601 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 142, __wbg_adapter_44); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2835 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 798, __wbg_adapter_47); + imports.wbg.__wbindgen_closure_wrapper2860 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 802, __wbg_adapter_47); return addHeapObject(ret); }; diff --git a/flutter/assets/pkg/medea_jason_bg.wasm b/flutter/assets/pkg/medea_jason_bg.wasm index d9133d366..f469ee2a1 100644 Binary files a/flutter/assets/pkg/medea_jason_bg.wasm and b/flutter/assets/pkg/medea_jason_bg.wasm differ diff --git a/flutter/example/lib/call_route.dart b/flutter/example/lib/call_route.dart index c511c7b27..b8467e36e 100644 --- a/flutter/example/lib/call_route.dart +++ b/flutter/example/lib/call_route.dart @@ -31,7 +31,7 @@ class _CallState extends State { _call.onNewRemoteStream((track) async { var renderer = createVideoRenderer(); await renderer.initialize(); - renderer.srcObject = track; + await renderer.setSrcObject(track); setState(() { _videos.add(VideoView(renderer)); }); @@ -39,7 +39,7 @@ class _CallState extends State { _call.onLocalStream((track) async { var renderer = createVideoRenderer(); await renderer.initialize(); - renderer.srcObject = track; + await renderer.setSrcObject(track); setState(() { _videos.add(VideoView(renderer, mirror: true)); }); diff --git a/flutter/example/linux/flutter/generated_plugin_registrant.cc b/flutter/example/linux/flutter/generated_plugin_registrant.cc index 05f7d5d5d..65a299bd9 100644 --- a/flutter/example/linux/flutter/generated_plugin_registrant.cc +++ b/flutter/example/linux/flutter/generated_plugin_registrant.cc @@ -6,9 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); + flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); g_autoptr(FlPluginRegistrar) medea_jason_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "MedeaJasonPlugin"); medea_jason_plugin_register_with_registrar(medea_jason_registrar); diff --git a/flutter/example/linux/flutter/generated_plugins.cmake b/flutter/example/linux/flutter/generated_plugins.cmake index 167dbacc4..18c97d06b 100644 --- a/flutter/example/linux/flutter/generated_plugins.cmake +++ b/flutter/example/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_webrtc medea_jason ) diff --git a/flutter/example/pubspec.lock b/flutter/example/pubspec.lock index 637c2f063..08e129b6b 100644 --- a/flutter/example/pubspec.lock +++ b/flutter/example/pubspec.lock @@ -1,6 +1,20 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "38.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" archive: dependency: transitive description: @@ -8,6 +22,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.11" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" async: dependency: transitive description: @@ -22,6 +43,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" characters: dependency: transitive description: @@ -36,6 +71,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" clock: dependency: transitive description: @@ -50,6 +92,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" crypto: dependency: transitive description: @@ -64,13 +113,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.4" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" ffi: dependency: transitive description: @@ -95,6 +151,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_rust_bridge: + dependency: transitive + description: + name: flutter_rust_bridge + url: "https://pub.dartlang.org" + source: hosted + version: "1.25.0" flutter_test: dependency: "direct dev" description: flutter @@ -105,15 +168,36 @@ packages: description: path: "." ref: HEAD - resolved-ref: "7f3a6339ee983632a6af263d1000cd7ede180985" + resolved-ref: e06ae2115c1e6d56e5f29b093d81296e18d143b4 url: "https://github.com/instrumentisto/flutter-webrtc.git" source: git - version: "0.7.0+hotfix.2" + version: "0.8.0-dev" + freezed: + dependency: transitive + description: + name: freezed + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" integration_test: dependency: "direct dev" description: flutter @@ -126,6 +210,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.6.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.4.0" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" matcher: dependency: transitive description: @@ -154,62 +252,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.1" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.9" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.12" - path_provider_ios: - dependency: transitive - description: - name: path_provider_ios - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.8" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.5" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.5" - path_provider_platform_interface: + package_config: dependency: transitive description: - name: path_provider_platform_interface + name: package_config url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" - path_provider_windows: + version: "2.0.2" + path: dependency: transitive description: - name: path_provider_windows + name: path url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "1.8.1" pedantic: dependency: "direct dev" description: @@ -224,25 +280,39 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.0" - plugin_platform_interface: + process: dependency: transitive description: - name: plugin_platform_interface + name: process url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" - process: + version: "4.2.4" + pub_semver: dependency: transitive description: - name: process + name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "4.2.4" + version: "2.1.1" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.2" source_span: dependency: transitive description: @@ -312,28 +382,28 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "8.2.1" - webdriver: + version: "8.2.2" + watcher: dependency: transitive description: - name: webdriver + name: watcher url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" - win32: + version: "1.0.1" + webdriver: dependency: transitive description: - name: win32 + name: webdriver url: "https://pub.dartlang.org" source: hosted - version: "2.4.4" - xdg_directories: + version: "3.0.0" + yaml: dependency: transitive description: - name: xdg_directories + name: yaml url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+1" + version: "3.1.0" sdks: - dart: ">=2.16.0-100.0.dev <3.0.0" - flutter: ">=2.8.0" + dart: ">=2.17.0-0 <3.0.0" + flutter: ">=2.0.0" diff --git a/flutter/lib/src/interface/local_media_track.dart b/flutter/lib/src/interface/local_media_track.dart index 893fce915..f82c15d46 100644 --- a/flutter/lib/src/interface/local_media_track.dart +++ b/flutter/lib/src/interface/local_media_track.dart @@ -1,4 +1,4 @@ -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import '/src/util/rust_handles_storage.dart'; import 'track_kinds.dart'; @@ -21,5 +21,5 @@ abstract class LocalMediaTrack implements PlatformHandle { MediaSourceKind mediaSourceKind(); /// Returns underlying [MediaStreamTrack] of this [LocalMediaTrack]. - MediaStreamTrack getTrack(); + webrtc.MediaStreamTrack getTrack(); } diff --git a/flutter/lib/src/interface/remote_media_track.dart b/flutter/lib/src/interface/remote_media_track.dart index cf7fea401..29cd35a8e 100644 --- a/flutter/lib/src/interface/remote_media_track.dart +++ b/flutter/lib/src/interface/remote_media_track.dart @@ -1,4 +1,4 @@ -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import '/src/util/rust_handles_storage.dart'; import 'track_kinds.dart'; @@ -19,8 +19,8 @@ abstract class RemoteMediaTrack implements PlatformHandle { /// Returns this [RemoteMediaTrack]'s media source kind (device/display). MediaSourceKind mediaSourceKind(); - /// Returns underlying [MediaStreamTrack] of this [LocalMediaTrack]. - MediaStreamTrack getTrack(); + /// Returns underlying [webrtc.MediaStreamTrack] of this [LocalMediaTrack]. + webrtc.MediaStreamTrack getTrack(); /// Sets callback, invoked when this [RemoteMediaTrack] is enabled. void onEnabled(void Function() f); diff --git a/flutter/lib/src/native/local_media_track.dart b/flutter/lib/src/native/local_media_track.dart index 4280c76fe..6274f6171 100644 --- a/flutter/lib/src/native/local_media_track.dart +++ b/flutter/lib/src/native/local_media_track.dart @@ -1,6 +1,6 @@ import 'dart:ffi'; -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import '../interface/local_media_track.dart'; import '../interface/track_kinds.dart'; @@ -55,8 +55,8 @@ class NativeLocalMediaTrack extends LocalMediaTrack { } @override - MediaStreamTrack getTrack() { - return _getTrack(ptr.getInnerPtr()) as MediaStreamTrack; + webrtc.MediaStreamTrack getTrack() { + return _getTrack(ptr.getInnerPtr()) as webrtc.MediaStreamTrack; } @moveSemantics diff --git a/flutter/lib/src/native/platform/constraints.dart b/flutter/lib/src/native/platform/constraints.dart index 5a3966c82..49cf74d73 100644 --- a/flutter/lib/src/native/platform/constraints.dart +++ b/flutter/lib/src/native/platform/constraints.dart @@ -13,7 +13,7 @@ void registerFunctions(DynamicLibrary dl) { bridge.registerFunction( dl, initDeviceConstraints: Pointer.fromFunction(_newDeviceConstraints), - initDisplayConstraints: Pointer.fromFunction(_newDisplayConstaints), + initDisplayConstraints: Pointer.fromFunction(_newDisplayConstraints), newVideoConstraints: Pointer.fromFunction(_newVideoConstraints), newAudioConstraints: Pointer.fromFunction(_newAudioConstraints), setVideoConstraintValue: Pointer.fromFunction(_setVideoConstraintValue), @@ -54,7 +54,7 @@ Object _newDeviceConstraints() { } ///Returns new empty [DisplayConstraints]. -Object _newDisplayConstaints() { +Object _newDisplayConstraints() { return DisplayConstraints(); } diff --git a/flutter/lib/src/native/platform/media_devices.dart b/flutter/lib/src/native/platform/media_devices.dart index 0b77bc1f9..7a5ef3aad 100644 --- a/flutter/lib/src/native/platform/media_devices.dart +++ b/flutter/lib/src/native/platform/media_devices.dart @@ -2,8 +2,7 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; -import 'package:flutter_webrtc/flutter_webrtc.dart'; -import 'package:flutter_webrtc/src/model/constraints.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import 'media_devices.g.dart' as bridge; @@ -19,28 +18,28 @@ void registerFunctions(DynamicLibrary dl) { ); } -/// Requests media input access and returns the created [MediaStreamTrack]s. -Object _getUserMedia(DeviceConstraints constraints) { - return () => getUserMedia(constraints); +/// Requests media input access and returns the created [webrtc.MediaStreamTrack]s. +Object _getUserMedia(webrtc.DeviceConstraints constraints) { + return () => webrtc.getUserMedia(constraints); } /// Returns all the available media devices. Object _enumerateDevices() { - return () => enumerateDevices(); + return () => webrtc.enumerateDevices(); } /// Starts capturing the contents of a display and returns the created -/// [MediaStreamTrack]s. -Object _getDisplayMedia(DisplayConstraints constraints) { - return () => getDisplayMedia(constraints); +/// [webrtc.MediaStreamTrack]s. +Object _getDisplayMedia(webrtc.DisplayConstraints constraints) { + return () => webrtc.getDisplayMedia(constraints); } /// Switches output audio device to the device with the provided [deviceId]. Object _setOutputAudioId(Pointer deviceId) { - return () => setOutputAudioId(deviceId.toDartString()); + return () => webrtc.setOutputAudioId(deviceId.toDartString()); } /// Subscribes onto the `MediaDevices`'s `devicechange` event. void _onDeviceChange(Function cb) { - onDeviceChange(() => cb(null)); + webrtc.onDeviceChange(() => cb(null)); } diff --git a/flutter/lib/src/native/platform/media_track.dart b/flutter/lib/src/native/platform/media_track.dart index aaf7d9d3d..ef7e62764 100644 --- a/flutter/lib/src/native/platform/media_track.dart +++ b/flutter/lib/src/native/platform/media_track.dart @@ -2,7 +2,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart'; -import 'package:flutter_webrtc/src/model/track.dart'; import 'package:medea_jason/src/native/ffi/foreign_value.dart'; import 'media_track.g.dart' as bridge; diff --git a/flutter/lib/src/native/platform/peer_connection.dart b/flutter/lib/src/native/platform/peer_connection.dart index af5101591..82ac3327b 100644 --- a/flutter/lib/src/native/platform/peer_connection.dart +++ b/flutter/lib/src/native/platform/peer_connection.dart @@ -2,11 +2,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart'; -import 'package:flutter_webrtc/src/model/ice.dart'; -import 'package:flutter_webrtc/src/model/peer.dart'; -import 'package:flutter_webrtc/src/model/sdp.dart'; -import 'package:flutter_webrtc/src/model/track.dart'; -import 'package:flutter_webrtc/src/model/transceiver.dart'; import 'peer_connection.g.dart' as bridge; import '../ffi/foreign_value.dart'; diff --git a/flutter/lib/src/native/platform/transceiver.dart b/flutter/lib/src/native/platform/transceiver.dart index a2eb29b5d..9da9f64cf 100644 --- a/flutter/lib/src/native/platform/transceiver.dart +++ b/flutter/lib/src/native/platform/transceiver.dart @@ -1,7 +1,6 @@ import 'dart:ffi'; import 'package:flutter_webrtc/flutter_webrtc.dart'; -import 'package:flutter_webrtc/src/model/transceiver.dart'; import 'package:medea_jason/src/native/ffi/foreign_value.dart'; import 'transceiver.g.dart' as bridge; diff --git a/flutter/lib/src/native/remote_media_track.dart b/flutter/lib/src/native/remote_media_track.dart index b4cae9fc7..b312f0292 100644 --- a/flutter/lib/src/native/remote_media_track.dart +++ b/flutter/lib/src/native/remote_media_track.dart @@ -1,6 +1,6 @@ import 'dart:ffi'; -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import '../interface/remote_media_track.dart'; import '../interface/track_kinds.dart'; @@ -107,8 +107,8 @@ class NativeRemoteMediaTrack extends RemoteMediaTrack { } @override - MediaStreamTrack getTrack() { - return _getTrack(ptr.getInnerPtr()) as MediaStreamTrack; + webrtc.MediaStreamTrack getTrack() { + return _getTrack(ptr.getInnerPtr()) as webrtc.MediaStreamTrack; } @override diff --git a/flutter/lib/src/web/local_media_track.dart b/flutter/lib/src/web/local_media_track.dart index 7b1ca243b..4728a3463 100644 --- a/flutter/lib/src/web/local_media_track.dart +++ b/flutter/lib/src/web/local_media_track.dart @@ -1,5 +1,5 @@ import 'package:flutter_webrtc/src/platform/web/media_stream_track.dart'; -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import '../interface/local_media_track.dart'; import '../interface/track_kinds.dart'; @@ -24,7 +24,7 @@ class WebLocalMediaTrack extends LocalMediaTrack { } @override - MediaStreamTrack getTrack() { + webrtc.MediaStreamTrack getTrack() { return fallibleFunction(() => WebMediaStreamTrack(obj.get_track())); } diff --git a/flutter/lib/src/web/remote_media_track.dart b/flutter/lib/src/web/remote_media_track.dart index 577b3c136..3841c6f89 100644 --- a/flutter/lib/src/web/remote_media_track.dart +++ b/flutter/lib/src/web/remote_media_track.dart @@ -1,4 +1,4 @@ -import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc; import 'package:flutter_webrtc/src/platform/web/media_stream_track.dart'; import 'package:js/js.dart'; @@ -35,7 +35,7 @@ class WebRemoteMediaTrack extends RemoteMediaTrack { } @override - MediaStreamTrack getTrack() { + webrtc.MediaStreamTrack getTrack() { return fallibleFunction(() => WebMediaStreamTrack(obj.get_track())); } diff --git a/flutter/linux/lib/x86_64-unknown-linux-gnu/libmedea_jason.so b/flutter/linux/lib/x86_64-unknown-linux-gnu/libmedea_jason.so index 70bb50d55..2902a343a 100755 Binary files a/flutter/linux/lib/x86_64-unknown-linux-gnu/libmedea_jason.so and b/flutter/linux/lib/x86_64-unknown-linux-gnu/libmedea_jason.so differ diff --git a/flutter/windows/lib/x86_64-pc-windows-msvc/medea_jason.dll b/flutter/windows/lib/x86_64-pc-windows-msvc/medea_jason.dll index a26a0c5e3..03908b4c1 100644 Binary files a/flutter/windows/lib/x86_64-pc-windows-msvc/medea_jason.dll and b/flutter/windows/lib/x86_64-pc-windows-msvc/medea_jason.dll differ diff --git a/src/jason.rs b/src/jason.rs index 1832edd95..0ce6c5e5f 100644 --- a/src/jason.rs +++ b/src/jason.rs @@ -43,7 +43,9 @@ impl Jason { #[must_use] pub fn new() -> Self { platform::set_panic_hook(); - platform::init_logger(); + if !log::logger().enabled(&log::Metadata::builder().build()) { + platform::init_logger(); + } Self::with_rpc_client(Rc::new(WebSocketRpcClient::new(Box::new( || Rc::new(platform::WebSocketRpcTransport::new()), diff --git a/src/platform/dart/constraints.rs b/src/platform/dart/constraints.rs index b8f6a0377..28e42524b 100644 --- a/src/platform/dart/constraints.rs +++ b/src/platform/dart/constraints.rs @@ -230,7 +230,21 @@ impl DisplayMediaStreamConstraints { /// [MediaStreamTrack][1] to these [`DisplayMediaStreamConstraints`]. /// /// [1]: https://w3.org/TR/mediacapture-streams#mediastreamtrack - pub fn video(&mut self, video: DisplayVideoTrackConstraints) {} + pub fn video(&mut self, video: DisplayVideoTrackConstraints) { + let video = MediaTrackConstraints::from(video); + unsafe { + constraints::set_video_constraint( + self.0.get(), + ConstraintType::Mandatory as i64, + video.mandatory.get(), + ); + constraints::set_video_constraint( + self.0.get(), + ConstraintType::Optional as i64, + video.optional.get(), + ); + } + } } impl From for MediaTrackConstraints { @@ -372,3 +386,18 @@ impl From for MediaTrackConstraints { } } } + +impl From for MediaTrackConstraints { + fn from(_: DisplayVideoTrackConstraints) -> Self { + unsafe { + let optional = + DartHandle::new(constraints::new_video_constraints()); + let mandatory = + DartHandle::new(constraints::new_video_constraints()); + Self { + optional, + mandatory, + } + } + } +} diff --git a/src/platform/dart/media_devices.rs b/src/platform/dart/media_devices.rs index ef4b2c154..be746d3f6 100644 --- a/src/platform/dart/media_devices.rs +++ b/src/platform/dart/media_devices.rs @@ -7,6 +7,7 @@ use tracerr::Traced; use crate::{ api::string_into_c_str, + media::MediaSourceKind, platform::{ dart::utils::{ dart_future::FutureFromDart, handle::DartHandle, list::DartList, @@ -121,7 +122,14 @@ impl MediaDevices { } .map_err(tracerr::wrap!())?; - Ok(DartList::from(tracks).into()) + let tracks = Vec::from(DartList::from(tracks)) + .into_iter() + .map(|track| { + MediaStreamTrack::new(track, Some(MediaSourceKind::Device)) + }) + .collect(); + + Ok(tracks) } /// Prompts a user to select and grant permissions to capture contents of a @@ -149,7 +157,14 @@ impl MediaDevices { } .map_err(tracerr::wrap!())?; - Ok(DartList::from(tracks).into()) + let tracks = Vec::from(DartList::from(tracks)) + .into_iter() + .map(|track| { + MediaStreamTrack::new(track, Some(MediaSourceKind::Display)) + }) + .collect(); + + Ok(tracks) } /// Switches the current output audio device to the device with the provided diff --git a/src/platform/dart/media_track.rs b/src/platform/dart/media_track.rs index 3e4c9b5c8..8843528da 100644 --- a/src/platform/dart/media_track.rs +++ b/src/platform/dart/media_track.rs @@ -5,12 +5,13 @@ use std::future::Future; use dart_sys::Dart_Handle; -use derive_more::From; use medea_macro::dart_bridge; use crate::{ api::c_str_into_string, - media::{track::MediaStreamTrackState, FacingMode, MediaKind}, + media::{ + track::MediaStreamTrackState, FacingMode, MediaKind, MediaSourceKind, + }, platform::{ dart::utils::{ callback::Callback, handle::DartHandle, NonNullDartValueArgExt as _, @@ -113,14 +114,31 @@ mod media_stream_track { /// [0]: https://w3.org/TR/mediacapture-streams#mediastreamtrack /// [1]: https://w3.org/TR/mediacapture-streams#dom-mediadevices-getusermedia /// [2]: https://w3.org/TR/screen-capture#dom-mediadevices-getdisplaymedia -#[derive(Clone, Debug, From)] -pub struct MediaStreamTrack(DartHandle); +#[derive(Clone, Debug)] +pub struct MediaStreamTrack { + /// Pointer on the [MediaStreamTrack][0] + /// + /// [0]: https://w3.org/TR/mediacapture-streams#mediastreamtrack + inner: DartHandle, + + /// Media source type of this [`MediaStreamTrack`]. + source_kind: Option, +} impl MediaStreamTrack { + /// Creates a new [`MediaStreamTrack`]. + #[must_use] + pub fn new( + inner: DartHandle, + source_kind: Option, + ) -> Self { + Self { inner, source_kind } + } + /// Returns the underlying [`Dart_Handle`] of this [`MediaStreamTrack`]. #[must_use] pub fn handle(&self) -> Dart_Handle { - self.0.get() + self.inner.get() } /// Returns [ID][1] of this [`MediaStreamTrack`]. @@ -128,7 +146,7 @@ impl MediaStreamTrack { /// [1]: https://w3.org/TR/mediacapture-streams#dom-mediastreamtrack-id #[must_use] pub fn id(&self) -> String { - unsafe { c_str_into_string(media_stream_track::id(self.0.get())) } + unsafe { c_str_into_string(media_stream_track::id(self.inner.get())) } } /// Returns [device ID][1] of this [`MediaStreamTrack`]. @@ -138,7 +156,7 @@ impl MediaStreamTrack { #[must_use] pub fn device_id(&self) -> String { unsafe { - c_str_into_string(media_stream_track::device_id(self.0.get())) + c_str_into_string(media_stream_track::device_id(self.inner.get())) } } @@ -148,8 +166,10 @@ impl MediaStreamTrack { #[inline] #[must_use] pub fn kind(&self) -> MediaKind { - MediaKind::try_from(unsafe { media_stream_track::kind(self.0.get()) }) - .unwrap() + MediaKind::try_from(unsafe { + media_stream_track::kind(self.inner.get()) + }) + .unwrap() } /// Returns [facing mode][1] of this [`MediaStreamTrack`]. @@ -159,7 +179,7 @@ impl MediaStreamTrack { #[must_use] pub fn facing_mode(&self) -> Option { Option::::try_from(unsafe { - media_stream_track::facing_mode(self.0.get()).unbox() + media_stream_track::facing_mode(self.inner.get()).unbox() }) .unwrap() .map(FacingMode::try_from) @@ -174,7 +194,7 @@ impl MediaStreamTrack { #[must_use] pub fn height(&self) -> Option { Option::try_from(unsafe { - media_stream_track::height(self.0.get()).unbox() + media_stream_track::height(self.inner.get()).unbox() }) .unwrap() } @@ -186,7 +206,7 @@ impl MediaStreamTrack { #[must_use] pub fn width(&self) -> Option { Option::try_from(unsafe { - media_stream_track::width(self.0.get()).unbox() + media_stream_track::width(self.inner.get()).unbox() }) .unwrap() } @@ -197,7 +217,7 @@ impl MediaStreamTrack { #[inline] #[must_use] pub fn enabled(&self) -> bool { - unsafe { media_stream_track::enabled(self.0.get()) } + unsafe { media_stream_track::enabled(self.inner.get()) } } /// Sets [enabled][1] field of this [`MediaStreamTrack`]. @@ -205,7 +225,7 @@ impl MediaStreamTrack { /// [1]: https://w3.org/TR/mediacapture-streams#dom-mediastreamtrack-enabled pub fn set_enabled(&self, enabled: bool) { unsafe { - media_stream_track::set_enabled(self.0.get(), enabled); + media_stream_track::set_enabled(self.inner.get(), enabled); } } @@ -225,7 +245,7 @@ impl MediaStreamTrack { #[inline] pub fn stop(&self) { unsafe { - media_stream_track::stop(self.0.get()); + media_stream_track::stop(self.inner.get()); } } @@ -238,8 +258,7 @@ impl MediaStreamTrack { #[allow(clippy::unused_self)] #[must_use] pub fn guess_is_from_display(&self) -> bool { - // TODO: Correct implementation requires `flutter_webrtc`-side fixes. - false + self.source_kind == Some(MediaSourceKind::Display) } /// Forks this [`MediaStreamTrack`], by creating a new [`MediaStreamTrack`] @@ -255,13 +274,14 @@ impl MediaStreamTrack { /// [1]: https://w3.org/TR/mediacapture-streams#dom-mediastreamtrack-clone pub fn fork(&self) -> impl Future + 'static { unsafe { - let handle = self.0.get(); + let handle = self.inner.get(); + let source_kind = self.source_kind; async move { let new_track: DartHandle = FutureFromDart::execute(media_stream_track::clone(handle)) .await .unwrap(); - Self::from(new_track) + Self::new(new_track, source_kind) } } } @@ -276,7 +296,7 @@ impl MediaStreamTrack { if let Some(cb) = f { let cb = Callback::from_once(|_: ()| cb()); unsafe { - media_stream_track::on_ended(self.0.get(), cb.into_dart()); + media_stream_track::on_ended(self.inner.get(), cb.into_dart()); }; } } diff --git a/src/platform/dart/peer_connection.rs b/src/platform/dart/peer_connection.rs index def0db322..1658fefb0 100644 --- a/src/platform/dart/peer_connection.rs +++ b/src/platform/dart/peer_connection.rs @@ -185,7 +185,7 @@ impl RtcPeerConnection { Callback::from_two_arg_fn_mut( move |track: DartHandle, transceiver: DartHandle| { h( - MediaStreamTrack::from(track), + MediaStreamTrack::new(track, None), Transceiver::from(transceiver), ); }, diff --git a/src/platform/wasm/media_devices.rs b/src/platform/wasm/media_devices.rs index 5b181838f..f552c614e 100644 --- a/src/platform/wasm/media_devices.rs +++ b/src/platform/wasm/media_devices.rs @@ -9,7 +9,7 @@ use tracerr::Traced; use web_sys::{Event, MediaDevices as SysMediaDevices}; use crate::{ - media::InvalidOutputAudioDeviceIdError, + media::{InvalidOutputAudioDeviceIdError, MediaSourceKind}, platform::{ utils::EventListener, DisplayMediaStreamConstraints, Error, MediaDeviceInfo, MediaStreamConstraints, MediaStreamTrack, @@ -131,7 +131,12 @@ impl MediaDevices { Ok(js_sys::try_iter(&stream.get_tracks()) .unwrap() .unwrap() - .map(|tr| MediaStreamTrack::from(tr.unwrap())) + .map(|tr| { + MediaStreamTrack::new( + tr.unwrap(), + Some(MediaSourceKind::Device), + ) + }) .collect()) } @@ -177,7 +182,12 @@ impl MediaDevices { Ok(js_sys::try_iter(&stream.get_tracks()) .unwrap() .unwrap() - .map(|tr| MediaStreamTrack::from(tr.unwrap())) + .map(|tr| { + MediaStreamTrack::new( + tr.unwrap(), + Some(MediaSourceKind::Display), + ) + }) .collect()) } diff --git a/src/platform/wasm/media_track.rs b/src/platform/wasm/media_track.rs index 6f95ed6ba..cbc6133f6 100644 --- a/src/platform/wasm/media_track.rs +++ b/src/platform/wasm/media_track.rs @@ -8,7 +8,9 @@ use derive_more::AsRef; use futures::future; use crate::{ - media::{track::MediaStreamTrackState, FacingMode, MediaKind}, + media::{ + track::MediaStreamTrackState, FacingMode, MediaKind, MediaSourceKind, + }, platform::wasm::{get_property_by_name, utils::EventListener}, }; @@ -31,6 +33,11 @@ pub struct MediaStreamTrack { /// [1]: https://w3.org/TR/mediacapture-streams#mediastreamtrack kind: MediaKind, + /// Media source kind of this [MediaStreamTrack][1]. + /// + /// [1]: https://w3.org/TR/mediacapture-streams#mediastreamtrack + source_kind: Option, + /// Listener for an [ended][1] event. /// /// [1]: https://tinyurl.com/w3-streams#event-mediastreamtrack-ended @@ -39,12 +46,14 @@ pub struct MediaStreamTrack { >, } -impl From for MediaStreamTrack -where - web_sys::MediaStreamTrack: From, -{ - fn from(from: T) -> Self { - let sys_track = web_sys::MediaStreamTrack::from(from); +impl MediaStreamTrack { + /// Creates a new [`MediaStreamTrack`]. + #[must_use] + pub fn new(sys_track: T, source_kind: Option) -> Self + where + web_sys::MediaStreamTrack: From, + { + let sys_track = web_sys::MediaStreamTrack::from(sys_track); let kind = match sys_track.kind().as_ref() { "audio" => MediaKind::Audio, "video" => MediaKind::Video, @@ -52,13 +61,12 @@ where }; Self { sys_track: Rc::new(sys_track), + source_kind, kind, on_ended: RefCell::new(None), } } -} -impl MediaStreamTrack { /// Returns [`id`] of the underlying [MediaStreamTrack][2]. /// /// [`id`]: https://w3.org/TR/mediacapture-streams#dom-mediastreamtrack-id @@ -199,22 +207,7 @@ impl MediaStreamTrack { /// [1]: https://w3.org/TR/screen-capture/#extensions-to-mediatracksettings #[must_use] pub fn guess_is_from_display(&self) -> bool { - let settings = self.sys_track.get_settings(); - - let has_display_surface = - get_property_by_name(&settings, "displaySurface", |val| { - val.as_string() - }) - .is_some(); - - if has_display_surface { - true - } else { - get_property_by_name(&settings, "logicalSurface", |val| { - val.as_string() - }) - .is_some() - } + self.source_kind == Some(MediaSourceKind::Display) } /// Forks this [`MediaStreamTrack`]. @@ -230,6 +223,7 @@ impl MediaStreamTrack { &self.sys_track, )), kind: self.kind, + source_kind: self.source_kind, on_ended: RefCell::new(None), }) } diff --git a/src/platform/wasm/peer_connection.rs b/src/platform/wasm/peer_connection.rs index 0d605c9c1..226df9174 100644 --- a/src/platform/wasm/peer_connection.rs +++ b/src/platform/wasm/peer_connection.rs @@ -182,7 +182,7 @@ impl RtcPeerConnection { "track", move |msg: RtcTrackEvent| { f( - MediaStreamTrack::from(msg.track()), + MediaStreamTrack::new(msg.track(), None), Transceiver::from(msg.transceiver()), ); },