# ZoomSDKNormalVideoElement usage

**URL:** <https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544>\
**Category:** macOS\
**Created:** [December 16, 2021, 3:42pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544 "2021-12-16T15:42:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![anton.yereshchenko](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/anton.yereshchenko/32/16916_2.png) [@anton.yereshchenko](https://devforum.zoom.us/u/anton.yereshchenko)\
**Post date:** [December 16, 2021, 3:42pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544/1 "2021-12-16T15:42:22Z")

</div>

Hi!

I use `ZoomSDKNormalVideoElement` instants to display participants.

This class has some properties and methods but the most interesting for me are `setResolution(:_)` and `subscribeVideo(:_)`

From `ZoomSDKVideoContainer.h` file:

`setResolution(:_)` - _Config the video view resolution_  
`subscribeVideo(:_)` - _Set whether to display user’s video._

But for example, there is `showVideo(:_)` method with the next description: _Set whether to show video._

**Question 1** : What is the difference between `subscribeVideo(:_)` and `showVideo(:_)`?

* * *

`setResolution(:_)` method returns `ZoomSDKError` as a lot of Zoom’s method.

Empirically It has been figured out that `setResolution(:_)` could return **Failed** in the case when we try to set the value that is already set (for example video element has resolution _360p_ and we try to set it again). And when we try to set the value that could broke Zoom Rules. For example, there are two video elements with a resolution that is equal to _720p_. And I try to create a third one and set the same resolution to it.

**Question 2** : Is it right? Are there some more limitations to this method?

* * *

Сontinuing to the previous description: we have noticed, the third video element that is received ‘Failed’ status after _720p_ setting, can’t change the quality until we call `subscribeVideo(:_)`.

**Question 3** : Do I need `subscribeVideo(true)` method if my `setResolution(:_)` method has been returned **Failed** status?

* * *

**Question 4** : What does it mean for the video element if we subscribe/unsubscribe to/from it?

* * *

**Question 5** : What the blinking mean when we call `setResolution(true)` method?

* * *

Thank you for your help. There is a lot of specific questions, but it’s necessary to understand the full picture of the SDK to use its full potential. 🚀

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [December 16, 2021, 11:38pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544/2 "2021-12-16T23:38:04Z")

</div>

Hi @anton.yereshchenko, thanks for the post.

> What is the difference between `subscribeVideo(:_)` and `showVideo(:_)` ?

I believe `subscribeVideo` is meant to be used for the actual video description, while `showVideo` is only used for the UI side of things. So if you needed to temporarily hide the video of a particular user but don’t want to stop receiving their data, you could use this.

> Empirically It has been figured out that `setResolution(:_)` could return **Failed** in the case when we try to set the value that is already set (for example video element has resolution _360p_ and we try to set it again). And when we try to set the value that could broke Zoom Rules. For example, there are two video elements with a resolution that is equal to _720p_ . And I try to create a third one and set the same resolution to it.  
> **Question 2** : Is it right? Are there some more limitations to this method?

It sounds like you are correct. I would expect this method to fail if the SDK already knows that the resolution being set is not possible under current circumstances.

> Сontinuing to the previous description: we have noticed, the third video element that is received ‘Failed’ status after _720p_ setting, can’t change the quality until we call `subscribeVideo(:_)` .  
> **Question 3** : Do I need `subscribeVideo(true)` method if my `setResolution(:_)` method has been returned **Failed** status?

Just to be clear, were you previously subscribed to a lower resolution, which stops after calling `setResolution` or are you calling this before the initial `subscribeVideo` call? I think this is working as intended either way, but if you were previously subscribed, we may be able to improve the usage of this in the future.

> **Question 4** : What does it mean for the video element if we subscribe/unsubscribe to/from it?

When subscribed, the SDK maintains a connection to receive any video data from that user. Once you unsubscribe, this connection ends and you are no longer able to receive video. Let me know if you are looking for more specific information around the usage of this and I’ll be happy to help.

> **Question 5** : What the blinking mean when we call `setResolution(true)` method?

This method is actually doing two things: updating the video size (i.e. state internal to the SDK to know which resolution) and then resubscribing at the new resolution. If you see the video briefly go black, it is because the SDK has not yet received video frames at the updated resolution.

There’s a lot of information to process here for sure, so feel free to reach back out if anything could use further clarification. 🙂

Thanks!

---

<div class="post-metadata">

**Author:** ![anton.yereshchenko](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/anton.yereshchenko/32/16916_2.png) [@anton.yereshchenko](https://devforum.zoom.us/u/anton.yereshchenko)\
**Post date:** [January 12, 2022, 6:16pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544/3 "2022-01-12T18:16:13Z")

</div>

Hi @jon.zoom, thank you a lot for this incredibly useful information about `ZoomSDKNormalVideo Element`

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [January 13, 2022, 10:43pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544/4 "2022-01-13T22:43:35Z")

</div>

No problem, happy to help!

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [January 13, 2022, 10:43pm UTC](https://devforum.zoom.us/t/zoomsdknormalvideoelement-usage/61544/5 "2022-01-13T22:43:40Z")

</div>

Closed on January 13, 2022, 10:43pm UTC


