vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Dec 9 22:40:39 2015 +0100| [f14a21390788c77ab52e4cdac7e2d9ea927de0a6] | committer: Francois Cartegnie
packetizer: hevc: simplify/remove bitstream bitstream reader will always return 0 if no bytes > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f14a21390788c77ab52e4cdac7e2d9ea927de0a6 --- modules/packetizer/hevc.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c index 9c94539..7295a2a 100644 --- a/modules/packetizer/hevc.c +++ b/modules/packetizer/hevc.c @@ -34,7 +34,6 @@ #include <vlc_codec.h> #include <vlc_block.h> -#include <vlc_bits.h> #include <vlc_block_helper.h> #include "packetizer_helper.h" #include "hevc_nal.h" @@ -192,35 +191,37 @@ static block_t *ParseNALBlock(decoder_t *p_dec, bool *pb_ts_used, block_t *p_fra block_t * p_nal = NULL; - bs_t bs; - bs_init(&bs, p_frag->p_buffer+4, p_frag->i_buffer-4); - - /* Get NALU type */ - uint32_t forbidden_zero_bit = bs_read1(&bs); + if(unlikely(p_frag->i_buffer < 5)) + { + msg_Warn(p_dec,"NAL too small"); + block_Release(p_frag); + return NULL; + } - if (forbidden_zero_bit) + if(p_frag->p_buffer[4] & 0x80) { - msg_Err(p_dec,"Forbidden zero bit not null, corrupted NAL"); + msg_Warn(p_dec,"Forbidden zero bit not null, corrupted NAL"); p_sys->p_frame = NULL; p_sys->b_vcl = false; return NULL; } - uint32_t nalu_type = bs_read(&bs,6); - bs_skip(&bs, 9); + /* Get NALU type */ + uint8_t nalu_type = ((p_frag->p_buffer[4] & 0x7E) >> 1); if (nalu_type < HEVC_NAL_VPS) { /* NAL is a VCL NAL */ p_sys->b_vcl = true; - uint32_t first_slice_in_pic = bs_read1(&bs); - - if (first_slice_in_pic && p_sys->p_frame) + if(likely(p_frag->i_buffer > 6)) { - p_nal = block_ChainGather(p_sys->p_frame); - p_sys->p_frame = NULL; + bool first_slice_in_pic = p_frag->p_buffer[6] & 0x80; + if (first_slice_in_pic && p_sys->p_frame) + { + p_nal = block_ChainGather(p_sys->p_frame); + p_sys->p_frame = NULL; + } } - block_ChainAppend(&p_sys->p_frame, p_frag); } else _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
