1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#include <stdlib.h>
#include <stdio.h>
#include <fmod.h>
#include <dirent.h>
#include <pthread.h>
#include <SDL2/SDL.h>
#include "main.h"
void play_musique(MUSIC_FILE *Fichier)
{
FMOD_SYSTEM *Systeme;
FMOD_System_Create(&Systeme);
FMOD_System_Init(Systeme, 1, FMOD_INIT_NORMAL, NULL);
FMOD_BOOL Lecture = 1;
unsigned int longeur;
if (strstr(Fichier->chemin, ".mp3")!=NULL || strstr(Fichier->chemin, ".wav")!=NULL || strstr(Fichier->chemin, ".wmv")!=NULL)
{
FMOD_SOUND *Musique=NULL;
if (FMOD_System_CreateStream(Systeme, Fichier->chemin, FMOD_2D | FMOD_LOOP_NORMAL, 0, &Musique)==-1) exit(EXIT_FAILURE);
FMOD_Sound_GetLength(Musique, &longeur, FMOD_TIMEUNIT_MS);
FMOD_Sound_SetLoopCount(Musique, Fichier->Loop_Status);
FMOD_System_PlaySound(Systeme, Musique, 0, 0, &Fichier->cannal);
SDL_Delay(longeur);
while (Lecture!=0) FMOD_Channel_IsPlaying(Fichier->cannal, &Lecture);
}
else
{
DIR *repertoire=NULL;
struct dirent *fichier_musique = NULL;
repertoire = opendir(Fichier->chemin);
if (repertoire==NULL) exit(EXIT_FAILURE);
char nom_fichier[128];
int i;
if (Fichier->liste_fichiers == NULL)
{
if ((Fichier->liste_fichiers=malloc(2*sizeof(long))) == NULL) exit(EXIT_FAILURE);
Fichier->liste_fichiers[0] = 3;
for (i=0; i<2; i++) fichier_musique = readdir(repertoire);
i = 1;
while ((fichier_musique=readdir(repertoire)) != NULL)
{
if (strstr(fichier_musique->d_name, ".mp3")!=NULL || strstr(fichier_musique->d_name, ".wav")!=NULL || strstr(fichier_musique->d_name, ".wmv")!=NULL)
{
Fichier->liste_fichiers[i] = telldir(repertoire);
if ((Fichier->liste_fichiers = realloc(Fichier->liste_fichiers, sizeof(long))) == NULL) exit(EXIT_FAILURE);
i++;
}
}
Fichier->liste_fichiers[i] = -1;
}
seekdir(repertoire, Fichier->liste_fichiers[Fichier->position_rep]-1);
do
{
fichier_musique = readdir(repertoire);
if (fichier_musique!=NULL)
{
strcpy(nom_fichier, Fichier->chemin);
strcat(nom_fichier, fichier_musique->d_name);
if (strstr(nom_fichier, ".mp3")!=NULL || strstr(nom_fichier, ".wav")!=NULL || strstr(nom_fichier, ".wmv")!=NULL)
{
FMOD_SOUND *Musique=NULL;
if (FMOD_System_CreateStream(Systeme, nom_fichier, FMOD_2D | FMOD_LOOP_NORMAL, 0, &Musique) != -1)
{
FMOD_Sound_GetLength(Musique, &longeur, FMOD_TIMEUNIT_MS);
FMOD_Sound_SetLoopCount(Musique, Fichier->Loop_Status);
FMOD_System_PlaySound(Systeme, Musique, 0, 0, &Fichier->cannal);
SDL_Delay(longeur);
while (Lecture!=0) FMOD_Channel_IsPlaying(Fichier->cannal, &Lecture);
}
Fichier->position_rep++;
seekdir(repertoire, Fichier->liste_fichiers[Fichier->position_rep]-1);
}
}
}
while (fichier_musique != NULL);
free(Fichier->liste_fichiers);
closedir(repertoire);
}
FMOD_System_Close(Systeme);
FMOD_System_Release(Systeme);
pthread_exit(0);
} |
Partager