Coder sans latence : programmation temps réel pour le multimédia

Description de la formation

Le rapport au temps et à l’immédiateté est un enjeu majeur de nombreux systèmes multimédia : que ce soit dans le cadre d’un système de vidéoconférence, d’une installation interactive d’art numérique ou d’un jeu vidéo, la moindre latence de traitement gêne l’expérience utilisateur.

Cette formation vous initiera à un ensemble de techniques et méthodologies de développement logiciel adaptées à la création de systèmes temps-réel.

Vous apprendrez à utiliser des outils pour reconnaître et diagnostiquer les problématiques de latence dans des bases de code existantes, pui à appliquer des techniques de programmation améliorant la fluidité et les performances de vos logiciels.

Objectifs pédagogiques

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

  • Expliquer les enjeux et les limites du temps réel dans la création d’outils multimédias et artistiques, ainsi que les contraintes des environnements de développement conventionnels (par exemple, environnement Javascript sur Windows).
  • Programmer des logiciels de traitement de signal simples en appliquant les règles garantissant un comportement temps-réel.
  • Intégrer des outils permettant de rendre explicites les appels de fonction incompatibles avec le temps-réel;
  • Manipuler les structures avancées de la programmation temps-réel en C++ (variables atomiques, conteneurs lock-free, spinlock) pour améliorer une base de code existante.
  • Structurer et architecturer un logiciel de manière à intégrer les bonnes pratiques de programmation temps réel et à traiter différents flux multimédias (audio, vidéo, messages de contrôle).

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

Spécialistes du développement et de la création technique, designers UX, développeurs et développeuses de jeu vidéo, ingénieurs et ingénieures en systèmes embarqués, concepteurs et conceptrices d’expérience.

Particularité(s)

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