Új hozzászólás Aktív témák

  • emitter

    őstag

    vajon miért nem működik az én kis pufferelő lejátszóm? belerakom a short típusú wav-adatokat egy listába, majd megvárom, míg eléggé feltöltődik, ezután elkezdem lejátszani

    ------
    list<short> wavList;
    ...
    if( ctrl == PLAY ){

    numbytes = recv(data_fd, wav_buf, wi->bufsize*sizeof(short), 0);
    if (numbytes == -1) {
    perror(''recv'');
    exit(0);
    }
    if (numbytes == 0){ //a kliens befejezte a beszelgetest
    break;
    }

    if(buflevel > 16){
    for(i=0; i < wi->bufsize; i++){
    wav_buf = wavList.front();
    wavList.pop_front();
    }

    if(snd_pcm_writei (wi->playback_handle, wav_buf, readbytes) < 0) {
    cout << ''\nFehler\n'';
    exit(0);
    }
    buflevel--;
    }

    for(i=0; i < wi->bufsize; i++){
    wavList.push_back(wav_buf
    );
    }
    buflevel++;
    }
    ...
    ---------

    szóval: megvárom, míg 16 db lejátszanivaló adag összegyűlik a listában, ezután rakom vissza a listából

    ha nem használok listát biztonsági pufferként, akkor rendesen lejátsza, de nekem kéne puffer

    a másik, hogy ha a kliensben lepausézom a lejátszást, hirtelen megugrik a procihasználat és ott is marad - pedig a serverben és a kliensben is select-tel figyelem a hálózati aktivitást, és az elvileg nem eszik procit..

    a források:
    server: [link]
    kliens: [link]

    szerk: a pause funkció még nem okés, de sztem csak azért nem, mert nem működik még a biztonsági puffer, így ha pause-zott állapotában kap a server egy Play-jelet, előbb küldené a puffert a hangkártyának, mint átérkezett volna a friss adag wav...

    [Szerkesztve]

Új hozzászólás Aktív témák

Hirdetés