[C - FMOD Ex] Un tchat vocal !

Signaler
-
 DeviC123 -
Bonjour a tous ! :)

Je cherche désespérément de faire marcher mon programme de tchat vocal !

Enfaite, j’appelle la fonction FMOD_System_RecordStart dans l'application cliente et j'envoie mon pointeur sound (qui contient le son) dans l'application serveur mais je ne parvient pas a les lires (je n'entends aucun son !) :/

J'ai fais le teste de ne rien envoyer et d'écouter ce que j'ai obtenu dans l'application cliente et on entend bien le son !

Je pense avoir fait l'erreur au niveau de l'écoute dans l'application serveur ! :/

Voici les sources :

Client :
FMOD_SYSTEM           *system  = 0;
                    FMOD_SOUND            *sound   = 0;
                    FMOD_CREATESOUNDEXINFO exinfo;
                    int                    recorddriver, numdrivers;
                    char                   conti = 'O';

                    FMOD_System_Create(&system);
                    FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_DSOUND);
                    FMOD_System_SetDriver(system, 0);
                    FMOD_System_GetRecordNumDrivers(system, &numdrivers);
                    recorddriver = 0;
                    FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL);

                    memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO));

                    exinfo.cbsize           = sizeof(FMOD_CREATESOUNDEXINFO);
                    exinfo.numchannels      = 1;
                    exinfo.format           = FMOD_SOUND_FORMAT_PCM16;
                    exinfo.defaultfrequency = 44100;
                    exinfo.length           = exinfo.defaultfrequency * sizeof(short) * exinfo.numchannels * 20;

                    FMOD_System_CreateSound(system, 0, FMOD_2D | FMOD_SOFTWARE | FMOD_OPENUSER, &exinfo, &sound);
                    FMOD_System_RecordStart(system, recorddriver, sound, 0);

                    while(conti == 'O')
                    {
                        if((recv(sock, &conti, sizeof(conti), 0)) == SOCKET_ERROR)
                            break;

                        else if(conti == 'N')
                            break;

                        if((send(sock, &sound, sizeof(sound), 0)) == SOCKET_ERROR)
                            break;

                        Sleep(2);
                    }
                    printf("Record stop !\n");
                    FMOD_System_RecordStop(system, recorddriver);

                    FMOD_Sound_Release(sound);
                    FMOD_System_Release(system);
                    FMOD_System_Close(system);


Serveur :
FMOD_SYSTEM           *system  = 0;
                        FMOD_SOUND            *sound   = 0;

                        FMOD_System_Create(&system);
                        FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_DSOUND);
                        FMOD_System_SetDriver(system, 0);
                        FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL);

                        FMOD_System_CreateSound(system, 0, FMOD_2D | FMOD_SOFTWARE | FMOD_OPENUSER, 0, &sound);

                        char key;
                        char conti = 'O';

                        printf("Ecoute du client en cours...\n(Appuyer a tout moment sur une touche pour arreter)\n");

                        while(!kbhit())
                        {
                            if(send(sock_client[clientChoisie].csock, &conti, sizeof(conti), 0) == SOCKET_ERROR)
                            {
                                printf("Impossible de continuer l'enregistrement !\n");
                                coContiuner = 'N';
                                break;
                            }

                            if(recv(sock_client[clientChoisie].csock, &sound, sizeof(sound), 0) == SOCKET_ERROR)
                            {
                                printf("Impossible de recevoir l'enregistrement !\n");
                                coContiuner = 'N';
                                break;
                            }

                            FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, NULL);
                            Sleep(2);
                        }


Merci d'avance pour votre possibles aide avenir !

Cordialement. :)

5 réponses

Ma demande est trop compliqué ?
Je suis sur le mauvais forum ?
J'ai mal interprété mon problème ?

C'est quoi le problème ?
UP !