Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio

Da Gambas-it.org - Wikipedia.

La libreria Libcdaudio consente il controllo dei CD audio.

Per utilizzare le funzioni esterne del API di libcdaudio sarà necessario richiamare l'attuale libreria: "libcdaudio.so.1.0.0"


Mostriamo un semplice codice che consentirà di conoscere le seguenti informazioni:

  • presenza di un CD audio nel lettore CD;
  • durata del CD audio;
  • numero delle tracce audio presenti;
  • durata di ciascuna traccia audio.
Public Struct track_info 
  track_length_minutes As Integer
  track_length_seconds As Integer
  track_length_frames As Integer
  track_pos_minutes As Integer
  track_pos_seconds As Integer
  track_pos_frames As Integer
  track_lba As Integer
  track_type As Integer
End Struct


Public Struct disco_info
  disc_present As Integer
  disc_mode As Integer
  disc_track_time_minutes As Integer
  disc_track_time_seconds As Integer
  disc_track_time_frames As Integer
  disc_time_minutes As Integer
  disc_time_seconds As Integer
  disc_time_frames As Integer
  disc_length_minutes As Integer
  disc_length_seconds As Integer
  disc_length_frames As Integer
  disc_current_track As Integer
  disc_first_track As Integer
  disc_total_tracks As Integer
  disc_track[100] As Struct Track_info
End Struct


Library "libcdaudio:1.0.0"

' int cd_init_device(char *device_name)
' Inizializza la libreria 'libcdaudio'.
Private Extern cd_init_device(device_name As String) As Integer

' int cd_stat(int cd_desc, struct disc_info *disc)
' Ottiene informazioni generali sul CD inserito.
Private Extern cd_stat(cd_desc As Integer, disc_Str As Disco_info) As Integer

' int cd_close(int cd_desc)
' Chiude la libreria.
Private Extern cd_close(cd_desc As Integer) As Integer


Public Sub Main()

 Dim d As Integer
 Dim disco As New Disco_info
 Dim t As Byte


  d = cd_init_device("/dev/cdrom")
  If d < 0 Then Error.Raise("File-device del Drive CD non trovato !") 
  
  cd_stat(d, disco)

  If disco.disc_present = 1 Then
    Print "Il lettore CD contiene un disco audio.\n"
    Print "Durata del disco: "; disco.disc_length_minutes; "' "; disco.disc_length_seconds; "\""
    Print "Numero tracce presenti: "; disco.disc_total_tracks
    For t = 1 To disco.disc_total_tracks
      Print "Durata della traccia n. "; t; " =  "; disco.disc_track[t - 1].track_length_minutes & "' " & disco.disc_track[t - 1].track_length_seconds & "\""
    Next
  Else
    Print "Disco non presente nel lettore CD, oppure, se presente, NON è un CD audio !"
  Endif

  cd_close(d)

End



Riferimenti