Skip to content

Handler: allow spatial layers from 0 to N#149

Closed
aconchillo wants to merge 1 commit into
versatica:v3from
aconchillo:handler-generic-spatial-layers
Closed

Handler: allow spatial layers from 0 to N#149
aconchillo wants to merge 1 commit into
versatica:v3from
aconchillo:handler-generic-spatial-layers

Conversation

@aconchillo

Copy link
Copy Markdown

This fixes an incompatibility with mediasoup server which in v3 spatial layers go from 0 to N, however libmediasoupclient is still using v2 spatial layers.

Comment thread include/Producer.hpp
bool paused{ false };
// Video Max spatial layer.
uint8_t maxSpatialLayer{ 0 };
uint8_t maxSpatialLayer{ (uint8_t) -1 };

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this syntax? What is this?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This basically means 255. It is (or was) a common way to initialize an unsigned number to its maximum value to mainly indicate it's not initialized.

Previsouly it was 0 and the allowed values were 1, 2 and 3, so this check https://github.com/versatica/libmediasoupclient/blob/v3/src/Producer.cpp#L204 would pass. Now, since we allow 0 as a value, the check would not pass if we set spatialLayer to 0. Another option would be to have a boolean to indicate SetMaxSpatialLayer has been called a first time, but not sure if that's a good option. Or make it a int8_t and don't do this weird cast.

Right now, with 255 (I doubt anyone has 255 layers) we indicate that is not initialized, like in the unit test that I updated.

I'm happy to update the PR with any suggestions. Thanks!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change should not be needed. It just represents the maximum spatial layer which at least is 0.

@aconchillo aconchillo Sep 28, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @jmillan. So, if we leave it to 0 and call Producer::setMaxSpatialLayer(0) it seems that the Producer.cpp line I was pointing at above, it would actually not enable the 0 spatialLayer (because maxSpatialLayer is already initialized to 0):

		if (spatialLayer == this->maxSpatialLayer)
			return;

Before, since values were 1, 2 and 3, it will always go through (the first time). Maybe removing that if condition?

@aconchillo aconchillo closed this by deleting the head repository Mar 15, 2024
@ibc

ibc commented Mar 15, 2024

Copy link
Copy Markdown
Member

Why is this closed? We do want to address all pending PRs and issues, it's just that we are very busy.

@aconchillo

Copy link
Copy Markdown
Author

Hola! Oh, shoot! I completely forgot I had this PR open. Argh... let me fix that.

@aconchillo

Copy link
Copy Markdown
Author

Sorry again. Moved to #174.

@ibc

ibc commented Mar 16, 2024

Copy link
Copy Markdown
Member

Thanks a lot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants