|
@@ -30,11 +30,11 @@ Actuellement, le développement de VLC est beaucoup centré sur son approche
|
|
|
multi-thread, par exemple pour que les décodeurs et les sorties fonctionnent de
|
|
|
manière indépendante et correctement synchroniser le temps. Le décodeur et la
|
|
|
sortie vidéo fonctionnent ainsi de manière asynchrone. L'idée centrale est
|
|
|
-qu'avoir plusieurs entrées en lecture et plusieurs sorties simultanément ne
|
|
|
-doit pas être impossible. Une démonstration de ce fonction a d'ailleurs été mis
|
|
|
-en place en tant que «VLM», qui permet de contrôler plusieurs flux en entrées
|
|
|
-et de choisir comment les utiliser en sortie; que ce soit en les diffusant, en
|
|
|
-créant une mosaïque ou en affichant des flux dans de nouvelles sorties.
|
|
|
+qu'avoir plusieurs entrées en lecture et plusieurs sorties simultanément ne doit
|
|
|
+pas être impossible. Une démonstration de cette fonction a d'ailleurs été mis en
|
|
|
+place en tant que «VLM», qui permet de contrôler plusieurs flux en entrées et de
|
|
|
+choisir comment les utiliser en sortie; que ce soit en les diffusant, en créant
|
|
|
+une mosaïque ou en affichant des flux dans de nouvelles sorties.
|
|
|
|
|
|
\section{Variables de configuration}
|
|
|
|
|
@@ -49,11 +49,11 @@ règles. On peut par exemple les créer avec une valeur par défaut, les créer
|
|
|
leur donner de valeur ou bien les créer en les initialisant récursivement avec
|
|
|
la valeur du parent.
|
|
|
|
|
|
-Ces variables portent ainsi une configuration qui est propre à eux, qui vient de
|
|
|
-la configuration imposée ou suggérée par leur parent, qui vient de la
|
|
|
-configuration donnée en ligne de commande ou qui vient du fichier de
|
|
|
-configuration de VLC. Il s'agit donc d'un mélange entre une interface
|
|
|
-utilisateur et une interface entre modules.
|
|
|
+Ces variables portent ainsi une configuration qui leur est propre, venant de la
|
|
|
+configuration imposée ou suggérée par leur parent, qui vient de la configuration
|
|
|
+donnée en ligne de commande ou qui vient du fichier de configuration de VLC.\@
|
|
|
+Il s'agit donc d'un mélange entre une interface utilisateur et une interface
|
|
|
+entre modules.
|
|
|
|
|
|
\section{Modules}
|
|
|
|
|
@@ -66,6 +66,8 @@ l'application.
|
|
|
Les modules sont manipulés à travers les \inltype{vlc_plugin_t} qui eux-même
|
|
|
manipulent les \inltype{module_t} contenant la représentation interne du module.
|
|
|
|
|
|
+% TODO: décrire plus exactement ce qu'il faut highlight, en particulier
|
|
|
+% chargement des modules dans la sandbox, stockage des options, etc
|
|
|
\begin{code}{c}{Structure d'un plugin}
|
|
|
typedef struct vlc_plugin_t
|
|
|
{
|
|
@@ -127,7 +129,8 @@ struct module_t
|
|
|
};
|
|
|
\end{code}
|
|
|
|
|
|
-De l'autre côté, \inltype{module_t} est réellement la description d'un module.
|
|
|
+De l'autre côté, \inltype{module_t} contient la description d'un module, qu'il
|
|
|
+soit chargé dynamiquement ou non.
|
|
|
|
|
|
Chaque module dispose d'une priorité, qui correspond au score \inltype{i_score}
|
|
|
dans \inltype{module_t}.
|
|
@@ -141,9 +144,22 @@ priorité qui est capable de se charger sans erreur.
|
|
|
contenu d'une variable au lieu d'une recherche hardcodée.
|
|
|
\end{itemize}
|
|
|
|
|
|
+Les détails de ces fonctions sont décrits ici car il s'agit de l'interface
|
|
|
+exposée par VLC pour charger un nouveau module. C'est donc un point d'entrée
|
|
|
+potentiel pour l'injection des abstractions de la sandbox.
|
|
|
+
|
|
|
+\begin{code}{c}{API de requête de module}
|
|
|
+module_t *vlc_module_load(vlc_object_t *obj, const char *capability,
|
|
|
+ const char *name, bool strict,
|
|
|
+ vlc_activate_t probe, ...);
|
|
|
+
|
|
|
+module_t *module_need(vlc_object_t *obj, const char *cap, const char *name,
|
|
|
+ bool strict)
|
|
|
+\end{code}
|
|
|
+
|
|
|
Ces fonctions sont généralement appelées après avoir créé un objet correspondant
|
|
|
au type du module en question. Si dessous, on peut voir un exemple au sein de
|
|
|
-l'api de gestion des documents XML.
|
|
|
+l'api de gestion des documents XML.\@
|
|
|
|
|
|
\begin{code}{c}{Création d'objet VLC puis chargement de modules}
|
|
|
/* from src/misc/xml.c */
|
|
@@ -165,16 +181,3 @@ de type \inltype{xml_reader}.
|
|
|
% TODO: parler de libvlc et vlc_object
|
|
|
+ parler des variables VLC
|
|
|
|
|
|
-
|
|
|
-\begin{code}{c}{API de requête de module}
|
|
|
-module_t *vlc_module_load(vlc_object_t *obj, const char *capability,
|
|
|
- const char *name, bool strict,
|
|
|
- vlc_activate_t probe, ...);
|
|
|
-
|
|
|
-module_t *module_need(vlc_object_t *obj, const char *cap, const char *name,
|
|
|
- bool strict)
|
|
|
-\end{code}
|
|
|
-
|
|
|
-Les détails de ces fonctions sont décrits ici car il s'agit de l'interface
|
|
|
-exposée par VLC pour charger un nouveau module. C'est donc un point d'entrée
|
|
|
-potentiel pour l'injection des abstractions de la sandbox.
|