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
Handling of encoder/decoder errors #763
Comments
Some thoughts: Do we need RTCRtpCodecCapability.maxSimulcastStreams ? (all we have today is mimeType) try { Is there any information in e.message on what was wrong with params? We may not even have called createOffer() by this point, so there isn't necessarily even any SDP to look at (or complain about). |
Could we just choose to do the same thing we do for CPU and network adaptation: not send the layers we can't? How is this different than "poor man's simulcast", when someone calls addTrack N times for the same track? Doesn't that have the same issue? |
Now that we're not permitting setParameters() to change number of layers, is this OBE? |
could check with @pthatcherg @taylor-b if there is an use case where a more specific error would be useful. If we don't see an obvious case (and one that can't be handled using error.name), we should close this. |
So, I like Bernard's suggestion of having |
Aren't temporal and spatial layers usually terms used within a single stream, to allow layers to be dropped at the MCU? |
Right, so it's a slightly different meaning. But it would go in the same place ( Does this need to be a per-codec property though? Is there a practical example where a browser would support X encodings for codec A and Y encodings for codec B? |
@taylor-b ORTC only provides maxTemporalLayers/maxSpatialLayers for SVC, not simulcast. It seems to me that maxSimulcastStreams needs to be a per-codec property since it might differ between codecs (e.g. hardware-accelerated codecs versus software codecs). Even if we add this though, there is the question of how much information we need to provide about the error. For example, the RTCError Object (Section 12.2) has errorDetail, sdpLineNumber, message and name fields. |
For discussion at the virtual interim. Partial fix for Issue #763
Sentiment in virtual interim was to enable simulcast errors to be reported in RTCError. Some ideas:
|
Let's step back a bit and consider what could possibly cause
If that's really it, let's just add three new types to the
This seems pretty simple, and would be more intuitive/useful to application developers than my "parameters dictionary subset" idea. |
VI: No resolution taken. Bernard will continue to try to come up with a complete proposal. |
Are you saying that setParameters() can return a rejected promise by attempting to remove some but not all codecs? For example, after O/A, both H.264/AVC and VP8 are in the codec list, and setParameters() attempts to remove VP8, could this result in an error if there are no more H.264/AVC hardware encoding resources?
|
I thought it would return nothing (an empty dictionary)? We really need to specify the behavior of
That seems reasonable. Though we could say "it's legal if you have no active encodings"; maybe we'll find some use for that, like deallocating encoding resources (albeit somewhat irreversibly...).
Yes; I believe this is exactly the use case that convinced the working group to make it promise-based.
That sounds good to me. It's much simpler that way.
You can't change the number, but you could deactivate/activate them (using the |
There are some open questions about encoder/decoder errors, such as what happens if simulcast functionality is requested that the browser cannot carry out, such as specifying sendEncodings to send more encodings than the browser can handle. setParameters is a Promise so an error will be returned, but it may not be obvious what exactly went wrong. There are not even any capabilities to describe the limitations on simulcast (such as how many streams can be sent or received).
Related Issue: #1323
The text was updated successfully, but these errors were encountered: