vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Apr 4 11:30:59 2017 +0200| [a4fdc7acd993c0b116ff6d651e511b3cd6a71d45] | committer: Francois Cartegnie
packetizer: hevc: delay prefix sei parsing > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a4fdc7acd993c0b116ff6d651e511b3cd6a71d45 --- modules/packetizer/hevc.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c index c50ba71..935ba0e 100644 --- a/modules/packetizer/hevc.c +++ b/modules/packetizer/hevc.c @@ -504,6 +504,24 @@ static void GetXPSSet(uint8_t i_pps_id, void *priv, *pp_vps = p_sys->rgi_p_decvps[hevc_get_sps_vps_id(*pp_sps)]; } +static void ParseStoredSEI( decoder_t *p_dec ) +{ + decoder_sys_t *p_sys = p_dec->p_sys; + + for( block_t *p_nal = p_sys->pre.p_chain; + p_nal; p_nal = p_nal->p_next ) + { + if( p_nal->i_buffer < 5 ) + continue; + + if( hevc_getNALType(&p_nal->p_buffer[4]) == HEVC_NAL_PREF_SEI ) + { + HxxxParse_AnnexB_SEI( p_nal->p_buffer, p_nal->i_buffer, + 2 /* nal header */, ParseSEICallback, p_dec ); + } + } +} + static block_t *ParseVCL(decoder_t *p_dec, uint8_t i_nal_type, block_t *p_frag) { decoder_sys_t *p_sys = p_dec->p_sys; @@ -539,6 +557,8 @@ static block_t *ParseVCL(decoder_t *p_dec, uint8_t i_nal_type, block_t *p_frag) ActivateSets(p_dec, p_pps, p_sps, p_vps); } + ParseStoredSEI( p_dec ); + switch(i_nal_type) { case HEVC_NAL_BLA_W_LP: @@ -612,10 +632,7 @@ static block_t * ParseAUHead(decoder_t *p_dec, uint8_t i_nal_type, block_t *p_na } case HEVC_NAL_PREF_SEI: - HxxxParse_AnnexB_SEI( p_nalb->p_buffer, p_nalb->i_buffer, - 2 /* nal header */, ParseSEICallback, p_dec ); - break; - + /* stored an parsed later when we get sps & frame */ default: break; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
