14.6 chunk ---
Lit des données IFF tronçonnées
Ce module fournit une interface pour lire les fichiers qui utilisent des
tronçons EA IFF 85.1 Ce format est utilisé
au moins dans les formats Audio Interchange File Format
(AIFF/AIFF-C) et Real Media File
Format (RMFF). Le format de fichier audio WAVE
est étroitement apparenté et peut aussi être lu avec ce module.
Un tronçon possède la structure suivante:
| Décalage | Longueur | Contenu |
| 0 | 4 | ID du tronçon |
| 4 | 4 | Taille du tronçon dans l'ordre d'octets big-endian,
en-tête non compris |
| 8 | n | Octets de données, où n est la taille donnée
dans le champ précédent |
| 8 + n | 0 or 1 | Octet de bourrage, nécessaire si n est impair
et que l'alignement de tronçon est utilisé |
L'ID est une chaîne de 4 octets qui identifie le type de tronçon.
Le champ taille (une valeur de 32 bits, encodée en utilisant l'ordre d'octets
big-endian) donne la taille des données du tronçon, sans compter l'en-tête de 8 octets.
En général un fichier de type IFF consiste en un ou plusieurs tronçons.
L'utilisation proposée de la classe Chunk définie ici est de créer une
instance au début de chaque tronçon et de lire cette instance jusqu'à en
atteindre la fin, après quoi une nouvelle instance peut être créée. En fin de
fichier, la création d'une nouvelle instance échouera en déclenchant une
exception EOFError.
- Chunk(fichier[, alignement, bigendian, inclutentete])
-
Classe qui représente un tronçon. L'argument fichier est un objet
de type fichier. Une instance de cette classe est spécifiquement autorisée.
La seule méthode dont on a besoin est read(). Si les méthodes
seek() et tell() sont présentes et ne déclenchent pas
d'exception, elles sont aussi utilisées. Si ces méthodes sont présentes
et déclenchent une exception, elles sont supposées ne pas avoir altéré
l'objet. Si l'argument optionnel alignement est vrai, les tronçons
sont supposés être alignés avec des limites de 2 octets. Si alignement
est faux, aucun alignement n'est supposé. La valeur par défaut est vrai.
Si l'argument optionnel bigendian est faux, la taille du tronçon est
supposée être dans l'ordre little-endian. Ceci est nécessaire pour les fichiers
audio WAVE. La valeur par défaut est vrai. Si l'argument optionnel inclutentete
est vrai, la taille donnée dans l'en-tête du tronçon inclut la taille de l'en-tête.
La valeur par défaut est faux.
Un objet Chunk supporte les méthodes suivantes:
getname()
-
Retourne le nom (ID) du tronçon. Il s'agit des 4 premiers octets du tronçon.
getsize()
-
Retourne la taille du tronçon.
close()
-
Ferme le tronçon et saute à sa fin. Ceci ne ferme pas le fichier sous-jacent.
Les méthodes restantes déclencheront IOError si elles sont appelées
après que la méthode close() a été appelée.
isatty()
-
Retourne
0.
seek(pos[, depuis])
-
Définit la position courante du tronçon. L'argument depuis est
optionnel et prend la valeur par défaut
0 (positionnement absolu
dans le fichier); les autres valeurs sont 1 (recherche
relativement à la position courante) et 2 (recherche relativement
à la fin du fichier). Il n'y a pas de valeur de retour. Si le fichier
sous-jacent ne permet pas la recherche, seules les recherches vers
l'avant sont autorisées.
tell()
-
Retourne la position courante dans le tronçon.
read([taille])
-
Lit au plus taille octets depuis le tronçon (moins si la lecture
atteint la fin du tronçon avant d'avoir lu taille octets). Si
l'argument taille est négatif ou omis, lit toutes les données
jusqu'à la fin du tronçon. Les octets sont retournés sous forme d'un
objet chaîne de caractères. Une chaîne de caractères vide est retournée
si la fin du tronçon est rencontrée immédiatement.
skip()
-
Saute à la fin du tronçon. Tous les appels ultérieurs à read()
pour le tronçon retourneront
''. Si le contenu du tronçon ne vous
intéresse pas, il faut appeler cette méthode pour que le fichier pointe
sur le début du tronçon suivant.
Notes
- 1
- ``EA IFF 85'' Standard for Interchange Format Files,
Jerry Morrison, Electronic Arts, January 1985.