Le 24 février, après plus d'un an de développement, la version 0.11.22 de la bibliothèque multiplateforme de capture et de reproduction audio a été publiée. miniaudio, écrite en C et diffusée comme domaine public.
miniaudio fonctionne sur toutes les principales plates-formes de bureau et mobiles, y compris Windows, macOS, Linux, BSD, iOS, Android et Web (via Emscripten) sans dépendances externes.
La bibliothèque dispose d'une API simple, flexible et modulaire avec des décodeurs intégrés (WAV, MP3 et FLAC), un mixage avancé et un traitement d'effets (y compris 3D), la gestion des ressources, des filtres, la conversion de données et bien plus encore.
Principales modifications :
- À partir de la version 0.12, miniaudio passera à une paire de fichiers .c/h séparés, abandonnant le fichier d'en-tête unique. Pour préparer cela, un fichier miniaudio.c a été ajouté au dépôt. Pour l'instant, il s'agit simplement d'un wrapper autour de miniaudio.h et de MINIAUDIO_IMPLEMENTATION. Rien n'a changé dans miniaudio.h, cependant, lorsque la version 0.12 sera publiée, vous devrez utiliser miniaudio.c pour la compilation. Il est recommandé de commencer la transition de l'utilisation de MINIAUDIO_IMPLEMENTATION vers l'utilisation de miniaudio.c. Si vous souhaitez continuer à compiler votre projet en tant qu'unité de compilation unique, vous pouvez faire #include "miniaudio.c". Cette méthode sera prise en charge dans la version 0.12 et au-delà.
- Les fichiers miniaudio_libvorbis.h et miniaudio_libopus.h dans le répertoire extras sont désormais obsolètes. Ils ont été séparés en fichiers .c et .h distincts dans le répertoire extras/decoders. Les anciens fichiers existent toujours pour des raisons de compatibilité, mais vous devrez passer aux nouvelles versions. La transition devrait être triviale.
- Les options MA_SOUND_FLAG_LOOPING et MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING ont été ajoutées. Elles peuvent être utilisées pour initialiser les sons et les sources de données gérées pour un bouclage par défaut. C'est la méthode recommandée pour activer le bouclage pour les flux. Les options de configuration isLooping dans ma_sound_config et ma_resource_manager_data_source_config sont désormais obsolètes. Si vous les utilisez, vous devriez passer aux nouvelles options, sinon vous rencontrerez des erreurs de compilation lors de la mise à jour vers une future version.
- Les fonctions ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() et ma_pcm_rb_commit_write() ne retournent plus MA_AT_END. La raison de ce changement est qu'il n'existe pas de concept de « fin » dans un tampon circulaire, ce qui rendait le code de résultat peu clair. De plus, ces fonctions peuvent retourner autre chose que MA_SUCCESS, même si l'opération a réussi, ce qui ajoutait une confusion supplémentaire. La bonne façon de vérifier s'il y a encore de la place dans le tampon circulaire est de consulter le compteur de trames retourné par les fonctions rb_acquire_read/write().
- L'implémentation de la source de données ma_pcm_rb a été modifiée de sorte que les sorties soient remplies de silence si le tampon circulaire ne dispose pas de suffisamment de données pour exécuter la requête. Cela signifie que ma_data_source_read_pcm_frames() pour ma_pcm_rb ne doit plus retourner un nombre de trames inférieur à celui que vous avez demandé et ne retournera donc jamais MA_AT_END, ce qui n'a pas de sens pour un tampon circulaire puisqu'il n'a pas de concept de fin. Ce changement devrait considérablement faciliter l'utilisation du tampon circulaire en tant que source de données pour ma_sound.
- Une légère modification a été apportée à la fonction ma_calculate_buffer_size_in_milliseconds_from_frames(), qui maintenant retourne une valeur arrondie à l'entier le plus proche.
- En cas d'initialisation échouée du décodeur, le premier code d'erreur rencontré est maintenant retourné, et non plus MA_NO_BACKEND indépendamment de l'erreur, comme c'était le cas auparavant.
- Une fonction ma_device_id_equal() a été ajoutée pour comparer les identifiants d'appareils.
- Support pour MA_NO_RUNTIME_LINKING ajouté dans le backend AAudio.
- La documentation a été mise à jour.
- Des bogues détectés ont été corrigés.
Source : linux.org.ru
