mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-23 18:35:18 +08:00
avformat/mpegts: detect synchronous metadata KLV more reliably
The mpegts code historically tries to strip (the first) metadata access unit header from synchronous KLV metadata, but the detection for such streams was unreliable causing strips of asynchronous metadata or ID3 as well. MISB ST 1402 specifies required stream type, stream id and registration descriptor (which eventually maps to the codec ID) so let's use all of these for reliable detection. Fixes a regression caused by468615f204. Fixes ticket #10828, #10883. Signed-off-by: Marton Balint <cus@passwd.hu> (cherry picked from commit0aaee4741c)
This commit is contained in:
@@ -1306,8 +1306,11 @@ skip:
|
||||
p += sl_header_bytes;
|
||||
buf_size -= sl_header_bytes;
|
||||
}
|
||||
if (pes->st->codecpar->codec_id == AV_CODEC_ID_SMPTE_KLV && buf_size >= 5) {
|
||||
/* skip metadata access unit header */
|
||||
if (pes->stream_type == STREAM_TYPE_METADATA &&
|
||||
pes->stream_id == STREAM_ID_METADATA_STREAM &&
|
||||
pes->st->codecpar->codec_id == AV_CODEC_ID_SMPTE_KLV &&
|
||||
buf_size >= 5) {
|
||||
/* skip metadata access unit header - see MISB ST 1402 */
|
||||
pes->pes_header_size += 5;
|
||||
p += 5;
|
||||
buf_size -= 5;
|
||||
|
||||
Reference in New Issue
Block a user