mediacapture-extensions
mediacapture-extensions copied to clipboard
Filtering for relevant configurationchange events
There is the potential for many different configuration changes. What if an application is only interested in some? For example, we see this demo code by François, which currently reads:
function configurationChange(event) {
const settings = event.target.getSettings();
if ("backgroundBlur" in settings) {
log(`Background blur changed to ${settings.backgroundBlur ? "ON" : "OFF"}`);
}
}
This assumes that the only possible event is to blur, or else the following would be possible:
Background blur changed to OFF Background blur changed to OFF Background blur changed to OFF
A likely future modification of the code would be:
function configurationChange(event) {
if (event.whatChanged != "blur") {
return;
}
const settings = event.target.getSettings();
if ("backgroundBlur" in settings) {
log(`Background blur changed to ${settings.backgroundBlur ? "ON" : "OFF"}`);
}
}
However, depending on what changes and how often, this could mean that the event handler is invoked in vain 99% of the time, and possible multiple times per second, needlessly wasting CPU on processing the event by JS code.
I think a more reasonable shape for the API, would be to expose a subscribe-method.
track.subscribeToConfigChanges(eventHandler, ["blur", "xxx", "yyy", "zzz"]);
Wdyt?
(Some prior art here is in w3c/mediacapture-screen-share#80. I propose my change as incremental progress over it. CC @beaufortfrancois, @guidou, @eehakkin and @youennf)