Skip to content

Commit

Permalink
Provide MediaManager::on_device_change() callback (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
evdokimovs committed Mar 16, 2022
1 parent 76c79c8 commit 3c6690e
Show file tree
Hide file tree
Showing 24 changed files with 611 additions and 381 deletions.
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 firing whenever `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.

0 comments on commit 3c6690e

Please sign in to comment.