Changeset 09eaac810866232ee437516ca2a8fb6bcfd8b523

Show
Ignore:
Timestamp:
03/02/07 20:51:20 (2 years ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1172865080 +0000
git-parent:

[b5d7934fc8bb26f7f92ddfcea76485e34bc953e2]

git-author:
Laurent Aimar <fenrir@videolan.org> 1172865080 +0000
Message:

Packetizers should trash all blocks with DISCONTINUITY or CORRUPTED flag set.

As a side effect, this workaround the AAC decoding problem after pause/seek
when going through our packetizer (eg: pause/seek with vlc VOD).

But the bug is still there : faad will stop decoding audio forever after
receiving a buffer full of 0 (at least with faad2-2.5 from
audiocoding.com, faad2 from mplayer svn does not show this problem)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/packetizer/copy.c

    rde90c15 r09eaac8  
    257257 
    258258    if( pp_block == NULL || *pp_block == NULL ) 
    259     { 
    260         return NULL; 
    261     } 
     259        return NULL; 
     260    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     261    { 
     262        block_Release( *pp_block ); 
     263        return NULL; 
     264    } 
     265 
    262266    p_block = *pp_block; 
    263267    *pp_block = NULL; 
     
    292296 
    293297    if( pp_block == NULL || *pp_block == NULL ) 
    294     { 
    295         return NULL; 
    296     } 
     298        return NULL; 
     299    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     300    { 
     301        block_Release( *pp_block ); 
     302        return NULL; 
     303    } 
     304 
    297305    p_block = *pp_block; 
    298306    *pp_block = NULL; 
  • modules/packetizer/h264.c

    rb160af6 r09eaac8  
    312312    block_t       *p_pic; 
    313313 
    314     if( !pp_block || !*pp_block ) return NULL; 
     314    if( !pp_block || !*pp_block ) 
     315        return NULL; 
     316    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     317    { 
     318        p_sys->i_state = STATE_NOSYNC; 
     319        block_Release( *pp_block ); 
     320        return NULL; 
     321    } 
    315322 
    316323    block_BytestreamPush( &p_sys->bytestream, *pp_block ); 
     
    401408    uint8_t       *p; 
    402409 
    403     if( !pp_block || !*pp_block ) return NULL; 
     410    if( !pp_block || !*pp_block ) 
     411        return NULL; 
     412    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     413    { 
     414        block_Release( *pp_block ); 
     415        return NULL; 
     416    } 
    404417 
    405418    p_block = *pp_block; 
  • modules/packetizer/mpeg4audio.c

    r75688a7 r09eaac8  
    217217    if( !pp_block || !*pp_block ) return NULL; 
    218218 
     219    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     220    { 
     221        block_Release( *pp_block ); 
     222        return NULL; 
     223    } 
     224 
    219225    p_block = *pp_block; 
    220226    *pp_block = NULL; /* Don't reuse this block */ 
     
    258264        return NULL; 
    259265    } 
    260  
    261     if( (*pp_block)->i_flags&BLOCK_FLAG_DISCONTINUITY ) 
     266    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    262267    { 
    263268        p_sys->i_state = STATE_NOSYNC; 
     269        block_Release( *pp_block ); 
     270        return NULL; 
    264271    } 
    265272 
  • modules/packetizer/mpeg4video.c

    rd3fe7f2 r09eaac8  
    225225    if( pp_block == NULL || *pp_block == NULL ) return NULL; 
    226226 
    227     if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY
     227    if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)
    228228    { 
    229229        p_sys->i_state = STATE_NOSYNC; 
  • modules/packetizer/vc1.c

    rf956481 r09eaac8  
    195195        return NULL; 
    196196 
    197     if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY ) 
    198     { 
    199         block_Release( *pp_block ); 
    200         return NULL; 
    201     } 
    202     if( (*pp_block)->i_flags & BLOCK_FLAG_CORRUPTED ) 
     197    if( (*pp_block)->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) ) 
    203198    { 
    204199        p_sys->i_state = STATE_NOSYNC;