Στις 24 Φεβρουαρίου, μετά από περισσότερο από ένα χρόνο ανάπτυξης, κυκλοφόρησε το 0.11.22 της βιβλιοθήκης λήψης και αναπαραγωγής ήχου μεταξύ πλατφορμών μίνι ακουστικό, γραμμένο σε C και διανέμεται στο δημόσιο τομέα.
Το miniaudio εκτελείται σε όλες τις μεγάλες πλατφόρμες επιτραπέζιων υπολογιστών και φορητών υπολογιστών, συμπεριλαμβανομένων των Windows, macOS, Linux, BSD, iOS, Android και Web (μέσω Emscripten) χωρίς εξαρτήσεις από τρίτους.
Η βιβλιοθήκη διαθέτει ένα απλό, ευέλικτο και αρθρωτό API με ενσωματωμένους αποκωδικοποιητές (WAV, MP3 και FLAC), προηγμένη επεξεργασία μίξης και εφέ (συμπεριλαμβανομένου του 3D), διαχείριση πόρων, φίλτρα, μετατροπή δεδομένων και πολλά άλλα.
Βασικές αλλαγές:
- Ξεκινώντας με την έκδοση 0.12, το miniaudio θα μετακινηθεί σε ένα ξεχωριστό ζεύγος αρχείων .c/h, εγκαταλείποντας το μεμονωμένο αρχείο κεφαλίδας. Για να προετοιμαστείτε για αυτό, ένα αρχείο miniaudio.c έχει προστεθεί στο αποθετήριο. Αυτή τη στιγμή είναι απλώς ένα περιτύλιγμα γύρω από το miniaudio.h και το MINIAUDIO_IMPLEMENTATION. Τίποτα δεν έχει αλλάξει στο miniaudio.h, ωστόσο όταν βγει η έκδοση 0.12, θα χρειαστεί να χρησιμοποιήσετε το miniaudio.c για μεταγλώττιση. Συνιστάται να ξεκινήσετε τη μετεγκατάσταση από τη χρήση του MINIAUDIO_IMPLEMENTATION στη χρήση του miniaudio.c. Εάν θέλετε να συνεχίσετε να δημιουργείτε το έργο σας ως ενιαία μονάδα μεταγλώττισης, μπορείτε να #include "miniaudio.c". Αυτή η μέθοδος θα υποστηρίζεται στην έκδοση 0.12 και μεταγενέστερη.
- Τα αρχεία miniaudio_libvorbis.h και miniaudio_libopus.h στον κατάλογο extras έχουν καταργηθεί. Τώρα χωρίζονται σε ξεχωριστά αρχεία .c και .h στον κατάλογο πρόσθετων/αποκωδικοποιητών. Τα παλιά αρχεία εξακολουθούν να υπάρχουν για συμβατότητα, αλλά θα χρειαστεί να κάνετε αναβάθμιση στις νέες εκδόσεις. Η μετάβαση πρέπει να είναι ασήμαντη.
- Προστέθηκαν επιλογές MA_SOUND_FLAG_LOOPING και MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Μπορούν να χρησιμοποιηθούν για την προετοιμασία ήχων και πηγών δεδομένων που βασίζονται σε πόρους για βρόχο από προεπιλογή. Αυτός είναι ο προτεινόμενος τρόπος για να ενεργοποιήσετε τον βρόχο για νήματα. Οι επιλογές διαμόρφωσης isLooping στα ma_sound_config και ma_resource_manager_data_source_config έχουν καταργηθεί. Εάν τα χρησιμοποιείτε, θα πρέπει να κάνετε αναβάθμιση στις νέες επιλογές, διαφορετικά θα λάβετε σφάλματα μεταγλωττιστή κατά την αναβάθμιση σε μελλοντική έκδοση.
- Τα ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() και ma_pcm_rb_commit_write() δεν επιστρέφουν πλέον MA_AT_END. Ο λόγος για αυτήν την αλλαγή είναι ότι δεν υπάρχει η έννοια "τέλος" σε μια προσωρινή μνήμη δακτυλίου, γεγονός που έκανε τον κωδικό αποτελέσματος ασαφή. Επιπλέον, αυτές οι συναρτήσεις θα μπορούσαν να επιστρέψουν κάτι διαφορετικό από το MA_SUCCESS, ακόμη και αν η λειτουργία ολοκληρωθεί με επιτυχία, γεγονός που επέτεινε τη σύγχυση. Ο σωστός τρόπος για να ελέγξετε αν υπάρχει ακόμα χώρος στην προσωρινή μνήμη δακτυλίου είναι να κοιτάξετε τον μετρητή καρέ που επιστρέφεται από τις συναρτήσεις rb_acquire_read/write().
- Η υλοποίηση της πηγής δεδομένων ma_pcm_rb έχει αλλάξει έτσι ώστε η έξοδος να γεμίζει με σιωπή εάν δεν υπάρχουν αρκετά δεδομένα στην προσωρινή μνήμη δακτυλίου για να εκπληρώσει το αίτημα. Αυτό σημαίνει ότι το ma_data_source_read_pcm_frames() για το ma_pcm_rb δεν θα πρέπει πλέον να επιστρέφει αριθμό καρέ μικρότερο από αυτό που ζητήσατε και, επομένως, δεν θα επιστρέψει ποτέ MA_AT_END, κάτι που δεν έχει νόημα για μια προσωρινή μνήμη δακτυλίου, καθώς δεν έχει την έννοια του τέλους. Αυτή η αλλαγή θα διευκολύνει πολύ τη χρήση μιας προσωρινής μνήμης δακτυλίου ως πηγής δεδομένων για το ma_sound.
- Έγινε μια μικρή αλλαγή στη συνάρτηση ma_calculate_buffer_size_in_milliseconds_from_frames() έτσι ώστε να επιστρέφει μια τιμή στρογγυλεμένη στον πλησιέστερο ακέραιο.
- Εάν η προετοιμασία του αποκωδικοποιητή αποτύχει, ο πρώτος κωδικός σφάλματος που συναντήθηκε επιστρέφεται τώρα, αντί MA_NO_BACKEND ανεξάρτητα από το σφάλμα, όπως συνέβαινε προηγουμένως.
- Προστέθηκε η συνάρτηση ma_device_id_equal() για σύγκριση αναγνωριστικών συσκευών.
- Προστέθηκε υποστήριξη για MA_NO_RUNTIME_LINKING στο σύστημα υποστήριξης AAudio.
- Η τεκμηρίωση ενημερώθηκε.
- Τα σφάλματα που εντοπίστηκαν έχουν διορθωθεί.
Πηγή: linux.org.ru
