Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handler: allow spatial layers from 0 to N #149

Closed
wants to merge 1 commit into from
Closed

Handler: allow spatial layers from 0 to N #149

wants to merge 1 commit into from

Conversation

aconchillo
Copy link

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.

@@ -87,7 +87,7 @@ namespace mediasoupclient
// Paused flag.
bool paused{ false };
// Video Max spatial layer.
uint8_t maxSpatialLayer{ 0 };
uint8_t maxSpatialLayer{ (uint8_t) -1 };
Copy link
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
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
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.

Copy link
Author

@aconchillo aconchillo Sep 28, 2022

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
Copy link
Member

ibc commented Mar 15, 2024

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
Author

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

@aconchillo
Copy link
Author

Sorry again. Moved to #174.

@ibc
Copy link
Member

ibc commented Mar 16, 2024

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