Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add MediaManager.on_device_change callback #30

Merged
merged 16 commits into from
Mar 16, 2022
Merged
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ All user visible changes to this project will be documented in this file. This p
- `FormatException`;
- `MediaStateTransitionException`;
- `MediaSettingsUpdateException`.
- `MediaManagerHandle.set_output_audio_id()` function switching output audio device on Dart platform ([#29]).
- `MediaManagerHandle.set_output_audio_id()` function switching output audio device on Dart platform ([#29]);
- `MediaManagerHandle.on_device_change()` callback which fires when `MediaManagerHandle.enumerate_devices()` list changes ([#30]).

### Updated

Expand All @@ -68,6 +69,7 @@ All user visible changes to this project will be documented in this file. This p
[#4]: /../../pull/4
[#16]: /../../pull/16
[#29]: /../../pull/29
[#30]: /../../pull/30



Expand Down
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -952,8 +952,7 @@ ifeq ($(browser),firefox)
ghcr.io/instrumentisto/geckodriver:$(FIREFOX_VERSION) \
--binary=/opt/firefox/firefox
else
DRIVER_ARGS="--disable-dev-shm-usage" \
docker run --rm -d --network=host \
docker run --rm -d --network=host --shm-size 512m \
--name medea-webdriver-chrome \
selenoid/chrome:$(CHROME_VERSION)
endif
Expand Down
Binary file modified flutter/android/src/main/jniLibs/arm64-v8a/libmedea_jason.so
Binary file not shown.
Binary file not shown.
Binary file modified flutter/android/src/main/jniLibs/x86/libmedea_jason.so
Binary file not shown.
Binary file modified flutter/android/src/main/jniLibs/x86_64/libmedea_jason.so
Binary file not shown.
247 changes: 132 additions & 115 deletions flutter/assets/pkg/medea_jason.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ 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 WASM_VECTOR_LEN = 0;

let cachegetUint8Memory0 = null;
Expand Down Expand Up @@ -84,6 +93,10 @@ function passStringToWasm0(arg, malloc, realloc) {
return ptr;
}

function isLikeNone(x) {
return x === undefined || x === null;
}

let cachegetInt32Memory0 = null;
function getInt32Memory0() {
if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {
Expand All @@ -92,19 +105,6 @@ function getInt32Memory0() {
return cachegetInt32Memory0;
}

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;
}

let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });

cachedTextDecoder.decode();
Expand Down Expand Up @@ -252,57 +252,10 @@ function handleError(f, args) {
function getArrayU8FromWasm0(ptr, len) {
return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
}
function __wbg_adapter_343(arg0, arg1, arg2, arg3) {
function __wbg_adapter_344(arg0, arg1, arg2, arg3) {
wasm.wasm_bindgen__convert__closures__invoke2_mut__h506acbb810aa0090(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", });
/**
* Describes directions that a camera can face, as seen from a user's
* perspective. Representation of a [VideoFacingModeEnum][1].
Expand Down Expand Up @@ -341,19 +294,19 @@ Display:1,"1":"Display", });
/**
* [MediaDeviceInfo.kind][1] representation.
*
* [1]: https://www.w3.org/TR/mediacapture-streams/#dom-mediadeviceinfo-kind
* [1]: https://w3.org/TR/mediacapture-streams#dom-mediadeviceinfo-kind
*/
export const MediaDeviceKind = Object.freeze({
/**
* Represents an audio input device; for example a microphone.
* Audio input device (for example, a microphone).
*/
AudioInput:0,"0":"AudioInput",
/**
* Represents a video input device; for example a webcam.
* Video input device (for example, a webcam).
*/
VideoInput:1,"1":"VideoInput",
/**
* Represents an audio output device; for example a pair of headphones.
* Audio output device (for example, a pair of headphones).
*/
AudioOutput:2,"2":"AudioOutput", });
/**
Expand All @@ -371,6 +324,53 @@ 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", });
/**
* Constraints applicable to audio tracks.
*/
export class AudioTrackConstraints {
Expand Down Expand Up @@ -1292,6 +1292,23 @@ export class MediaManagerHandle {
var ret = wasm.mediamanagerhandle_init_local_tracks(this.ptr, caps.ptr);
return takeObject(ret);
}
/**
* Subscribes on the [`MediaManagerHandle`]'s `devicechange` event.
* @param {Function} cb
*/
on_device_change(cb) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
wasm.mediamanagerhandle_on_device_change(retptr, this.ptr, addHeapObject(cb));
var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1];
if (r1) {
throw takeObject(r0);
}
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
}
}
/**
* Errors occurring in [`RoomHandle::set_local_media_settings()`][1] method.
Expand Down Expand Up @@ -2423,20 +2440,37 @@ async function init(input) {
var ret = LocalMediaTrack.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_string = function(arg0) {
var ret = typeof(getObject(arg0)) === 'string';
return ret;
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
var ret = getObject(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) {
imports.wbg.__wbindgen_number_new = function(arg0) {
var ret = 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);
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.__wbindgen_number_new = function(arg0) {
var ret = arg0;
imports.wbg.__wbindgen_cb_drop = function(arg0) {
const obj = takeObject(arg0).original;
if (obj.cnt-- == 1) {
obj.a = 0;
return true;
}
var ret = false;
return 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.__wbg_stateerror_new = function(arg0) {
Expand Down Expand Up @@ -2471,26 +2505,25 @@ async function init(input) {
var ret = MediaSettingsUpdateException.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
var ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_json_serialize = 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 ret = JSON.stringify(obj === undefined ? null : obj);
var ptr0 = 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_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_undefined = function(arg0) {
var ret = getObject(arg0) === undefined;
return ret;
};
imports.wbg.__wbg_roomclosereason_new = function(arg0) {
var ret = RoomCloseReason.__wrap(arg0);
return addHeapObject(ret);
imports.wbg.__wbindgen_is_string = function(arg0) {
var ret = typeof(getObject(arg0)) === 'string';
return ret;
};
imports.wbg.__wbg_remotemediatrack_new = function(arg0) {
var ret = RemoteMediaTrack.__wrap(arg0);
Expand All @@ -2500,26 +2533,10 @@ async function init(input) {
var ret = ReconnectHandle.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbg_mediadeviceinfo_new = function(arg0) {
var ret = MediaDeviceInfo.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbg_connectionhandle_new = function(arg0) {
var ret = ConnectionHandle.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
var ret = getObject(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
var ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_undefined = function(arg0) {
var 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;
Expand Down Expand Up @@ -2918,7 +2935,7 @@ async function init(input) {
const a = state0.a;
state0.a = 0;
try {
return __wbg_adapter_343(a, state0.b, arg0, arg1);
return __wbg_adapter_344(a, state0.b, arg0, arg1);
} finally {
state0.a = a;
}
Expand Down Expand Up @@ -2998,28 +3015,28 @@ async function init(input) {
var ret = wasm.memory;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2640 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 710, __wbg_adapter_32);
imports.wbg.__wbindgen_closure_wrapper2657 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 713, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2641 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 710, __wbg_adapter_35);
imports.wbg.__wbindgen_closure_wrapper2658 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 713, __wbg_adapter_35);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2642 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 710, __wbg_adapter_38);
imports.wbg.__wbindgen_closure_wrapper2659 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 713, __wbg_adapter_38);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2643 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 710, __wbg_adapter_41);
imports.wbg.__wbindgen_closure_wrapper2660 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 713, __wbg_adapter_41);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2651 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 710, __wbg_adapter_44);
imports.wbg.__wbindgen_closure_wrapper2668 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 713, __wbg_adapter_44);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2748 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 777, __wbg_adapter_47);
imports.wbg.__wbindgen_closure_wrapper2763 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 781, __wbg_adapter_47);
return addHeapObject(ret);
};

Expand Down
Binary file modified flutter/assets/pkg/medea_jason_bg.wasm
Binary file not shown.
Loading