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 
04ID du tronçon
44Taille du tronçon dans l'ordre d'octets big-endian, en-tête non compris
8 nOctets de données, où n est la taille donnée dans le champ précédent
8 + n0 or 1Octet 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 inclutenteteest 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.