miniaudio 0.11.22

miniaudio 0.11.22

O 24 de febreiro, despois de máis dun ano de desenvolvemento, lanzouse a 0.11.22 da biblioteca de captura e reprodución de audio multiplataforma. miniaudio, escrito en C e distribuído no dominio público.
miniaudio execútase en todas as principais plataformas de escritorio e móbiles, incluíndo Windows, macOS, Linux, BSD, iOS, Android e Web (a través de Emscripten) sen dependencias de terceiros.
A biblioteca ten unha API sinxela, flexible e modular con decodificadores incorporados (WAV, MP3 e FLAC), mestura avanzada e procesamento de efectos (incluíndo 3D), xestión de recursos, filtros, conversión de datos e moito máis.

Principais cambios:

  • A partir da versión 0.12, miniaudio pasará a un par separado de ficheiros .c/h, abandonando o único ficheiro de cabeceira. Para prepararse para iso, engadiuse un ficheiro miniaudio.c ao repositorio. Polo momento é só un envoltorio de miniaudio.h e MINIAUDIO_IMPLEMENTATION. Non cambiou nada en miniaudio.h, pero cando saia a versión 0.12, terás que utilizar miniaudio.c para a compilación. Recoméndase comezar a migrar de usar MINIAUDIO_IMPLEMENTATION a usar miniaudio.c. Se queres seguir construíndo o teu proxecto como unha única unidade de compilación, podes #include "miniaudio.c". Este método será compatible coa versión 0.12 e posteriores.
  • Os ficheiros miniaudio_libvorbis.h e miniaudio_libopus.h do directorio extras quedaron en desuso. Agora están divididos en ficheiros .c e .h separados no directorio extras/decoders. Os ficheiros antigos aínda existen por compatibilidade, pero terás que actualizar ás novas versións. A transición debe ser trivial.
  • Opcións engadidas MA_SOUND_FLAG_LOOPING e MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING. Pódense empregar para inicializar sons e fontes de datos baseadas en recursos para realizar un bucle por defecto. Esta é a forma recomendada de activar o bucle para fíos. As opcións de configuración de isLooping en ma_sound_config e ma_resource_manager_data_source_config quedaron en desuso. Se os usas, deberías actualizar ás novas opcións, se non, recibirás erros do compilador ao actualizar a unha versión futura.
  • ma_rb_commit_read(), ma_rb_commit_write(), ma_pcm_rb_commit_read() e ma_pcm_rb_commit_write() xa non devolven MA_AT_END. O motivo deste cambio é que non existe o concepto de "fin" nun búfer de anel, o que fixo que o código de resultado non quede claro. Ademais, estas funcións poderían devolver algo distinto de MA_SUCCESS aínda que a operación se completase con éxito, o que aumentou a confusión. A forma correcta de comprobar se aínda hai espazo no búfer de anel é mirar o contador de fotogramas devolto polas funcións rb_acquire_read/write().
  • A implementación da fonte de datos ma_pcm_rb cambiouse para que a saída se encha de silencio se non hai datos suficientes no búfer de anel para cumprir a solicitude. Isto significa que ma_data_source_read_pcm_frames() para ma_pcm_rb xa non debería devolver un número de fotogramas inferior ao que solicitaches e, polo tanto, nunca devolverá MA_AT_END, o que non ten sentido para un búfer de anel xa que non ten concepto de final. Este cambio debería facilitar moito o uso dun búfer de anel como fonte de datos para ma_sound.
  • Fíxose un pequeno cambio na función ma_calculate_buffer_size_in_milliseconds_from_frames() para que devolva un valor redondeado ao enteiro máis próximo.
  • Se a inicialización do descodificador falla, agora devólvese o primeiro código de erro atopado, en lugar de MA_NO_BACKEND independentemente do erro, como era o caso anteriormente.
  • Engadiuse a función ma_device_id_equal() para comparar os ID de dispositivos.
  • Engadiuse compatibilidade con MA_NO_RUNTIME_LINKING ao backend de AAudio.
  • Documentación actualizada.
  • Corrixíronse os erros detectados.

Fonte: linux.org.ru

Engadir un comentario