From patchwork Wed Mar 27 11:18:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Diego Felix de Souza via ffmpeg-devel X-Patchwork-Id: 12491 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 D0A2244901B for ; Wed, 27 Mar 2019 13:26:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AB01068A974; Wed, 27 Mar 2019 13:26:42 +0200 (EET) 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 5FB9C68A913 for ; Wed, 27 Mar 2019 13:26:36 +0200 (EET) Received: by mail-wr1-f67.google.com with SMTP id k11so10699217wro.5 for ; Wed, 27 Mar 2019 04:26:36 -0700 (PDT) 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=6+0nl/mXdYrBuiY1UvTMhRYejXvpLlOUKb3S3hxsSW0=; b=B8uzyGjiasTm5woEmKPgcWT4Hp7F43c2tojnuOtKlOE4QQEgqnl5QyBB0SaS8IuzsP g8SMB8vQUaniJ8hxah32UKV0kHu333vFf+ZCGLGM/sIAty5qRMgFQkJNcaJGze7y2bqN 673wI1CFM2VnSKmTMv6IwTpyPbaA7VoDIR1OwbufeZAaLmLLZplk6x3VHbDtsNtsSWIZ iuNfIlOB58dzukzuam33f2wv3YczYw93ricbOBSMG4fu2cxL7oxiWbSVA61+b+S9vETB 5R/JF3XfSoFFbRHJx8PdUTEDu00mklo7Ua3DQktwySe9fT6bxwOvqWO4W1Z3a6z9JhUN 932Q== X-Gm-Message-State: APjAAAX9KaJTSdGw8mAZeaOcuTFE8/haQHkxVutM1QtwVTNggTz0x3LS KcAyn5maQaYuGSlsNrsayUEW+dYqZsk= X-Google-Smtp-Source: APXvYqy02Ttq/W0AZy0uva9cXX1E85gkhsDzUqLvdcMs60NR7dPlOyCzsYXvLJ3ggoxokU5AlUJ07A== X-Received: by 2002:adf:dc88:: with SMTP id r8mr16744127wrj.28.1553685641135; Wed, 27 Mar 2019 04:20:41 -0700 (PDT) Received: from localhost.localdomain (ipbcc08c44.dynamic.kabel-deutschland.de. [188.192.140.68]) by smtp.googlemail.com with ESMTPSA id h10sm31745448wrs.27.2019.03.27.04.20.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Mar 2019 04:20:40 -0700 (PDT) To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Mar 2019 12:18:37 +0100 Message-Id: <20190327111852.3784-7-andreas.rheinhardt@googlemail.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190327111852.3784-1-andreas.rheinhardt@googlemail.com> References: <20190308092604.3752-1-andreas.rheinhardt@googlemail.com> <20190327111852.3784-1-andreas.rheinhardt@googlemail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/21] avformat/matroskadec: Don't copy attached pictures 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: , X-Patchwork-Original-From: Andreas Rheinhardt via ffmpeg-devel From: Diego Felix de Souza via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt , robux4@ycbcr.xyz Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit replaces copying attached pictures by using references to the already existing buffers. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index f9811b54a1..f1cfc09a5f 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2695,15 +2695,19 @@ static int matroska_read_header(AVFormatContext *s) attachments[j].stream = st; if (st->codecpar->codec_id != AV_CODEC_ID_NONE) { + AVPacket *pkt = &st->attached_pic; + st->disposition |= AV_DISPOSITION_ATTACHED_PIC; st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; - av_init_packet(&st->attached_pic); - if ((res = av_new_packet(&st->attached_pic, attachments[j].bin.size)) < 0) - return res; - memcpy(st->attached_pic.data, attachments[j].bin.data, attachments[j].bin.size); - st->attached_pic.stream_index = st->index; - st->attached_pic.flags |= AV_PKT_FLAG_KEY; + av_init_packet(pkt); + pkt->buf = av_buffer_ref(attachments[j].bin.buf); + if (!pkt->buf) + return AVERROR(ENOMEM); + pkt->data = attachments[j].bin.data; + pkt->size = attachments[j].bin.size; + pkt->stream_index = st->index; + pkt->flags |= AV_PKT_FLAG_KEY; } else { st->codecpar->codec_type = AVMEDIA_TYPE_ATTACHMENT; if (ff_alloc_extradata(st->codecpar, attachments[j].bin.size))