Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[La fonctionnalité associée à cette page, les E/S multimédias, est une fonctionnalité héritée. Il a été remplacé par lecteur source. lecteur source a été optimisé pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise lecteur source au lieu d'd’E/S de fichiers multimédias, le cas échéant. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Le format préféré pour les fichiers multimédias est le format de fichier d’échange de ressources (RIFF). Les fonctions d’E/S de fichier RIFF fonctionnent avec les services d’E/S de fichier mis en mémoire tampon de base et nonbuffer. Vous pouvez ouvrir, lire et écrire des fichiers RIFF de la même façon que d’autres types de fichiers. Pour plus d’informations sur RIFF, consultez fonctions et macros AVIFile.
Les fichiers RIFF utilisent des codes à quatre caractères pour identifier les éléments de fichier. Ces codes sont des quantités 32 bits représentant une séquence d’un à quatre caractères alphanumériques ASCII, empilées à droite avec des caractères d’espace. Le type de données pour les codes à quatre caractères est FOURCC. Utilisez la macro mmioFOURCC pour convertir quatre caractères en code à quatre caractères. Pour convertir une chaîne terminée par null en code à quatre caractères, utilisez la fonction mmioStringToFOURCC.
Le bloc de construction de base d’un fichier RIFF est un bloc . Un bloc est une unité logique de données multimédias, comme une trame unique dans un clip vidéo. Chaque bloc contient les champs suivants :
- Code à quatre caractères spécifiant l’identificateur de bloc
- Valeur doubleword spécifiant la taille du membre de données dans le bloc
- Champ de données
L’illustration suivante montre un bloc « RIFF » qui contient deux sous-blocs.
Un bloc contenu dans un autre segment est un sous-bloc . Les seuls blocs autorisés à contenir des sous-blocs sont ceux avec un identificateur de bloc de « RIFF » ou « LIST ». Un bloc qui contient un autre bloc est appelé segment parent. Le premier bloc d’un fichier RIFF doit être un bloc « RIFF ». Tous les autres blocs du fichier sont des sous-blocs du bloc « RIFF ».
Les blocs « RIFF » incluent un champ supplémentaire dans les quatre premiers octets du champ de données. Ce champ supplémentaire fournit le type de formulaire du champ. Le type de formulaire est un code à quatre caractères identifiant le format des données stockées dans le fichier. Par exemple, les fichiers audio de forme d’ondes Microsoft ont un type de formulaire « WAVE ».
Les blocs « LIST » incluent également un champ supplémentaire dans les quatre premiers octets du champ de données. Ce champ supplémentaire contient le type de liste du champ. Le type de liste est un code à quatre caractères identifiant le contenu de la liste. Par exemple, un bloc « LIST » avec un type de liste « INFO » peut contenir des blocs « ICOP » et « ICRD » fournissant des informations de date de création et de copyright. L’illustration suivante montre un bloc « RIFF » qui contient un bloc « LIST » et un autre sous-bloc (le bloc « LIST » contient deux sous-blocs).
Les services d’E/S de fichiers multimédias incluent deux fonctions que vous pouvez utiliser pour naviguer entre les blocs d’un fichier RIFF : mmioAscend et mmioDescend. Vous pouvez utiliser ces fonctions comme fonctions de recherche de haut niveau. Lorsque vous descendez dans un bloc, la position du fichier est définie sur le champ de données du bloc (8 octets à partir du début du bloc). Pour les blocs « RIFF » et « LIST », la position du fichier est définie sur l’emplacement suivant le type de formulaire ou le type de liste (12 octets à partir du début du bloc). Lorsque vous sortez d’un bloc, la position du fichier est définie sur l’emplacement suivant la fin du bloc.
Pour créer un bloc, utilisez la fonction mmioCreateChunk pour écrire un en-tête de bloc à la position actuelle dans un fichier ouvert. Les fonctions mmioAscend, mmioDescendet mmioCreateChunk utilisent la structure MMCKINFO pour spécifier et récupérer des informations sur les segments « RIFF ».