Changeset 404:10ead63371eb in mediastreamer2


Ignore:
Timestamp:
Apr 7, 2009 3:02:18 PM (4 years ago)
Author:
aymeric <aymeric@…>
Branch:
default
Message:

5 buffer is needed for irregular sound cards

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@407 3f6dc0c8-ddfe-455d-9043-3cd528dc4637

File:
1 edited

Legend:

Unmodified
Added
Removed
  • linphone/mediastreamer2/src/speexec.c

    r336 r404  
    109109                } 
    110110 
    111                 /* make sure we always send block with same size */ 
    112                 while (ms_bufferizer_get_avail(&s->speak_delay)>=nbytes) 
     111                if (s->size_delay<s->playback_delay) 
    113112                { 
    114                         om0=allocb(nbytes,0); 
    115                         ms_bufferizer_read(&s->speak_delay,(uint8_t*)om0->b_wptr,nbytes); 
    116                         om0->b_wptr+=nbytes; 
    117                         ms_queue_put(f->outputs[0],om0); 
     113                        /* make sure we always send block with same size */ 
     114                        while (ms_bufferizer_get_avail(&s->speak_delay)>=nbytes) 
     115                        { 
     116                                om0=allocb(nbytes,0); 
     117                                ms_bufferizer_read(&s->speak_delay,(uint8_t*)om0->b_wptr,nbytes); 
     118                                om0->b_wptr+=nbytes; 
     119                                ms_queue_put(f->outputs[0],om0); 
     120                        } 
     121 
     122                        /* make sure we always send block with same size */ 
     123                        ms_bufferizer_put_from_queue(&s->in[1],f->inputs[1]); 
     124                        while (ms_bufferizer_get_avail(&s->in[1])>=nbytes) 
     125                        { 
     126                                om0=allocb(nbytes,0); 
     127                                ms_bufferizer_read(&s->in[1],(uint8_t*)om0->b_wptr,nbytes); 
     128                                om0->b_wptr+=nbytes; 
     129                        ms_queue_put(f->outputs[1],om0); 
     130                        } 
     131                        /* we are now equal and speaker is delayed */ 
     132                        return; 
    118133                } 
    119  
    120                 /* make sure we always send block with same size */ 
    121                 ms_bufferizer_put_from_queue(&s->in[1],f->inputs[1]); 
    122                 while (ms_bufferizer_get_avail(&s->in[1])>=nbytes) 
    123                 { 
    124                         om0=allocb(nbytes,0); 
    125                         ms_bufferizer_read(&s->in[1],(uint8_t*)om0->b_wptr,nbytes); 
    126                         om0->b_wptr+=nbytes; 
    127                 ms_queue_put(f->outputs[1],om0); 
    128                 } 
    129                 /* we are now equal and speaker is delayed */ 
    130                 return; 
    131134    } 
    132135 
     
    182185        } 
    183186 
    184         if (ms_bufferizer_get_avail(&s->speak_delay)> 4*320*(s->samplerate/8000)) /* above 4*20ms -> useless */ 
     187        if (ms_bufferizer_get_avail(&s->speak_delay)> 5*320*(s->samplerate/8000)) /* above 4*20ms -> useless */ 
    185188          { 
    186189            /* reset evrything */ 
     
    196199          } 
    197200 
    198         while (ms_bufferizer_get_avail(&s->in[1])> 4*320*(s->samplerate/8000)){ 
     201        while (ms_bufferizer_get_avail(&s->in[1])> 5*320*(s->samplerate/8000)){ 
    199202                om1=allocb(nbytes,0); 
    200203                ms_bufferizer_read(&s->in[1],(uint8_t*)om1->b_wptr,nbytes); 
Note: See TracChangeset for help on using the changeset viewer.