Il 24 febbraio, dopo più di un anno di sviluppo, è stata rilasciata la versione 0.11.22 della libreria cross-platform per la cattura e riproduzione audio. miniaudio, scritta in linguaggio C e distribuita come dominio pubblico.
miniaudio funziona su tutte le principali piattaforme desktop e mobile, inclusi Windows, macOS, Linux, BSD, iOS, Android e Web (tramite Emscripten) senza dipendenze di terze parti.
La libreria ha un'API semplice, flessibile e modulare con decoder integrati (WAV, MP3 e FLAC), mixing avanzato e trattamento degli effetti (incluso 3D), gestione delle risorse, filtri, conversione dei dati e molto altro.
Variazioni principali:
- A partire dalla versione 0.12, miniaudio passerà a una coppia di file .c/.h separati, abbandonando il singolo file header. Per prepararsi a ciò, è stato aggiunto nel repository il file miniaudio.c. Attualmente è semplicemente un wrapper attorno a miniaudio.h e MINIAUDIO_IMPLEMENTATION. In miniaudio.h non ci sono state modifiche, tuttavia, quando verrà rilasciata la versione 0.12, sarà necessario utilizzare miniaudio.c per la compilazione. Si raccomanda di iniziare il passaggio dall'uso di MINIAUDIO_IMPLEMENTATION all'uso di miniaudio.c. Se desiderate continuare a compilare il vostro progetto come un'unica unità di compilazione, potete fare #include "miniaudio.c". Questo metodo sarà supportato nella versione 0.12 e oltre.
- I file miniaudio_libvorbis.h e miniaudio_libopus.h nella directory extras sono stati dichiarati obsoleti. Ora sono stati suddivisi in file .c e .h separati nella directory extras/decoders. I vecchi file esistono ancora per compatibilità, ma dovrete passare alle nuove versioni. Il passaggio dovrebbe essere banale.
- Sono state aggiunte le opzioni MA_SOUND_FLAG_LOOPING e MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Possono essere utilizzate per inizializzare suoni e fonti di dati gestite dalle risorse per il loop di default. Questo è il modo consigliato per abilitare il loop per i flussi. Le opzioni di configurazione isLooping in ma_sound_config e ma_resource_manager_data_source_config sono state dichiarate obsolete. Se le state utilizzando, dovreste passare alle nuove opzioni, altrimenti, al momento dell'aggiornamento alla versione futura, otterrete errori di compilazione.
- ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() e ma_pcm_rb_commit_write() non restituiscono più MA_AT_END. La ragione di questa modifica è che nel buffer circolare non esiste il concetto di "fine", il che rendeva il codice del risultato poco chiaro. Inoltre, queste funzioni potrebbero restituire qualcosa di diverso da MA_SUCCESS, anche se l'operazione è andata a buon fine, il che aggiungeva ulteriore confusione. Il modo corretto per verificare se c'è ancora spazio nel buffer circolare è controllare il contatore dei frame restituito dalle funzioni rb_acquire_read/write().
- L'implementazione della sorgente dati ma_pcm_rb è stata modificata in modo che l'output sia riempito di silenzio se nel buffer circolare non ci sono abbastanza dati per completare la richiesta. Questo significa che ma_data_source_read_pcm_frames() per ma_pcm_rb non deve più restituire un numero di frame inferiore a quello richiesto, e quindi non restituirà mai MA_AT_END, che non ha senso per un buffer circolare poiché non ha il concetto di fine. Questa modifica dovrebbe semplificare notevolmente l'uso del buffer circolare come sorgente dati per ma_sound.
- È stata apportata una piccola modifica alla funzione ma_calculate_buffer_size_in_milliseconds_from_frames(), che ora restituisce un valore arrotondato all'intero più vicino.
- In caso di fallimento nell'inizializzazione del decoder, ora viene restituito il primo codice di errore incontrato, invece di MA_NO_BACKEND indipendentemente dall'errore, come era precedentemente.
- È stata aggiunta la funzione ma_device_id_equal() per confrontare gli identificatori dei dispositivi.
- È stata aggiunta la supporto per MA_NO_RUNTIME_LINKING nel backend AAudio.
- Documentazione aggiornata.
- Errori rilevati corretti.
Fonte: linux.org.ru
