Bon maintenant je vais essayer d'expliquer ce que fait chaque module, ce qui permettra de trouver la partie du code source qui vous intéresse...
Déjà, le programme respecte le design pattern Model-View-Controller (MVC), avec une séparation au niveau des packages : un package model et un package view (controller est géré dans view). Le modèle est largement inspiré de la structure MKV à respecter, et par conséquent quasiment identique à la structure XML des fichiers à muxer en MKV.
La classe Session respecte le design pattern Singleton, et contient les informations d'environnement (gère un fichier de configuration, la présision -milli ou nano-, si les chapitres ont été sauvés, etc...).
Au niveau des parsers (modules qui permettent l'ouverture et la "compréhension" des différents types de fichiers), pour les débutants, le parseur OGG Chapters est intéressant (ouverture et lecture d'un fichier texte), pour les un peu plus confirmés, le parseur XML personnel (je n'ai pas utilisé d'api spécifique, j'ai fait mon propre parser XML) permet de voir comment lire un fichier XML sous forme d'arbre (même si ici il est spécifique à la lecture des chapitres).
Et enfin, pour ceux que ça intéresse, j'ai fait aussi mon propre parser IFO (qui permet de déterminer les chapitres à partir de la structure du DVD) et mon propre parser MKV (bah ouais ça n'a jamais été fait en java, d'hab c'est en c++, donc fallait bien le faire).
C'est de la lecture binaire, avec lecture d'entiers de taille variable (basée sur UTF8) pour le MKV.
D'ailleurs je remercie robux4 (développeur mkv) pour m'avoir un peu expliqué "en français" les spécifications techniques du mkv (qui sont disponibles ici: http://www.matroska.org/technical/specs/index.html), ainsi que alexnoe, développeur de avimuxgui, pour son aide, et pour m'avoir créé des MKV tordus pour tester si le programme les ouvrait :-)
Je remercie aussi Toff pour le lien vers la documentation sur la structure des .IFO qu'il m'a donné.
Pour les débutants, le code source des "writers" peut être intéressant aussi (génération de fichier texte et xml à partir du modèle).
Au niveau de l'interface, une classe qui gère toutes les images (ImageManager), un JTabbedPane (composant à onglets), une JTable éditable (avec son propre modèle utilisant le modèle de l'application).
Voilà à peu près ce qu'on peut dire au niveau du code source...
Si vous avez des questions ou des suggestions, n'hésitez pas :-)