L'accélération matérielle du décodage vidéo H. 264 dans android avant de Jelly Bean
-
21-12-2019 - |
Question
Je suis en train de travailler sur un projet de vidéoconférence.Nous avons été à l'aide de logiciels de codec pour encoder et de décoder des images vidéo qui sera parfait pour les faibles résolutions( jusqu'à 320p).Nous avons prévu de soutenir notre application pour les plus hautes résolutions jusqu'à 720p.Je suis venu pour savoir que l'accélération matérielle pour faire ce travail assez bien.
Comme le codec matériel api Media codec est disponible à partir de Jelly Bean onward je l'ai utilisé pour encoder et de décoder et fonctionnent très bien.Mais ma demande est prise en charge à partir de 2.3 .J'ai donc besoin d'avoir une accélération matérielle du décodage vidéo H. 264 images de 720p à 30fps.
Sur la recherche est venu à travers l'idée d'utiliser OMX codec en modifiant le trac cadre.J'avais lu que le décodage matériel H. 264 est disponible à partir de 2.1 et de l'encodeur est-il de 3.0.Je suis passé par de nombreux articles et des questions sur ce site et a confirmé que je peux aller de l'avant.
J'avais lu sur le trac de l'architecture ici -architecture et ici - stagefright comment il fonctionne
Et j'ai lu sur OMX codec ici --android-matériel-décodeur-avec-omxcodec-en-ndk.
Je vais avoir un problème initial et certaines confusions sur sa mise en œuvre.Je voudrais avoir quelques infos à ce sujet.
- Pour l'utilisation de OMX codec dans mon code dois-je construire mon projet avec l'ensemble de l'android à la source de l'arbre ou je peux le faire en ajoutant des fichiers à partir de PSBA source(si oui laquelle tous).
- Quelles sont les étapes à partir de zéro à suivre pour l'atteindre.
Quelqu'un peut-il me donner une ligne directrice sur ce
Merci...
La solution
Le meilleur exemple pour décrire l'intégration de OMXCodec
natif de la couche est de l'utilitaire de ligne de commande stagefright
comme on peut le constater ici dans GingerBread
lui-même.Cet exemple montre comment une OMXCodec
est créé.
Quelques points sont à noter:
L'entrée à
OMXCodec
doit être modélisé comme unMediaSource
et, par conséquent, vous devez vous assurer que votre application gère cette exigence.Un exemple pour la création d'unMediaSource
en fonction de la source de peut être trouvé dansrecord
utilitaire de fichierDummySource
.L'entrée de décodeur c'est à dire
MediaSource
doit fournir les données par le biais de laread
méthode et par conséquent, votre demande doit fournir des images individuelles pour chaqueread
appel.Le décodeur peut être créé avec
NativeWindow
pour la sortie allocation de mémoire tampon.Dans ce cas, si vous souhaitez accéder à la mémoire tampon à partir de la CPU, vous devriez probablement consulter cette requête pour plus de détails.