Conoscere con le funzioni esterne di SDL2 i dispositivi audio presenti nel sistema
Da Gambas-it.org - Wikipedia.
Versione del 4 giu 2024 alle 08:55 di Vuott (Discussione | contributi)
La libreria SDL 2 è un API multi-piattaforma contenente funzioni per la gestione multimediale dell'audio e del video.
Per poter utilizzare le funzioni esterne di SDL2 in Gambas, si richiamerà la seguente libreria condivisa: "libSDL2-2.0.so.0.3000.3 ".
Mostriamo di seguito un esempio di codice per verificare i dispositivi audio presenti nel sistema.
Library "libSDL2-2.0:0.3000.3" Private Const SDL_INIT_AUDIO As Integer = 16 ' int SDL_Init(Uint32 flags) ' Initialize the SDL library. Private Extern SDL_Init(flags As Integer) As Integer ' int SDL_GetNumAudioDrivers(void) ' Returns the number of built in audio drivers. Private Extern SDL_GetNumAudioDrivers() As Integer ' const char* SDL_GetAudioDriver(int index) ' Returns the name of the audio driver at the requested index, or NULL if an invalid index was specified. Private Extern SDL_GetAudioDriver(index As Integer) As String ' const char* SDL_GetCurrentAudioDriver(void) ' Returns the name of the current audio driver or NULL if no driver has been initialized. Private Extern SDL_GetCurrentAudioDriver() As String ' int SDL_GetNumAudioDevices(int iscapture) ' Returns the number of available devices exposed by the current driver or -1 if an explicit list of devices can't be determined. Private Extern SDL_GetNumAudioDevices(iscapture As Integer) As Integer ' const char* SDL_GetAudioDeviceName(int index, int iscapture) ' Returns the name of the audio device at the requested index, or NULL on error. Private Extern SDL_GetAudioDeviceName(index As Integer, iscapture As Integer) As String ' void SDL_Quit(void) ' Clean up all initialized subsystems. Private Extern SDL_Quit() Public Sub Main() Dim n, i As Integer ' Inizializza la libreria SDL2: If SDL_Init(SDL_INIT_AUDIO) < 0 Then Error.Raise("Impossibile inizializzare la libreria SDL2 !") ' Mostra i dispositivi audio disponibili: n = SDL_GetNumAudioDrivers() If n = 0 Then Print "Nessun driver audio presente nel sistema !\n\n" Else Print "Driver audio presenti nel sistema:" For i = 0 To n - 1 Print " "; SDL_GetAudioDriver(i) Next Endif Print "\nDriver audio usato: \n "; SDL_GetCurrentAudioDriver() For i = 0 To 1 Dispositivi(i) Next SDL_Quit() End Private Procedure Dispositivi(cattura As Integer) Dim ts As String Dim n, i As Integer ts = IIf(cattura, "cattura", "uscita") n = SDL_GetNumAudioDevices(cattura) Print "\nDispositivi di "; ts; ":" If n = -1 Then Print " Il driver non può verificare specifici dispositivi "; ts; "." Else If n = 0 Then Print " Nessun dispositivo di "; ts; " trovato." Else For i = 0 To n - 1 Print " "; SDL_GetAudioDeviceName(i, cattura) Next Endif End