vlc | branch: master | Francois Cartegnie <[email protected]> | Sun Jul 9 13:54:41 2017 +0200| [13a816fdeb968fd974c939f2b1203531d9fe6619] | committer: Francois Cartegnie
demux: ps: always shift 0xbd es id > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=13a816fdeb968fd974c939f2b1203531d9fe6619 --- modules/demux/mpeg/ps.h | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/modules/demux/mpeg/ps.h b/modules/demux/mpeg/ps.h index 90271b2c89..2e135d6362 100644 --- a/modules/demux/mpeg/ps.h +++ b/modules/demux/mpeg/ps.h @@ -320,22 +320,25 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, /* return the id of a PES (should be valid) */ static inline int ps_pkt_id( block_t *p_pkt ) { - if( p_pkt->p_buffer[3] == 0xbd && - p_pkt->i_buffer >= 9 && - p_pkt->i_buffer >= 9 + (size_t)p_pkt->p_buffer[8] ) + if( p_pkt->p_buffer[3] == 0xbd ) { - const unsigned i_start = 9 + p_pkt->p_buffer[8]; - const uint8_t i_sub_id = p_pkt->p_buffer[i_start]; - - if( (i_sub_id & 0xfe) == 0xa0 && - p_pkt->i_buffer >= i_start + 7 && - ( p_pkt->p_buffer[i_start + 5] >= 0xc0 || - p_pkt->p_buffer[i_start + 6] != 0x80 ) ) + uint8_t i_sub_id = 0; + if( p_pkt->i_buffer >= 9 && + p_pkt->i_buffer >= 9 + (size_t)p_pkt->p_buffer[8] ) { - /* AOB LPCM/MLP extension - * XXX for MLP I think that the !=0x80 test is not good and - * will fail for some valid files */ - return 0xa000 | (i_sub_id & 0x01); + const unsigned i_start = 9 + p_pkt->p_buffer[8]; + i_sub_id = p_pkt->p_buffer[i_start]; + + if( (i_sub_id & 0xfe) == 0xa0 && + p_pkt->i_buffer >= i_start + 7 && + ( p_pkt->p_buffer[i_start + 5] >= 0xc0 || + p_pkt->p_buffer[i_start + 6] != 0x80 ) ) + { + /* AOB LPCM/MLP extension + * XXX for MLP I think that the !=0x80 test is not good and + * will fail for some valid files */ + return 0xa000 | (i_sub_id & 0x01); + } } /* VOB extension */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
