Changeset de11230fbf681606705e3876f3a6a0b9849ab9da

Show
Ignore:
Timestamp:
07/02/06 21:41:17 (3 years ago)
Author:
Sigmund Augdal Helberg <sigmunau@videolan.org>
git-committer:
Sigmund Augdal Helberg <sigmunau@videolan.org> 1139344877 +0000
git-parent:

[8af26f7d31f0530c3c6b13804fb7c54f44c74971]

git-author:
Sigmund Augdal Helberg <sigmunau@videolan.org> 1139344877 +0000
Message:

access_output/udp.c: use block_Fifo for the empty blocks list. Simplifies code a lot

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/access_output/udp.c

    rccd07a2 rde11230  
    146146    int         i_group; 
    147147 
    148     vlc_mutex_t blocks_lock; 
    149     block_t     *p_empty_blocks; 
    150     int         i_empty_depth; 
     148    block_fifo_t *p_empty_blocks; 
    151149 
    152150} sout_access_thread_t; 
     
    245243    p_sys->p_thread->b_error= 0; 
    246244    p_sys->p_thread->p_fifo = block_FifoNew( p_access ); 
    247     p_sys->p_thread->p_empty_blocks = NULL; 
    248     p_sys->p_thread->i_empty_depth = 0; 
    249     vlc_mutex_init( p_access, &p_sys->p_thread->blocks_lock ); 
     245    p_sys->p_thread->p_empty_blocks = block_FifoNew( p_access ); 
    250246 
    251247    var_Get( p_access, SOUT_CFG_PREFIX "ttl", &val ); 
     
    320316 
    321317    block_FifoRelease( p_sys->p_thread->p_fifo ); 
     318    block_FifoRelease( p_sys->p_thread->p_empty_blocks ); 
    322319 
    323320    if( p_sys->p_buffer ) block_Release( p_sys->p_buffer ); 
    324     while ( p_sys->p_thread->p_empty_blocks != NULL ) 
    325     { 
    326         block_t *p_next = p_sys->p_thread->p_empty_blocks->p_next; 
    327         block_Release( p_sys->p_thread->p_empty_blocks ); 
    328         p_sys->p_thread->p_empty_blocks = p_next; 
    329     } 
    330     vlc_mutex_destroy( &p_sys->p_thread->blocks_lock ); 
    331321 
    332322    net_Close( p_sys->p_thread->i_handle ); 
     
    429419    block_t *p_buf; 
    430420 
    431     vlc_mutex_lock( &p_sys->p_thread->blocks_lock ); 
    432     while ( p_sys->p_thread->i_empty_depth >= MAX_EMPTY_BLOCKS ) 
    433     { 
    434         p_buf = p_sys->p_thread->p_empty_blocks; 
    435         p_sys->p_thread->p_empty_blocks = 
    436                     p_sys->p_thread->p_empty_blocks->p_next; 
    437         p_sys->p_thread->i_empty_depth--; 
    438         vlc_mutex_unlock( &p_sys->p_thread->blocks_lock ); 
     421    while ( p_sys->p_thread->p_empty_blocks->i_depth >= MAX_EMPTY_BLOCKS ) 
     422    { 
     423        p_buf = block_FifoGet(p_sys->p_thread->p_empty_blocks); 
    439424        block_Release( p_buf ); 
    440         vlc_mutex_lock( &p_sys->p_thread->blocks_lock ); 
    441     } 
    442     vlc_mutex_unlock( &p_sys->p_thread->blocks_lock ); 
     425    } 
    443426 
    444427    block_FifoPut( p_sys->p_thread->p_fifo, p_buffer ); 
     
    464447    block_t *p_buffer; 
    465448 
    466     vlc_mutex_lock( &p_sys->p_thread->blocks_lock ); 
    467     while ( p_sys->p_thread->i_empty_depth > MAX_EMPTY_BLOCKS ) 
    468     { 
    469         p_buffer = p_sys->p_thread->p_empty_blocks; 
    470         p_sys->p_thread->p_empty_blocks = 
    471                     p_sys->p_thread->p_empty_blocks->p_next; 
    472         p_sys->p_thread->i_empty_depth--; 
    473         vlc_mutex_unlock( &p_sys->p_thread->blocks_lock ); 
     449    while ( p_sys->p_thread->p_empty_blocks->i_depth > MAX_EMPTY_BLOCKS ) 
     450    { 
     451        p_buffer = block_FifoGet( p_sys->p_thread->p_empty_blocks ); 
    474452        block_Release( p_buffer ); 
    475         vlc_mutex_lock( &p_sys->p_thread->blocks_lock ); 
    476     } 
    477     p_buffer = p_sys->p_thread->p_empty_blocks; 
    478     if ( p_buffer != NULL ) 
    479     { 
    480         p_sys->p_thread->p_empty_blocks = 
    481                     p_sys->p_thread->p_empty_blocks->p_next; 
    482         p_sys->p_thread->i_empty_depth--; 
    483         vlc_mutex_unlock( &p_sys->p_thread->blocks_lock ); 
    484         p_buffer->p_next = NULL; 
     453    } 
     454 
     455    if( p_sys->p_thread->p_empty_blocks->i_depth == 0 ) 
     456    { 
     457        p_buffer = block_New( p_access->p_sout, p_sys->i_mtu ); 
     458    } 
     459    else 
     460    { 
     461        p_buffer = block_FifoGet(p_sys->p_thread->p_empty_blocks );        
    485462        p_buffer->i_flags = 0; 
    486463        p_buffer = block_Realloc( p_buffer, 0, p_sys->i_mtu ); 
    487     } 
    488     else 
    489     { 
    490         vlc_mutex_unlock( &p_sys->p_thread->blocks_lock ); 
    491         p_buffer = block_New( p_access->p_sout, p_sys->i_mtu ); 
    492464    } 
    493465 
     
    536508# define strerror( x ) winsock_strerror( strerror_buf ) 
    537509#endif 
     510    int i = 0; 
    538511 
    539512    while( !p_thread->b_die ) 
     
    541514        block_t *p_pk; 
    542515        mtime_t       i_date, i_sent; 
    543  
     516#if 0 
     517        if( (i++ % 1000)==0 ) { 
     518          int i = 0; 
     519          block_t *p_tmp = p_thread->p_empty_blocks->p_first; 
     520          while( p_tmp ) { p_tmp = p_tmp->p_next; i++;} 
     521      msg_Err( p_thread, "fifo depth: %d, empty blocks: %d/%d", 
     522                   p_thread->p_fifo->i_depth, p_thread->p_empty_blocks->i_depth,i ); 
     523    } 
     524#endif 
    544525        p_pk = block_FifoGet( p_thread->p_fifo ); 
    545526 
     
    553534                             i_date - i_date_last ); 
    554535 
    555                 vlc_mutex_lock( &p_thread->blocks_lock ); 
    556                 p_pk->p_next = p_thread->p_empty_blocks; 
    557                 p_thread->p_empty_blocks = p_pk; 
    558                 p_thread->i_empty_depth++; 
    559                 vlc_mutex_unlock( &p_thread->blocks_lock ); 
     536                block_FifoPut( p_thread->p_empty_blocks, p_pk ); 
    560537 
    561538                i_date_last = i_date; 
     
    598575#endif 
    599576 
    600         vlc_mutex_lock( &p_thread->blocks_lock ); 
    601         p_pk->p_next = p_thread->p_empty_blocks; 
    602         p_thread->p_empty_blocks = p_pk; 
    603         p_thread->i_empty_depth++; 
    604         vlc_mutex_unlock( &p_thread->blocks_lock ); 
     577        block_FifoPut( p_thread->p_empty_blocks, p_pk ); 
    605578 
    606579        i_date_last = i_date;