Programmation temps-réel pour le multimédia

Description de la formation

Une caractéristique fondamentale de nombreux systèmes multimédias, par exemple les systèmes de vidéo-conférence, mais aussi les installations d’art numérique interactives, les logiciels de création et de production musicale, les jeux vidéos, etc., est leur rapport au temps et à leur immédiateté. Par exemple, un logiciel de simulation d’effet de guitare doit effectuer ses calculs sans délai perceptible : un musicien professionnel ressentira déjà une gêne avec des délais de traitement l’ordre de la dizaine de millisecondes.

Les langages de programmation et systèmes d’exploitation usuels ne sont pas adaptés par défaut pour ce genre de tâches, qui requièrent des précautions spécifiques : cette formation introduira les participants et particpantes à un ensemble de techniques et méthodologies de développement logiciel adaptées à la création de systèmes temps-réel.

Objectifs pédagogiques

À la fin de cette formation, vous serez en mesure de :

  • Comprendre les enjeux du temps-réel dans la création d’outils multimédia et artistiques;
  • Comprendre les limites des outils de développement conventionnels (par exemple, environnement Javascript sur Windows) face aux besoins du média temps-réel;
  • Programmer des logiciels de traitement de signal basiques en respectant un ensemble de règles garantissant un comportement temps-réel;
  • Utiliser des outils permettant de rendre explicites les appels de fonction incompatibles avec le temps-réel;
  • Connaître les outils avancés de la programmation temps-réel en C++ : variables atomiques ; conteneurs lock-free ; spinlocks ; etc.
  • Structurer et architecturer un logiciel de manière à faciliter l’application de ces règles;
  • Appliquer ces outils à différents flux de données multimédia : audio, vidéo, messages de contrôle, en prenant en compte les spécificités de chacun.

Méthodologie

Plusieurs méthodes d’apprentissage permettant de mesurer votre progrès et votre intégration des concepts sont utilisés tout au long de la formation :

  • Exposé
  • Travail individuel
  • Exercice informatique

Clientèle visée

Chefs d'équipe et superviseurs, professionnels, chargés de projets, technciens et conulstants.

Particularité

Les participants doivent avoir une expérience de programmation (idéalement au moins 2 ans d’expérience ou bien cursus d’ingénierie suivi).

    FONDAMENTAUX

    • Qu’est-ce que le temps-réel ? Quelles sont les différences entre soft real-time et hard real-time?
    • Quelles sont les spécificités du temps-réel en multimédia, que se passe-t-il lorsqu’un système de traitement de signal à destination artistique n’a pas un fonctionnement temps-réel ?
    • Quels sont les outils nécessaires à la réalisation de systèmes temps-réel : langages de programmation et systèmes d’exploitation appropriés. Pourquoi tous les langages ne permettent pas de créer des systèmes avec des garanties temps-réel.
    • Les mécanismes d’appels système, d’allocation mémoire, d’exclusion mutuelle : pourquoi sont-ils incompatibles avec un comportement temps-réel doux ?

    PROGRAMMATION TEMPS-RÉEL EN C++

    • Les bases : stratégies pour éviter les allocations mémoires
    • Structures de données dynamiques compatibles avec une approche temps-réel : files sans verrou, tables de hachage
    • Programmation à multiples fils d’exécution et temps-réel : quelle architecture choisir ?

    PROGRAMMATION TEMPS-RÉEL POUR LE MULTIMÉDIA

    • Traitement audio et image temps-réel : quels algorithmes?
    • Traitement de données de contrôle : réseau, etc.
    • Une architecture logicielle éprouvée : la programmation synchrone.
    • Applications au-delà du multimédia.
Jean-Michaël Celerier

Jean-Michaël Celerier

Jean-Michaël, directeur du développement technologique à la SAT, s'intéresse à l'art, au code, et à l'informatique musicale. Il développe suite à un cursus en ingénierie informatique et un doctorat en multimédia, une gamme de logiciels libres utilisés pour l'art numérique dont la plateforme ossia dont il est le principal développeur. Il possède une riche expérience d'enseignement en créativité numérique.

Collaborateur

SAT