Unity-Technologies / com.unity.webrtc

WebRTC package for Unity
Other
738 stars 186 forks source link

[BUG]: Encoder/Decoder priority #1023

Open SetoKaiba opened 3 months ago

SetoKaiba commented 3 months ago

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

karasusan commented 3 months ago

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?

SetoKaiba commented 3 months ago

Yes. I think that the HW Encoder/Decoder is usually with better performance.