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

Advanced Codec Capabilities API #53

Closed
henbos opened this issue Sep 17, 2019 · 10 comments
Closed

Advanced Codec Capabilities API #53

henbos opened this issue Sep 17, 2019 · 10 comments
Assignees

Comments

@henbos
Copy link

henbos commented Sep 17, 2019

Use case:
Allow applications to make smarter decisions when choosing codecs taking implementation capabilities into account, such as preferring hardware accelerated implementations over non-hardware accelerated ones.

Proposal:
New API that allows enumerating encoder and decoder implementations, not just codecs. Each implementation could say if it is HW accelerated or not and what its hard limits are in terms of resolution etc. Ideally this might also say something about how "performant" one can expect the implementation to be, but just knowing HW is useful. This could allow applications to...

  • Better support low-end devices.
  • Improve battery life by utilizing hardware.
  • Discover limitations (e.g. min and max resolution) of particular implementations prior to negotiating.
  • Avoid "bad" implementations if the implementation can identify itself. Maybe an implementation X is good for conferencing use cases but has too high latency for gaming use cases.

Alternatives:
WebRTC 1.0 has RTCRtpCodecCapabilities containing RTCRtpCodecCapability. This gives us mimeType and fmptLine, i.e.

  • Codec
  • Codec parameters

But it could be extended, e.g. "isHardwareAccelerated"

@henbos
Copy link
Author

henbos commented Sep 20, 2019

Feedback from TPAC-9-19-2019: Define use cases in a PR

@henbos
Copy link
Author

henbos commented Sep 20, 2019

I would assign myself and add labels but I don't have those repo permissions it seems :) @aboba @dontcallmedom

@henbos
Copy link
Author

henbos commented Sep 20, 2019

Note to self: Also include Chris Cunningham of Media Capabilities API into the discussions, this is very related to that API.

@dontcallmedom
Copy link
Member

done @henbos

@henbos
Copy link
Author

henbos commented Sep 20, 2019

I still can't assign myself the issue :'(

@aboba
Copy link
Collaborator

aboba commented Jan 12, 2023

@henbos Has this issue been addressed by the Media Capabilities API?

@henbos
Copy link
Author

henbos commented Jan 12, 2023

I think the combination for Media Capabilities (giving us an expectations of HW capabilities per codec) and getStats() telling us whether or not we are, in fact, getting HW (powerEfficientEncoder/Decoder) should be enough to close this issue.

@henbos henbos closed this as completed Jan 12, 2023
@henbos henbos reopened this Jan 12, 2023
@henbos
Copy link
Author

henbos commented Jan 12, 2023

Re-open: I guess it should still be listed as a use case?

@aboba
Copy link
Collaborator

aboba commented Jan 12, 2023

@henbos Once we define the requirement, we can figure out if where it belongs (e.g. in a new use case, or in existing ones). But I do think it would be useful to have a requirement, if only to understand whether MC and getStats() is sufficient to meet it. Personally, I'm not sure because we haven't been able to figure out how to replace getCapabiltiies() with MC in WebRTC-SVC.

@aboba
Copy link
Collaborator

aboba commented Mar 29, 2023

Closing. Please re-open if there is something missing.

@aboba aboba closed this as completed Mar 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants