vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Dec 21 13:58:12 2016 +0100| [7d2c0123d6b895ddfafcef44fb39ae7e7ad7ae62] | committer: Francois Cartegnie
demux: ts: fix regression with incorrect pes headers Just discard dts/pts, not payload. refs sample OC3.demo.ts #16679 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7d2c0123d6b895ddfafcef44fb39ae7e7ad7ae62 --- modules/demux/mpeg/pes.h | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/modules/demux/mpeg/pes.h b/modules/demux/mpeg/pes.h index 1ccc930..4a9befd 100644 --- a/modules/demux/mpeg/pes.h +++ b/modules/demux/mpeg/pes.h @@ -86,16 +86,12 @@ static int ParsePESHeader( vlc_object_t *p_object, const uint8_t *p_header, size if( p_header[7]&0x80 ) /* has pts */ { - if( i_header < 9 + 5 || - !ExtractPESTimestamp( &p_header[9], p_header[7] >> 6, pi_pts ) ) - return VLC_EGENERIC; + if( i_header >= 9 + 5 ) + (void) ExtractPESTimestamp( &p_header[9], p_header[7] >> 6, pi_pts ); - if( p_header[7]&0x40 ) /* has dts */ - { - if( i_header < 14 + 5 || - !ExtractPESTimestamp( &p_header[14], 0x01, pi_dts ) ) - return VLC_EGENERIC; - } + if( ( p_header[7]&0x40 ) && /* has dts */ + i_header >= 14 + 5 ) + (void) ExtractPESTimestamp( &p_header[14], 0x01, pi_dts ); } } else @@ -133,15 +129,13 @@ static int ParsePESHeader( vlc_object_t *p_object, const uint8_t *p_header, size if( p_header[i_skip]&0x20 ) { - if( i_header < i_skip + 5 || - !ExtractPESTimestamp( &p_header[i_skip], p_header[i_skip] >> 4, pi_pts ) ) - return VLC_EGENERIC; + if( i_header >= i_skip + 5 ) + (void) ExtractPESTimestamp( &p_header[i_skip], p_header[i_skip] >> 4, pi_pts ); - if( p_header[i_skip]&0x10 ) /* has dts */ + if( ( p_header[i_skip]&0x10 ) && /* has dts */ + i_header >= i_skip + 10 ) { - if( i_header < i_skip + 10 || - !ExtractPESTimestamp( &p_header[i_skip+5], 0x01, pi_dts ) ) - return VLC_EGENERIC; + (void) ExtractPESTimestamp( &p_header[i_skip+5], 0x01, pi_dts ); i_skip += 10; } else _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
