Libavformat + Libavcodec + OpenAL = AVStream

Oggi volevo parlarvi del mio ultimo programma, AVStream, uno streamer di audio che si basa su Libavformat, Libavcodec e OpenAL.

In pratica per un mio altro programma mi serviva la possibilità di poter far sentire dell’audio 3D. Così ho scoperto che OpenAL è la cosa migliore, perché, nata nel 1999, è si prefigge di essere l’OpenGL dell’audio, ovvero una specifica di API da usare per fare lo stream audio.

Il progetto è stato portato avanti da Creative, che poi però l’ha abbandonato. Attualmente solo Apple la include (anche se in una directory sbagliata) ufficialmente; una buona implementazione per gli altri sistemi, rilasciata sotto LGPL, è OpenAL Soft. In pratica come API non cambia niente, cioè sono tutte le funzioni della specifica OpenAL 1.1, solo che è tenuta aggiornata e perciò funziona con molte configurazioni diverse. Io l’ho provata su Linux con PulseAudio, OSS e ALSA.

Inizialmente volevo usare il codec libero Vorbis, però il tutorial che avevo trovato voleva far caricare in RAM tutto l’audio decompresso, quindi riprodurlo. Era una cosa inaccettabile però per i miei scopi: potrei aver bisogno di molti suoni, non potrei tenerli tutti in RAM, neanche se pesassero poco. … [Leggi il resto]