Changes between Version 4 and Version 5 of MjpegCourse/Station
- Timestamp:
- Feb 11, 2008, 3:49:09 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Station
v4 v5 157 157 * Exécutez la description, qui fait la compilation 158 158 {{{ 159 $ ./mjpeg .py159 $ ./mjpeg 160 160 }}} 161 161 * Lancez l'exécution de l'application … … 232 232 * Réécrivez la définition de la tâche IQZZ dans la description DSX 233 233 {{{ 234 # On avait :235 LlvmBlob('iqzz', stack_size = 1024, blob = 'src/iqzz_48x48.bc') 234 # On avait dans iqzz.task: 235 sources = [ 'iqzz.bc' ], 236 236 237 237 # On peut alors déclarer iqzz comme une tâche logicielle en C. 238 SwTask( ... ) 238 sources = [ 'iqzz.c' ], 239 239 }}} 240 240 Inspirez-vous des autres déclarations, n'oubliez pas les `defines` si vous voulez un code portable. 241 241 242 En fonction de la définition d'{{{iqzz}}} que vous utilisez (celle de `LlvmBlob` ou la vôtre),242 En fonction de la définition d'{{{iqzz}}} que vous utilisez (celle en `.bc` ou la vôtre en `.c`), 243 243 et en recompilant, vous observerez les résultats l'implémentation de référence ou de la vôtre. 244 244 … … 249 249 250 250 Un Ramdac est une RAM couplée à un DAC (Digital to Analog Converter). Le contenu de la ram est 251 converti en signal analogique pour être envoyé sur un écran. Notre Ramdac a un accès particulier: 252 Il a un comportement Fifo. Il faut écrire les pixels dans l'ordre où ils vont être affichés : 253 tous les pixels d'une ligne, puis toutes les lignes d'une image. 251 converti en signal analogique pour être envoyé sur un écran. Notre ramdac s'utilise de manière logicielle avec 252 les fonctions `fb_init` et `fb_display()`. Il déclare un tableau `fb_buffer`. 253 254 On doit faire une tâche LIBU qui prend ce qui vient de la décompression pour le ranger dans le RAMDAC. 254 255 255 256 Il se trouve que les blocs issus de la décompression JPEG font 8x8 pixels. Ils ne font pas la … … 258 259 259 260 Libu prend BLOCKS_W blocs de 8x8 pixels et en construit 8 lignes de WIDTH pixels de large 260 (rappel: BLOCKS_W*8 = WIDTH). Il peut alors envoyer successivement ces lignes au Ramdac.261 (rappel: BLOCKS_W*8 = WIDTH). 261 262 262 263 En pseudo-code, le traitement de Libu est: … … 270 271 Pour chaque ligne du bloc 271 272 Copier les 8 pixels en les mettant à leur place dans buffer 272 Pour chacune des 8 lignes du buffer:273 Envoyer la ligne274 273 }}} 275 274 * Implémentez cette tâche en C à l'aide de l'API logicielle définie dans SrlApi … … 281 280 Vous devrez créer une archive `tar.gz`, contenant un seul répertoire nommé `tp1`. Dans ce répertoire vous devrez mettre: 282 281 283 * Les répertoires des tâches iqzz et libu, contenant uniquement les fichier `.task` et `.c` 282 * Les répertoires des tâches iqzz et libu, contenant uniquement les fichier `.task` et `.c` (pas le `.bc`) 283 Bien entendu, ces deux descriptions de tâches doivent faire référence au .c, pas au .bc ! 284 284 * Votre rapport (une page maximum) en format PDF (et aucun autre) dans `tp1/rapport.pdf`. 285 285