com.unity.webrtc
com.unity.webrtc copied to clipboard
[BUG]: Encoder/Decoder priority
Package version
3.0.0-pre.7
Environment
* OS: Not related to the bug
* Unity version: Not related to the bug
Steps To Reproduce
No reproduce. Just check the code in the current behaviour.
Current Behavior
https://github.com/Unity-Technologies/com.unity.webrtc/blob/main/Plugin~/WebRTCPlugin/UnityVideoEncoderFactory.cpp#L110-L119
https://github.com/Unity-Technologies/com.unity.webrtc/blob/main/Plugin~/WebRTCPlugin/UnityVideoEncoderFactory.h#L33
Here it uses a map factories
to save the encoder implementations.
https://github.com/Unity-Technologies/com.unity.webrtc/blob/main/Plugin~/WebRTCPlugin/Codec/CreateVideoCodecFactory.h#L27-L40
It finds the first implementation support the format with the same codec.
The map is sorted by the key.
The order of the implementations will be, internal, mediacodec, nvcodec, videotoolbox.
Expected Behavior
The later 3 is hardware accelerated. I think that they should be prior.
I know that currently software h264 encoder is not built in the libwebrtc. But I think the hardware encoders should be always prior.
Anything else?
No response
The RTCRtpTransceiver
methods can be used to change the priority of the codecs to be used.
Do you expect HW Encoder to work by default in preference?
Yes. I think that the HW Encoder/Decoder is usually with better performance.