[FFmpeg-devel] [PATCH] avformat/mpegts: detect synchronous metadata KLV more reliably
Marton Balint
cus at passwd.hu
Sat Mar 2 20:39:27 EET 2024
On Fri, 1 Mar 2024, Marton Balint wrote:
> 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 ticket #10828, #10883.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> libavformat/mpegts.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index 836d5dd5a3..01f6c04223 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -1307,8 +1307,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;
Will apply.
Regards,
Marton
More information about the ffmpeg-devel
mailing list