vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Tue Apr 6 09:58:36 2021 +0200| [4e87c5494cfd34d85fa42d4f5e6bbf094f2c6f9b] | committer: Francois Cartegnie
demux: adaptive: fix probing with multiple ID3 regression regarding #24237 after chunk probe only change > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4e87c5494cfd34d85fa42d4f5e6bbf094f2c6f9b --- modules/demux/adaptive/StreamFormat.cpp | 4 ++-- modules/demux/hls/HLSStreams.cpp | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/demux/adaptive/StreamFormat.cpp b/modules/demux/adaptive/StreamFormat.cpp index 927a8a71a9..b75b31f3f8 100644 --- a/modules/demux/adaptive/StreamFormat.cpp +++ b/modules/demux/adaptive/StreamFormat.cpp @@ -118,10 +118,10 @@ StreamFormat::StreamFormat(const void *data_, size_t sz) else /* Check Packet Audio formats */ { /* It MUST have ID3 header, but HLS spec is an oxymoron */ - if(sz > 10 && ID3TAG_IsTag(data, false)) + while(sz > 10 && ID3TAG_IsTag(data, false)) { size_t tagsize = ID3TAG_Parse(data, sz, ID3Callback, this); - if(tagsize >= sz) + if(tagsize >= sz || tagsize == 0) return; /* not enough peek */ data += tagsize; sz -= tagsize; diff --git a/modules/demux/hls/HLSStreams.cpp b/modules/demux/hls/HLSStreams.cpp index 41a15b8f70..a612c98586 100644 --- a/modules/demux/hls/HLSStreams.cpp +++ b/modules/demux/hls/HLSStreams.cpp @@ -99,18 +99,17 @@ int HLSStream::ID3TAG_Parse_Handler(uint32_t i_tag, const uint8_t *p_payload, si block_t * HLSStream::checkBlock(block_t *p_block, bool b_first) { - if(b_first && p_block && - p_block->i_buffer >= 10 && ID3TAG_IsTag(p_block->p_buffer, false)) + if(b_first && p_block) { - while( p_block->i_buffer ) + while(p_block->i_buffer >= 10 && ID3TAG_IsTag(p_block->p_buffer, false)) { size_t i_size = ID3TAG_Parse( p_block->p_buffer, p_block->i_buffer, ID3TAG_Parse_Handler, static_cast<void *>(this) ); + if(i_size >= p_block->i_buffer || i_size == 0) + break; /* Skip ID3 for demuxer */ p_block->p_buffer += i_size; p_block->i_buffer -= i_size; - if( i_size == 0 ) - break; } } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits