From c443aa68d36a3c4e6ab6d3f13d20a5cc280d6160 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 30 May 2017 22:50:05 +0200 Subject: demux_mkv: vp9 alpha, second try The parser is used to split superframes, and the decoder didn't like when the blockadditional was duplicated on the second split packet. --- demux/demux_mkv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'demux') diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index b1edb7c693..9515cd10c5 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -2381,6 +2381,7 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track, double tb = track->parse_timebase; int64_t pts = dp->pts == MP_NOPTS_VALUE ? AV_NOPTS_VALUE : dp->pts * tb; int64_t dts = dp->dts == MP_NOPTS_VALUE ? AV_NOPTS_VALUE : dp->dts * tb; + bool copy_sidedata = true; while (dp->len) { uint8_t *data = NULL; @@ -2399,8 +2400,10 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track, break; demux_packet_copy_attribs(new, dp); #if LIBAVCODEC_VERSION_MICRO >= 100 - av_copy_packet_side_data(new->avpacket, dp->avpacket); + if (copy_sidedata) + av_copy_packet_side_data(new->avpacket, dp->avpacket); #endif + copy_sidedata = false; if (track->parse_timebase) { new->pts = track->av_parser->pts == AV_NOPTS_VALUE ? MP_NOPTS_VALUE : track->av_parser->pts / tb; -- cgit v1.2.3