Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
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: 215
[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: 215
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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
MSI GeForce RTX 5090 Lightning Z a 2500 ...
Call of Duty: Warzone Mobile chiuder&agr...
Portatile tuttofare HP Ryzen 7, 16GB RAM...
LEFANT M3Max è uno dei robot pi&u...
Addio muffa e umidità: deumidific...
Apple TV in arrivo su CarPlay? Il codice...
TSMC pronta ad annunciare quattro nuove ...
Alla ricerca di un drone professionale a...
Stop agli assistenti AI integrati su tab...
iPhone 18 Pro e Pro Max: addio alle SIM ...
Samsung Galaxy S26: l'Exynos 2600 &egrav...
PS6 in forte ritardo e Switch 2 pi&ugrav...
Nuova rimodulazione da TIM: fino a 5 eur...
Apple annuncia un nuovo evento per il 4 ...
Veicoli elettrici a -25 °C? Le batte...
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: 10:12.


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