Changeset e3a6345c819709da452d4db7ce123b8eba70cb6f

Show
Ignore:
Timestamp:
24/08/04 00:16:58 (4 years ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1093299418 +0000
git-parent:

[b9c133227e1a1cfa9d4443990f2078b77767ab9f]

git-author:
Laurent Aimar <fenrir@videolan.org> 1093299418 +0000
Message:
  • ps.c: handle PES with 0 size. (look for next start code, slow but

better that nothing).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/demux/ps.c

    r9ef9462 re3a6345  
    330330    int      i_size = ps_pkt_size( p_peek, i_peek ); 
    331331 
    332     if( i_size > 0 ) 
    333     { 
     332    if( i_size <= 6 && p_peek[3] > 0xba ) 
     333    { 
     334        /* Special case, search the next start code */ 
     335        i_size = 6; 
     336        for( ;; ) 
     337        { 
     338            i_peek = stream_Peek( s, &p_peek, i_size + 1024 ); 
     339            if( i_peek <= i_size + 4 ) 
     340            { 
     341                return NULL; 
     342            } 
     343            while( i_size <= i_peek - 4 ) 
     344            { 
     345                if( p_peek[i_size] == 0x00 && p_peek[i_size+1] == 0x00 && p_peek[i_size+2] == 0x01 && p_peek[i_size+3] >= 0xb9 ) 
     346                { 
     347                    return stream_Block( s, i_size ); 
     348                } 
     349                i_size++; 
     350            } 
     351        } 
     352    } 
     353    else 
     354    { 
     355        /* Normal case */ 
    334356        return  stream_Block( s, i_size ); 
    335357    } 
     358 
    336359    return NULL; 
    337360} 
     361