|
@@ -1,7 +1,10 @@
|
|
|
+\section{Gestion des blocs de données dans le pipeline}
|
|
|
+
|
|
|
Lorsque l'on traite des données en streaming, on récupère la plupart du temps
|
|
|
-des tronçons de données. Dans VLC, ces tronçons sont annotés de données
|
|
|
-multimédia : le dts et le pts par exemple. On verra son fonctionnement en
|
|
|
-détails dans la partie encodage matériel pour Android.
|
|
|
+des tronçons de données. Dans VLC, ces tronçons sont annotés par des données
|
|
|
+multimédia : le dts et le pts par exemple, qui indique des instants pour le
|
|
|
+décodage et la présentation des images d'une vidéo. On verra son fonctionnement
|
|
|
+en détails dans la partie encodage matériel pour Android.
|
|
|
|
|
|
Ce type de données est particulièrement présent dans le pipeline multimédia de
|
|
|
VLC. On obtient des \inltype{block_t} après une lecture depuis un fichier ou le
|
|
@@ -22,5 +25,25 @@ partagée pour dresser la correspondance de pages mémoires dans des processus
|
|
|
différents. On peut donc essayer d'introduire des \inltype{block_t} alloués
|
|
|
comme des mémoires partagées que l'on transmet de processus en processus.
|
|
|
|
|
|
+\section{Intégration avec la gestion des accès}
|
|
|
+
|
|
|
Avec cette idée-là, la gestion de l'accès des processsus aux ressources devient
|
|
|
-cruciale.
|
|
|
+cruciale. Il faut d'un côté pouvoir donner accès à ces données de façon
|
|
|
+performante, mais de l'autre côté offrir une isolation suffisante entre les
|
|
|
+processus. Il faut également pouvoir s'intégrer facilement dans le système
|
|
|
+d'envoi de message.
|
|
|
+
|
|
|
+Deux solutions sont alors envisagées. La première est de créer des blocs de
|
|
|
+mémoire sous forme de jetons d'accès dès lors qu'il y a création d'un nouveau
|
|
|
+bloc. Ces blocs peuvent donc être passés de façon indépendante, idéalement avec
|
|
|
+un paradigme «fire\&forget» qui fera le transfert de l'appartenance du bloc d'un
|
|
|
+processus à l'autre. Avec cette méthode, il suffit de modifier les fonctions
|
|
|
+comme \inltype{block_Alloc}, presque aucune synchronisation supplémentaire n'est
|
|
|
+requise.
|
|
|
+
|
|
|
+La seconde solution est de créer un seul bloc de mémoire partagé entre les deux
|
|
|
+processus, puis de multiplexer l'accès dessus pour plusieurs blocs. Bien
|
|
|
+qu'étant plus compatible avec la plupart des systèmes ainsi que plus performant,
|
|
|
+cela implique des manipulations sur le tampon ainsi qu'une moins bonne isolation
|
|
|
+entre les modules, on préfèrera donc la première méthode dès lors qu'elle est
|
|
|
+possible à mettre en place.
|