The ice candidate event provides an "RTCIceCandidateInit" object, which
should be passed to the RTCIceCandidate() constructor, to build a proper
instance of RTCIceCandidate.
Firefox converts everything to lowercase and then the RIDs wouldn't
match in the internal mediasoup lookup! So better use all lowercase for
these identifiers.
Subscribing to start/stop speaking events, the speechEvent object (which is undefined) is trying to invoke to 'on' method. This prevents the correct behaviour of the stop/start speaking events.
- For loading components with inputs/outputs directives, has been necessary to use the 'ng-dynamic-component' library because of unsupported on the official Angular issue https://github.com/angular/angular/issues/15360
- Allowed the dynamic components load
- Grouped panels into panel component
Allows applications to set a custom string for the the connection ID,
which is a great help for debugging purposes, as it will appear in
all server logs and also will be used to set media server object names
(with obj.setName() API)
Stream.typeOfVideo was a string and cannot be changed into an Enum
without breaking some client applications.
However, it is possible for us to start using an Enum internally, and
exporting this property as a union of strings, which is what is
generated by "keyof typeof Enum".
* ov-room to ov-session
* ov-participant to ov-stream
* ov-chat to ov-chat-panel
* ov-participant-panel to ov-participants-panel
* ConnectionWrapper to StreamModel
- Commented not necessary code in user-settings which forced a new publisher init if device labels were empty
- Added more conditional cases initializing the default publisher in webrtc service
- Added video background color
This method should be the same as the others in regards to checking for valid property.
It seems the extra logic for `isElectron` evaded the correct checking when calling from an incoming stream.
Error reported:
TypeError: Cannot read properties of undefined (reading 'publisherProperties')
```
Fill a new SessionProperties member "forcedVideoCodecResolved" to
contain the resolved value of "forcedVideoCodec", once the new
MEDIA_SERVER_PREFERRED has been taken into account and translated into
the appropriate option for each media server.
The logic to decide how to translate MEDIA_SERVER_PREFERRED into a
concrete forcedVideoCodec value is placed once in the REST entry point
of session creation (SessionRestController.java). Afterwards,
SessionProperties is just used as a simple storage for all session
features, and serialized / passed around between server and client.
MEDIA_SERVER_PREFERRED: A recommended choice is done for you,
based on the media server that is currently in use.
This is the default setting, and is equivalent to these values:
- For *mediasoup*, `NONE` is selected.
- For *Kurento*, `VP8` is selected.