From patchwork Sun Apr 5 15:59:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18681 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 783E644BBAC for ; Sun, 5 Apr 2020 19:02:52 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F41168B511; Sun, 5 Apr 2020 19:00:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B210268B498 for ; Sun, 5 Apr 2020 19:00:17 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id s8so12283138wrt.7 for ; Sun, 05 Apr 2020 09:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2FU230niD3autI9zfhsD0x9ikhrIdm7emlM06KqX2GM=; b=LXAH//ntSLhSLLdaSHA3jqUUlV4dJapKwFu0ekEhV66GXvAyZXnj22yLFd73g6zgKE EUPiZ20CNqqSWn6yO8xuCikiHkjn0X0EJJ0PjCkDFLJVZ0hQJkpUgMew28oHw/gTBQON po7oAtJ86WK2ZuhMgzxzrTJesa6tstnXrs/PrlExb372wN/rrR4DJgBZSe9eAIHLiPDh bW7pTo2aGG4Je4GRKUVHO+ZUQ420eS++GXodmpHaxWkE27QtV2tPpbY9VjskRZtn3ev7 Fcn1sWf6trY6+ufWVfoimyORF6oYFPbJtRRcb3ZFG07w2SItVBsdL5D4/UttL3DYTxJx QDbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2FU230niD3autI9zfhsD0x9ikhrIdm7emlM06KqX2GM=; b=PG3zQfp+Qnk/+XZLnOlhNHrgfbNQwzXXcNdeLugI+X7aLWDsEEBXq0fEiy3CM1ZeY1 sYJekqOquXOTYGjkV+KBfbwtNHXFhwS0zGFCfhZ7VoG658zVIwz/+bfKB8fp3MFHzTms +1CU3isES34+Droc29vj1cmA6r6UNwawO3mqrZwcJrXlO6hsJtOnu08WJAbn7hSTlUBR FmBH6C5Son3tO5vgJAePqpMFPnfzd6/WLkYv9KHMSWRuKIuxs8FRl3Kt+3NBecMol9xN k8N2Gg7ekGGPkBwdGP8hFPmzUrb5EL4o7vJY7h7EJA5fPWDPYGc6PIpUUqWMj2jNplOi BKAw== X-Gm-Message-State: AGi0PuYFhgOVoLIH3dtDHsRg+QqbQNyEBnMcZXuA5RW+fKEuxl3pnL0N fSM37odyU1cBLszWhHajBF4b2jmc X-Google-Smtp-Source: APiQypIut1JiKfO0XNQ42RZVMMRi003+rfQbi3dRSUKRnm+2FLt8n78nd493Nh/2eWGP4D36TVXNEQ== X-Received: by 2002:adf:f78a:: with SMTP id q10mr1937606wrp.132.1586102416531; Sun, 05 Apr 2020 09:00:16 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id v21sm20014567wmh.26.2020.04.05.09.00.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2020 09:00:15 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Apr 2020 17:59:26 +0200 Message-Id: <20200405155928.9323-19-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200405155928.9323-1-andreas.rheinhardt@gmail.com> References: <20200405155928.9323-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 18/20] avformat/matroskaenc: Don't needlessly copy AVCodecParameters X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 stream's 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 --- libavformat/matroskaenc.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 3981986e86..3cbaaf9574 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2170,24 +2170,16 @@ 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; 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; avio_seek(mkv->tracks_bc, track->codecpriv_offset, SEEK_SET); - mkv_write_codecprivate(s, mkv->tracks_bc, codecpriv_par, 1, 0); - avcodec_parameters_free(&codecpriv_par); + mkv_write_codecprivate(s, mkv->tracks_bc, par, 1, 0); + par->extradata = old_extradata; } break; // FIXME: Remove the following once libaom starts propagating extradata during init()