At the end of encoding, the flac encoder sends a packet whose side-data contains updated extradata (e.g. a correct md5 checksum). The Matroska muxer uses this to update the CodecPrivate.
In doing so, the streams codecpar was copied. But given that writing a flac CodecPrivate does not modify the used AVCodecParameters at all, there is no need to do so and this commit changes this. Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> --- In this patch the old extradata is restored after writing (as it is now). I wonder whether this is really necessary or whether one should simply overwrite the old extradata? libavformat/matroskaenc.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 10599b11df..a3426bf926 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2196,27 +2196,19 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) break; case AV_CODEC_ID_FLAC: if (side_data_size && (s->pb->seekable & AVIO_SEEKABLE_NORMAL) && !mkv->is_live) { - AVCodecParameters *codecpriv_par; + uint8_t *old_extradata = par->extradata; int64_t curpos; if (side_data_size != par->extradata_size) { av_log(s, AV_LOG_ERROR, "Invalid FLAC STREAMINFO metadata for output stream %d\n", pkt->stream_index); return AVERROR(EINVAL); } - codecpriv_par = avcodec_parameters_alloc(); - if (!codecpriv_par) - return AVERROR(ENOMEM); - ret = avcodec_parameters_copy(codecpriv_par, par); - if (ret < 0) { - avcodec_parameters_free(&codecpriv_par); - return ret; - } - memcpy(codecpriv_par->extradata, side_data, side_data_size); + par->extradata = side_data; curpos = avio_tell(mkv->tracks_bc); avio_seek(mkv->tracks_bc, track->codecpriv_offset, SEEK_SET); - mkv_write_codecprivate(s, mkv->tracks_bc, codecpriv_par, 1, 0); + mkv_write_codecprivate(s, mkv->tracks_bc, par, 1, 0); avio_seek(mkv->tracks_bc, curpos, SEEK_SET); - avcodec_parameters_free(&codecpriv_par); + par->extradata = old_extradata; } break; // FIXME: Remove the following once libaom starts propagating extradata during init() -- 2.20.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".