Terminaux multimedia programmes hybrides : conception, implémentation et analyse des performances
Auteur / Autrice : | Ralf J. Schäfer |
Direction : | Ulrich Finger |
Type : | Thèse de doctorat |
Discipline(s) : | Sciences et techniques |
Date : | Soutenance en 1999 |
Etablissement(s) : | Paris, ENST |
Résumé
Mpeg-4 va aborder une nouvelle approche pour les normes des algorithmes de codage audiovisuel. Le but est de développer une norme flexible et extensible, celle-ci devant être réalisée à la deuxième étape de la mise en place de cette norme. Flexible signifie que, en fonction du flux de données arrivant, le décodeur peut se configurer dynamiquement suivant les algorithmes de décodage appropries parmi ceux déjà disponibles. Extensibles signifie que le décodeur peut être étendu dynamiquement, en téléchargeant de nouveaux outils de décodage qui seront disponibles localement par la suite. Dans ce contexte, nous présentons une implémentation d'un décodeur mpeg-4 utilisant java pour le traitement dynamique des données, c'est-à-dire permettant flexibilité et possibilité d'extension. L'avantage de java est l'utilisation d'une machine virtuelle, rendant le système indépendant de la plate-forme d'utilisation. Grace à cela, il est facile de télécharger des outils ou de modifier la configuration de ceux déjà existants. Cependant, un des principaux inconvénients de java est ses mauvaises performances. C'est pourquoi nous proposons une approche hybride, utilisant une partie implémentée en java permettant la flexibilité et les possibilités d'extension, et le reste du décodeur implémente en code natif pour conserver des performances suffisantes pour un traitement en temps réel. Nous n'utilisons java que là où c'est nécessaire. Les deux implémentations (java et code natif) sont reliées entre elles grâce à l'interface native de java (java native interface, jni). Nous utilisons la jni pour créer une instance de la machine virtuelle de java (java virtual machine, jvm) dans l'application mpeg-4 en cours d'exécution. Cette instance jvm gère toutes les implémentations de décodage java ainsi que les flux de données java entrant. Tous les autres flux de données sont gères par la partie implémentée en code natif. Une fois cette intégration effectuée, différents bancs d'essai sont effectués. D'abord les algorithmes pour le codage d'images et de vidéo sont implémentes en c et en java pour déterminer la différence de performances entre ces deux implémentations. Puis un ensemble de tests java est exécuté sur différentes machines virtuelles java (jvms) pour déterminer la plus rapide. A la fin de cette thèse, nous proposons différentes idées pour accélérer l'exécution de programmes implémentes en java.