2016-08-26 1 views
2

Un grand nombre, mais pas tous, d'appareils Android prennent en charge l'accélération matérielle du codec vidéo H.264, mais pas les codecs VP8/VP9. Pour offrir une expérience utilisateur de meilleure qualité, nous aimerions sélectionner le codec accéléré par le matériel lorsque cela est possible. Par conséquent, voudrait la détection d'exécution de savoir si le périphérique spécifique a la prise en charge de l'accélération matérielle H.264 ou non et basé sur cela définira les codecs particuliers qui sont utilisés dans le SDP pour la négociation de session de la connexion WebRTC. Par exemple, si H.264 est pris en charge par le matériel, alors il sera défini comme le codec de priorité supérieure par opposition à VP8/VP9. Toute réflexion à ce sujet serait grandement appréciée.Comment détecter la capacité d'accélération matérielle Android H.264

+0

De la même manière, un certain nombre de périphériques prennent en charge le codec matériel VP8/VP9 (voir http://wiki.webmproject.org/hardware/socs) - comment détecter cela à l'exécution? – SBG

Répondre

5

Utilisez l'API MediaCodecList pour parcourir les codeurs et les décodeurs disponibles. Les codeurs dont le nom commence par OMX.google. sont des codecs SW - tout autre codec peut être plus ou moins considéré comme un codec HW. Le plus simple est probablement d'utiliser findEncoderForFormat (et findDecoderForFormat) et de voir quel nom cela renvoie. Si vous avez besoin de plus de détails, vous pouvez parcourir la liste manuellement.

+0

Très apprécié! – SBG

0

Selon le commentaire de Justin Uberti here, vous allez seulement obtenir H.264 dans Android WebRTC s'il y a un codeur HW sur l'appareil. Vous pouvez donc simplement configurer WebRTC pour qu'il préfère H.264 - s'il y a un codeur HW, HW H.264 sera utilisé. Sinon, c'est VP8/VP9.