Skip to content

Commit 84eb89f

Browse files
author
Kevin Le Goff
committed
Fix acrolinx
1 parent 8c82830 commit 84eb89f

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

articles/communication-services/how-tos/calling-sdk/includes/manage-video/manage-video-web.md

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const localSpeakers = await deviceManager.getSpeakers(); // [AudioDeviceInfo, Au
3535

3636
### Set the default devices
3737

38-
Once you know what devices are available to use you can set default devices for microphone, speaker, and camera. If client defaults aren't set, the Communication Services SDK uses operating system defaults.
38+
Once you know what devices are available to use, you can set default devices for microphone, speaker, and camera. If client defaults aren't set, the Communication Services SDK uses operating system defaults.
3939

4040
#### Microphone
4141

@@ -79,11 +79,11 @@ const defaultSpeaker = deviceManager.selectedSpeaker;
7979
await deviceManager.selectSpeaker(localCameras[0]);
8080
```
8181

82-
Each `CallAgent` can choose its own microphone and speakers on its associated `DeviceManager`. It is recommended that different `CallAgents` use different microphones and speakers. They should not share the same microphones nor speakers. If sharing happens, then Microphone User Facing Diagnostics may be triggered and the microphone stops working depending on the browser / os.
82+
Each `CallAgent` can choose its own microphone and speakers on its associated `DeviceManager`. It's recommended that different `CallAgents` use different microphones and speakers. They shouldn't share the same microphones nor speakers. If sharing happens, then Microphone User Facing Diagnostics might be triggered and the microphone stops working depending on the browser / os.
8383

8484
### Local video stream
8585

86-
To be able to send video in a call you need to create a `LocalVideoStream`object.
86+
To be able to send video in a call, you need to create a `LocalVideoStream`object.
8787

8888
```js
8989
const localVideoStream = new LocalVideoStream(camera);
@@ -108,10 +108,10 @@ const type: MediaStreamType = localVideoStream.mediaStreamType;
108108
### Local camera preview
109109

110110
You can use `deviceManager` and `VideoStreamRenderer` to begin rendering streams from your local camera.
111-
Once a `LocalVideoStream` is created use it to set up`VideoStreamRenderer`. Once the `VideoStreamRenderer`is
111+
Once a `LocalVideoStream` is created, use it to set up`VideoStreamRenderer`. Once the `VideoStreamRenderer`is
112112
created call its `createView() method to get a view that you can add as a child to your page.
113113

114-
Please not that this stream is not sent to other participants; it's a local preview feed.
114+
Note that this stream isn't sent to other participants; it's a local preview feed.
115115

116116
```js
117117
// To start viewing local camera preview
@@ -125,7 +125,7 @@ htmlElement.appendChild(view.target);
125125

126126
**Stop the local preview**
127127

128-
To stop the local preview call dispose on the view derived from the `VideoStreamRenderer`.
128+
To stop the local preview call, dispose on the view derived from the `VideoStreamRenderer`.
129129
Once the VideoStreamRenderer is disposed, remove the view from the html tree by calling
130130
the `removeChild()` method from the DOM Node containing your preview.
131131

@@ -137,7 +137,7 @@ htmlElement.removeChild(view.target);
137137

138138
### Request permission to camera and microphone
139139

140-
An application can not use the camera or microphone without permissions.
140+
An application can’t use the camera or microphone without permissions.
141141
You can use the deviceManager to prompt a user to grant camera and/or microphone permissions:
142142

143143
```js
@@ -155,7 +155,7 @@ console.log(result.video);
155155
#### Notes
156156
- `videoDevicesUpdated` event fires when video devices are plugging-in/unplugged.
157157
- `audioDevicesUpdated` event fires when audio devices are plugged.
158-
- When the DeviceManager is created, at first it doesn't know about any devices if permissions are not granted yet, so initially its device list is empty. If we then call the DeviceManager.askPermission() API, the user is prompted for device access. When the user clicks on 'allow' to grant the access the device manager learns about the devices on the system, update it's device lists and emit the 'audioDevicesUpdated' and 'videoDevicesUpdated' events. If a user refreshes the page and creates a device manager, the device manager is able to learn about devices because user has already previously granted access. It will initially it will have its device lists filled and it will not emit 'audioDevicesUpdated' nor 'videoDevicesUpdated' events.
158+
- When the DeviceManager is created, at first it doesn't know about any devices if permissions aren't granted yet, so initially its device list is empty. If we then call the DeviceManager.askPermission() API, the user is prompted for device access. When the user selects on 'allow' to grant the access the device manager learns about the devices on the system, update it's device lists and emit the 'audioDevicesUpdated' and 'videoDevicesUpdated' events. If a user refreshes the page and creates a device manager, the device manager is able to learn about devices because user granted access previously. It has its device lists filled initially and it doesn't emit 'audioDevicesUpdated' nor 'videoDevicesUpdated' events.
159159
- Speaker enumeration/selection isn't supported on Android Chrome, iOS Safari, nor macOS Safari.
160160

161161
## Place a call with video camera
@@ -320,10 +320,8 @@ call.on('isScreenSharingOnChanged', () => {
320320

321321
## Render remote participant video/screensharing streams
322322

323-
<!-- To list the video streams and screen sharing streams of remote participants, inspect the `videoStreams` collections:
324-
-->
325-
The to render a remote participant video or screensharing, the first step is to get a reference on the RemoteVideoStream you want to render.
326-
This can be done by going through the array or video stream (`videoStreams`) of the `RemoteParticipant`. The remote particpant collection
323+
To render a remote participant video or screen sharing, the first step is to get a reference on the RemoteVideoStream you want to render.
324+
This can be done by going through the array or video stream (`videoStreams`) of the `RemoteParticipant`. The remote participants collection
327325
is accessed via the `Call` object.
328326

329327
```js
@@ -338,7 +336,7 @@ instance by using the asynchronous `createView` method.
338336
You can then attach `view.target` to any UI element.
339337

