vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Dec 22 14:12:07 2015 +0100| [0457a2b225b713e5bb9933043491fbcffbc9b4bd] | committer: Francois Cartegnie
hevc_nal: add nuh_layer constraint for decoding Content for layer >= 63 is unspecified > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0457a2b225b713e5bb9933043491fbcffbc9b4bd --- modules/packetizer/hevc_nal.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/packetizer/hevc_nal.c b/modules/packetizer/hevc_nal.c index caf2a67..e7cf7a3 100644 --- a/modules/packetizer/hevc_nal.c +++ b/modules/packetizer/hevc_nal.c @@ -678,8 +678,10 @@ void hevc_rbsp_release_vps( hevc_video_parameter_set_t *p_vps ) bs.pf_forward = hxxx_bsfw_ep3b_to_rbsp; /* Does the emulated 3bytes conversion to rbsp */ \ } \ else (void) i_bitflow;\ - bs_skip( &bs, 16 ); /* Skip nal_unit_header */ \ - if( !decode( &bs, p_hevctype ) ) \ + bs_skip( &bs, 7 ); /* nal_unit_header */ \ + uint8_t i_nuh_layer_id = bs_read( &bs, 6 ); \ + bs_skip( &bs, 3 ); /* !nal_unit_header */ \ + if( i_nuh_layer_id > 62 || !decode( &bs, p_hevctype ) ) \ { \ release( p_hevctype ); \ p_hevctype = NULL; \ @@ -1122,8 +1124,11 @@ hevc_slice_segment_header_t * hevc_decode_slice_header( const uint8_t *p_buf, si bs.pf_forward = hxxx_bsfw_ep3b_to_rbsp; /* Does the emulated 3bytes conversion to rbsp */ } else (void) i_bitflow; - bs_skip( &bs, 16 ); /* Skip nal_unit_header */ - if( !hevc_parse_slice_segment_header_rbsp( &bs, i_nal_type, pp_sps, pp_pps, p_sh ) ) + bs_skip( &bs, 7 ); /* nal_unit_header */ + uint8_t i_nuh_layer_id = bs_read( &bs, 6 ); + bs_skip( &bs, 3 ); /* !nal_unit_header */ + if( i_nuh_layer_id > 62 || + !hevc_parse_slice_segment_header_rbsp( &bs, i_nal_type, pp_sps, pp_pps, p_sh ) ) { hevc_rbsp_release_slice_header( p_sh ); p_sh = NULL; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
