Changeset ab1b0ebec326fae87388c7904c952e827acffe50

Show
Ignore:
Timestamp:
05/30/07 19:36:36 (1 year ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1180546596 +0000
git-parent:

[07ed62b5a83261ca6692ddf18144932981c6e715]

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

Improved BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED handling in packetizers.
(I do not reset timestamp on purpose, it will at least break demuxer using
packetizer)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/codec/a52.c

    rd3fe7f2 rab1b0eb  
    169169    if( !pp_block || !*pp_block ) return NULL; 
    170170 
     171    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     172    { 
     173        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     174        { 
     175            p_sys->i_state = STATE_NOSYNC; 
     176            block_BytestreamFlush( &p_sys->bytestream ); 
     177        } 
     178//        aout_DateSet( &p_sys->end_date, 0 ); 
     179        block_Release( *pp_block ); 
     180        return NULL; 
     181    } 
     182 
    171183    if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) 
    172184    { 
     
    174186        block_Release( *pp_block ); 
    175187        return NULL; 
    176     } 
    177  
    178     if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    179     { 
    180         p_sys->i_state = STATE_NOSYNC; 
    181188    } 
    182189 
  • modules/codec/dts.c

    rd3fe7f2 rab1b0eb  
    171171    if( !pp_block || !*pp_block ) return NULL; 
    172172 
     173    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     174    { 
     175        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     176        { 
     177            p_sys->i_state = STATE_NOSYNC; 
     178            block_BytestreamFlush( &p_sys->bytestream ); 
     179        } 
     180//        aout_DateSet( &p_sys->end_date, 0 ); 
     181        block_Release( *pp_block ); 
     182        return NULL; 
     183    } 
     184 
    173185    if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) 
    174186    { 
     
    176188        block_Release( *pp_block ); 
    177189        return NULL; 
    178     } 
    179  
    180     if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    181     { 
    182         p_sys->i_state = STATE_NOSYNC; 
    183190    } 
    184191 
  • modules/codec/flac.c

    rd0f70cd rab1b0eb  
    377377    if( !pp_block || !*pp_block ) return NULL; 
    378378 
     379    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     380    { 
     381        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     382        { 
     383            p_sys->i_state = STATE_NOSYNC; 
     384            block_BytestreamFlush( &p_sys->bytestream ); 
     385        } 
     386//        aout_DateSet( &p_sys->end_date, 0 ); 
     387        block_Release( *pp_block ); 
     388        return NULL; 
     389    } 
     390 
    379391    if( !p_sys->b_stream_info ) ProcessHeader( p_dec ); 
    380392 
     
    395407        /* The first PTS is as good as anything else. */ 
    396408        aout_DateSet( &p_sys->end_date, (*pp_block)->i_pts ); 
    397     } 
    398  
    399     if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    400     { 
    401         p_sys->i_state = STATE_NOSYNC; 
    402409    } 
    403410 
  • modules/codec/mpeg_audio.c

    r38dd594 rab1b0eb  
    197197    if( !pp_block || !*pp_block ) return NULL; 
    198198 
     199    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     200    { 
     201        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     202        { 
     203            p_sys->i_state = STATE_NOSYNC; 
     204            block_BytestreamFlush( &p_sys->bytestream ); 
     205        } 
     206//        aout_DateSet( &p_sys->end_date, 0 ); 
     207        block_Release( *pp_block ); 
     208        return NULL; 
     209    } 
     210 
    199211    if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) 
    200212    { 
     
    203215        block_Release( *pp_block ); 
    204216        return NULL; 
    205     } 
    206  
    207     if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    208     { 
    209         p_sys->i_state = STATE_NOSYNC; 
    210217    } 
    211218 
  • modules/packetizer/h264.c

    r09eaac8 rab1b0eb  
    314314    if( !pp_block || !*pp_block ) 
    315315        return NULL; 
     316 
    316317    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    317318    { 
    318         p_sys->i_state = STATE_NOSYNC; 
     319        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     320        { 
     321            p_sys->i_state = STATE_NOSYNC; 
     322            block_BytestreamFlush( &p_sys->bytestream ); 
     323 
     324            if( p_sys->p_frame ) 
     325                block_ChainRelease( p_sys->p_frame ); 
     326            p_sys->p_frame = NULL; 
     327            p_sys->slice.i_frame_type = 0; 
     328            p_sys->b_slice = VLC_FALSE; 
     329        } 
    319330        block_Release( *pp_block ); 
    320331        return NULL; 
  • modules/packetizer/mpeg4audio.c

    r09eaac8 rab1b0eb  
    219219    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    220220    { 
     221        //aout_DateSet( &p_sys->end_date, 0 ); 
    221222        block_Release( *pp_block ); 
    222223        return NULL; 
     
    258259    if( !pp_block || !*pp_block ) return NULL; 
    259260 
    260     if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) 
    261     { 
    262         /* We've just started the stream, wait for the first PTS. */ 
     261    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     262    { 
     263        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     264        { 
     265            p_sys->i_state = STATE_NOSYNC; 
     266            block_BytestreamFlush( &p_sys->bytestream ); 
     267        } 
     268        //aout_DateSet( &p_sys->end_date, 0 ); 
    263269        block_Release( *pp_block ); 
    264270        return NULL; 
    265271    } 
    266     if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    267     { 
    268         p_sys->i_state = STATE_NOSYNC; 
     272 
     273    if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) 
     274    { 
     275        /* We've just started the stream, wait for the first PTS. */ 
    269276        block_Release( *pp_block ); 
    270277        return NULL; 
  • modules/packetizer/mpeg4video.c

    r09eaac8 rab1b0eb  
    225225    if( pp_block == NULL || *pp_block == NULL ) return NULL; 
    226226 
    227     if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    228     { 
    229         p_sys->i_state = STATE_NOSYNC; 
    230         if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); 
    231         p_sys->p_frame = NULL; 
    232         p_sys->pp_last = &p_sys->p_frame; 
     227    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     228    { 
     229        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     230        { 
     231            p_sys->i_state = STATE_NOSYNC; 
     232            block_BytestreamFlush( &p_sys->bytestream ); 
     233 
     234            if( p_sys->p_frame ) 
     235                block_ChainRelease( p_sys->p_frame ); 
     236            p_sys->p_frame = NULL; 
     237            p_sys->pp_last = &p_sys->p_frame; 
     238        } 
     239//        p_sys->i_interpolated_pts = 
     240//        p_sys->i_interpolated_dts = 
     241//        p_sys->i_last_ref_pts = 
     242//        p_sys->i_last_time_ref = 
     243//        p_sys->i_time_ref = 
     244//        p_sys->i_last_time = 
     245//        p_sys->i_last_timeincr = 0; 
     246 
    233247        block_Release( *pp_block ); 
    234248        return NULL; 
  • modules/packetizer/mpegvideo.c

    rd3fe7f2 rab1b0eb  
    116116 
    117117    mtime_t i_interpolated_dts; 
    118     mtime_t i_old_duration; 
    119118    mtime_t i_last_ref_pts; 
    120119    vlc_bool_t b_second_field; 
     
    184183 
    185184    p_sys->i_interpolated_dts = 0; 
    186     p_sys->i_old_duration = 0; 
    187185    p_sys->i_last_ref_pts = 0; 
    188186    p_sys->b_second_field = 0; 
     
    237235    } 
    238236 
    239     if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
    240     { 
    241         p_sys->i_state = STATE_NOSYNC; 
    242         p_sys->b_discontinuity = VLC_TRUE; 
    243         if( p_sys->p_frame ) 
    244             block_ChainRelease( p_sys->p_frame ); 
    245         p_sys->p_frame = NULL; 
    246         p_sys->pp_last = &p_sys->p_frame; 
    247         p_sys->b_frame_slice = VLC_FALSE; 
     237    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     238    { 
     239        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     240        { 
     241            p_sys->i_state = STATE_NOSYNC; 
     242            block_BytestreamFlush( &p_sys->bytestream ); 
     243 
     244            p_sys->b_discontinuity = VLC_TRUE; 
     245            if( p_sys->p_frame ) 
     246                block_ChainRelease( p_sys->p_frame ); 
     247            p_sys->p_frame = NULL; 
     248            p_sys->pp_last = &p_sys->p_frame; 
     249            p_sys->b_frame_slice = VLC_FALSE; 
     250        } 
     251//        p_sys->i_interpolated_dts =  
     252//        p_sys->i_last_ref_pts = 0; 
     253 
    248254        block_Release( *pp_block ); 
    249255        return NULL; 
    250256    } 
     257 
    251258 
    252259    block_BytestreamPush( &p_sys->bytestream, *pp_block ); 
  • modules/packetizer/vc1.c

    r09eaac8 rab1b0eb  
    195195        return NULL; 
    196196 
    197     if( (*pp_block)->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) ) 
    198     { 
    199         p_sys->i_state = STATE_NOSYNC; 
    200         if( p_sys->p_frame ) 
    201             block_ChainRelease( p_sys->p_frame ); 
    202         p_sys->p_frame = NULL; 
    203         p_sys->pp_last = &p_sys->p_frame; 
     197    if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) 
     198    { 
     199        if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) 
     200        { 
     201            p_sys->i_state = STATE_NOSYNC; 
     202            block_BytestreamFlush( &p_sys->bytestream ); 
     203 
     204            if( p_sys->p_frame ) 
     205                block_ChainRelease( p_sys->p_frame ); 
     206            p_sys->p_frame = NULL; 
     207            p_sys->pp_last = &p_sys->p_frame; 
     208            p_sys->b_frame = VLC_FALSE; 
     209        } 
     210//        p_sys->i_interpolated_dts = 0; 
    204211        block_Release( *pp_block ); 
    205212        return NULL;