340338
Whenever the availability of a remote stream changes, you can destroy the whole `VideoStreamRenderer` or
341-
a specific `VideoStreamRendererView`. If you do decided to keep them, then the view displays a blank video frame.
339+
a specific `VideoStreamRendererView`. If you decide to keep them, then the view displays a blank video frame.
342340

343341
```js
344342
// Reference to the html's div where we would display a grid of all remote video stream from all participants.
@@ -449,7 +447,7 @@ application should render at a given moment. Applications should handle these ch
449447
accordingly to the recommendation. There's a debounce period (around 10 s) between each update.
450448

451449
**Usage**
452-
The `optimalVideoCount` feature is a call feature
450+
The `optimalVideoCount` feature is a call feature.
453451

454452
<!-- TODO KLG convert this to Javascript -->
455453
```typescript
@@ -497,19 +495,19 @@ const isReceiving: boolean = remoteVideoStream.isReceiving;
497495
- The flag moves to `false` in the following scenarios:
498496
- A remote participant who is on mobile browser brings the browser app to the background.
499497
- A remote participant or the user receiving the video has network issue that affects video quality drastically.
500-
- A remote participant who is On macOS/iOS Safari clicks on "Pause" from their address bar.
498+
- A remote participant who is On macOS/iOS Safari selects "Pause" from their address bar.
501499
- A remote participant has a network disconnection.
502-
- A remote particpant on mobile kills or terminate the browser.
503-
- A remote particpant on mobile or desktop locks his device. This scenario applies also if the remote particpant is on a desktop computer and it goes to sleep.
500+
- A remote participant on mobile kills or terminate the browser.
501+
- A remote participant on mobile or desktop locks its device. This scenario applies also if the remote participant is on a desktop computer and it goes to sleep.
504502

505503
- The flag moves to `true` in the following scenarios:
506-
- A remote participant whos is on mobile browser and has his browser backgrounded brings it back to foreground.
507-
- A remote participant who is On macOS/iOS Safari clicks on "Resume" from their address bar after having paused its video.
508-
- A remote participant has a reconnects to the network after a temporary disconnection.
509-
- A remote participant on mobile unlock his device and return to the call on his mobile browser.
504+
- A remote participant who is on mobile browser and has its browser backgrounded brings it back to foreground.
505+
- A remote participant who is On macOS/iOS Safari selects on "Resume" from their address bar after having paused its video.
506+
- A remote participant reconnects to the network after a temporary disconnection.
507+
- A remote participant on mobile unlock its device and return to the call on its mobile browser.
510508

511509
- This feature improves the user experience for rendering remote video streams.
512-
- You can display a loading spinner over the remote video stream when isReceiving flag changes to false. You don't have to do a loading spinner, you can do anything you desire, but a loading spinner is the most common usage for better user experience.
510+
- You can display a loading spinner over the remote video stream when isReceiving flag changes to false. You don't have to implement loading spinner, but a loading spinner is the most common usage for better user experience.
513511

514512
```js
515513
const size: StreamSize = remoteVideoStream.size;
@@ -525,12 +523,12 @@ await videoStreamRenderer.createView();
525523

526524
Create a `VideoStreamRendererView` instance that can be attached in the application UI to render the remote video stream,
527525
use asynchronous `createView()` method, it resolves when stream is ready to render and returns an object with `target`
528-
property that represents `video` element that can be inserted anywhere in the DOM tree
526+
property that represents `video` element that can be inserted anywhere in the DOM tree.
529527

530528
```js
531529
videoStreamRenderer.dispose();
532530
```
533-
Dispose of `videoStreamRenderer` and all associated `VideoStreamRendererView` instances
531+
Dispose of `videoStreamRenderer` and all associated `VideoStreamRendererView` instances.
534532

535533
## VideoStreamRendererView methods and properties
536534

@@ -579,7 +577,7 @@ await callObj2.muteIncomingAudio();
579577
await callObj2.mute();
580578
```
581579
Limitations:
582-
- This must be done with two different `CallAgent` instances using different identities, hence the code snippet shows two call agents being used, each with its own Call object.
580+
- This must be done with two different `CallAgent` instances using different identities. The code snippet shows two call agents being used, each with its own Call object.
583581
- In the code example, both CallAgents are joining the same call (same call Ids). You can also join different calls with each agent and send one video on one call and a different video on the other call.
584582
- Sending the same camera in both CallAgent, isn't supported. They must be two different cameras.
585583
- Sending two different cameras with one CallAgent is currently not supported.

0 commit comments

Comments
 (0)