Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-07-2006, 22:33   #1
mfonz85
Member
 
L'Avatar di mfonz85
 
Iscritto dal: Sep 2005
Città: Bus PCI 1, periferica 0, funzione 0 (Torino)
Messaggi: 213
[C][libreria almp3 di allegro] Strano problema...

Ciao a tutti, mi rivolgo a coloro che conoscono la libreria Allegro e in particolare la libreria almp3 (quella che permette l'uso di file mp3 con poche semplici funzioni e che si basa per l'appunto sulla libreria Allegro)
Il codice di esempio che dà il developer della libreria recita più o meno così, a parte qualche modifica...
Codice:
#include <string.h>
#include <allegro.h>
#include <almp3.h>


void putstr(char *s);


#define DATASZ  (1<<15)
#define BUFSZ   (1<<16)


typedef struct {
  PACKFILE *f;
  ALMP3_MP3STREAM *s;
} MP3FILE;

void putstr(char *s) {
  static int y = 0;
  textout_ex(screen, font, s, 0, y, makecol(0, 0, 0), -1);
  y += text_height(font);
}

MP3FILE *open_mp3_file(char *filename) {
  MP3FILE *p = NULL;
  PACKFILE *f = NULL;
  ALMP3_MP3STREAM *s = NULL;
  char data[DATASZ];
  int len;

  if (!(p = (MP3FILE *)malloc(sizeof(MP3FILE))))
    goto error;
  if (!(f = pack_fopen(filename, F_READ)))
    goto error;
  if ((len = pack_fread(data, DATASZ, f)) <= 0)
    goto error;
  if (len < DATASZ) {
    if (!(s = almp3_create_mp3stream(data, len, TRUE)))
      goto error;
  }
  else {
    if (!(s = almp3_create_mp3stream(data, DATASZ, FALSE)))
      goto error;
  }
  p->f = f;
  p->s = s;
  return p;

  error:
  pack_fclose(f);
  free(p);
  return NULL;
}


int play_mp3_file(MP3FILE *mp3, int buflen, int vol, int pan) {
  return almp3_play_mp3stream(mp3->s, buflen, vol, pan);
}


void close_mp3_file(MP3FILE *mp3) {
  if (mp3) {
    pack_fclose(mp3->f);
    almp3_destroy_mp3stream(mp3->s);
    free(mp3);
  }
}


int poll_mp3_file(MP3FILE *mp3) {
  char *data;
  long len;

  data = (char *)almp3_get_mp3stream_buffer(mp3->s);
  if (data) {
    len = pack_fread(data, DATASZ, mp3->f);
    if (len < DATASZ)
      almp3_free_mp3stream_buffer(mp3->s, len);
    else
      almp3_free_mp3stream_buffer(mp3->s, -1);
  }

  return almp3_poll_mp3stream(mp3->s);
}


void do_example(char *filename) {
  MP3FILE **mp3 = (MP3FILE **)malloc(sizeof(MP3FILE *));
  int remain, i;

  if ((*mp3 = open_mp3_file(filename)))
      play_mp3_file(*mp3, BUFSZ, 255, 128);
  else putstr("Error opening.");

  while(almp3_is_playing_mp3((ALMP3_MP3 *)mp3)) {
      if ((*mp3) && (poll_mp3_file(*mp3) != ALMP3_OK)) {
        close_mp3_file(*mp3);
        *mp3 = NULL;
        remain--;
      }
  }

  close_mp3_file(*mp3);

  free(mp3);
}


int main(int argc, char *argv[]) { 
  allegro_init();

  char filename[255];
  
  printf("Inserisci il nome del file da caricare (es. c:\\tuosuono.mp3): ");
  scanf("%s",filename);

  install_timer();
  install_keyboard();

  if (set_gfx_mode(GFX_SAFE, 640, 480, 0, 0) < 0) {
    allegro_message("Impossibile inizializzare il video.\n");
    return 1;
  }
  clear_to_color(screen, makecol(255, 255, 255));

  set_volume_per_voice(0);

  if (install_sound(DIGI_AUTODETECT, MIDI_NONE, 0) < 0) {
    set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
    allegro_message("Impossibile inizializzare il suono.\n");
    return 1;
  }

  set_display_switch_mode(SWITCH_BACKGROUND);

  do_example(filename);

  allegro_exit();

  return 0;
}
END_OF_MAIN();
Il punto è che funziona perfettamente, ma il programma occupa il 100% del processore
E' normale e capita pure a voi, oppure il codice fà un pò schifo???
C'è qualche modo per ottimizzare il tutto??

Seconda domanda...me lo chiedo da molto...
Con la funzione allegro_init() praticamente si apre una nuova finestra dalla finestra console primaria del programma...
Come è possibile inglobare il tutto dentro un'unica "grossa" finestra di windows in modo che l'allegro_init() funzioni lì dentro???

Grazie anticipatamente x l'aiuto!!!
__________________
Ho concluso affari con: Ippo 2001, Klintf, albert78, Piripikkio, starsky, oldfield e IL0V€INT€R. da EVITARE zarovat
mfonz85 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2006, 23:03   #2
mfonz85
Member
 
L'Avatar di mfonz85
 
Iscritto dal: Sep 2005
Città: Bus PCI 1, periferica 0, funzione 0 (Torino)
Messaggi: 213
Nessuna idea??
__________________
Ho concluso affari con: Ippo 2001, Klintf, albert78, Piripikkio, starsky, oldfield e IL0V€INT€R. da EVITARE zarovat
mfonz85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Super ribassi Bose su Amazon: QuietComfo...
Instagram cambia rotta: basta lavoro ibr...
AirPods Pro 3 a prezzo bomba, ma le AirP...
Prezzi giù su Oral-B: spazzolini elettri...
Europol ha smantellato Cryptomixer: sequ...
Roborock H60 Hub: aspira e si svuota da ...
Xiaomi fa sul serio anche sulle auto: su...
NVIDIA in prima fila per il processo a 1...
Samsung Galaxy Z TriFold: il primo smart...
Windows 11 è un disastro: ha biso...
BYD domina in Italia tra le elettriche: ...
Li abbiamo scovati nel catalogo Amazon: ...
Samsung Galaxy S26: la ricarica wireless...
Quale sarà il prezzo della Steam ...
Xiaomi 17 Ultra è sempre pi&ugrav...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v