Extrayez le sujet de TP : tp_dct.tar.gz
Le but des TP est de programmer un compresseur/décompresseur de sons et d'images. Vous ne programmerez que les parties intéressantes.
De plus chacune des fonctions que vous écrivez sera testées automatiquement afin de vous prévenir pour les erreurs les plus courantes.
Les fichiers que vous devez compléter (par 579 lignes de C) sont dans l'ordre :
bit.c bitstream.c bits.c entier.c sf.c matrice.c dct.c psycho.c rle.c image.c jpg.c ondelette.c
Je vous conseille de regarder les macros de bases.h elles sont bien utiles.
En aucun cas vous ne devez faire de printf sur la sortie standard. Vous devez faire vos sorties pour le debuggage sur la sortie d'erreur : fprintf( stderr, ...)
Des fonctions C (1736 lignes) vérifiant si vos fonctions ont l'air de fonctionner existent. Pour tester l'ensemble de vos fonctions, vous tapez :
make
Vous pouvez lancer le test immédiatement après avoir fini une fonction. La fonction qui teste la fonction toto du fichier truc.c s'apelle toto_tst et se trouve dans le fichier truc_tst.c.
Quand vous aurez fait dct.c, vous pourrez commencer à créer une page Web avec quelques graphismes et statistiques pour le son, ou pour l'image quand vous aurez terminé jpeg.c ou ondelette.c. Les scripts suivants génèrent des pages Web :
page_son
page_jpeg
page_ondelette
Ces trois programmes sont des scripts shell facilement paramétrables pour que vous puissiez tester tous les paramètres des différents algorithmes.
Les différentes étapes de transformation des sons et images sont faites en utilisant des filtres qui sont composés avec des pipes.
export NBE=128 # Taille linéaire de la DCT
export QUALITE=1 # Qualité de "psycho" ou "quantification"
export SHANNON=0 # Si 1, utilise shannon-fano dynamique au lieu de table statiques
Les filtres proposés sont :
Nom du filtre | Entrée Standard | Sortie Standard | Paramètres |
---|---|---|---|
affiche_son | Son (octets) | Rien (fenêtre sur l'écran) | NBE |
dct | Son (octets) | Dct (flottant) | NBE |
dctinv | Dct (flottant) | Son | NBE |
affiche_dct | Dct (flottant) | Rien (fenêtre sur l'écran) | NBE |
psycho | Dct (flottant) | Dct (flottant) | NBE, QUALITE |
rle | Dct image ou non (flottant) | Bits | NBE, SHANNON |
rleinv | Bits | Dct image ou non (flottant) | NBE, SHANNON |
imagedct | PGM | Dct image (flottant) | NBE |
imagedctinv | Dct image (flottant) | PGM | NBE |
quantif | Dct image (flottant) | Dct image (flottant) | NBE, QUALITE |
quantifinv | Dct image (flottant) | Dct image (flottant) | NBE, QUALITE |
zigzag | Dct image (flottant) | Dct image (flottant) | NBE |
zigzaginv | Dct image (flottant) | Dct image (flottant) | NBE |
ondelette | PGM | Bits | QUALITE, SHANNON |
ondeletteinv | Bits | PGM | |
sf8 | Octet | Egalisation Bit Shannon Fano | |
sf16 | Pair octet | Egalisation Bit Shannon Fano |