From patchwork Tue Apr 24 02:17:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 8621 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp1338137jad; Mon, 23 Apr 2018 19:18:20 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/9ZsMWV850WHml25lTcuwg9P7Pm4pYTfslhg6pWo0zUHOFDCcq253Q+nWcwQE5zZRW8BEb X-Received: by 2002:adf:87d4:: with SMTP id c20-v6mr19408128wrc.197.1524536300097; Mon, 23 Apr 2018 19:18:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524536300; cv=none; d=google.com; s=arc-20160816; b=MIubBVFk6YEz87deDevS0Sy2VNfytVfP8ZhPs+e9UGSkY62G9F89XzHAO+BfbXeUuS e+Szi5l+YYWzZOWc4+Y9LvndpK1hphRFwLYDU112geGHtF5qUx4DR0x+e7NAGyaAR2EP tuARKbmY1T++02DCiJiO+8k8UJDVyaBx1MmMeuzTPhN65k1XkXb4HJq+RPeiQ/klFcf5 GM/3WWmWRI2XYe9erKyFezxzX0BOY4n1iuvecQrt38EYemWtU36W1YM4Epzj7YcxjHlc EcN1PLUzf9c/m6aKK40MYGAzdZ2TsdzsvFo/o573zVheM8sKuEbuO0Jy3eR0AmectjMX KLQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=Y5+Rf1QriLqpsReLg2DTR4lpkGik2IAMPDRpn33KQ4A=; b=yKnLCK2kfo1PmjqVG2DmwXFLBxQv1H5NE4nMfAzwJIfVZuooVU+PXRhMFh7c1ONvnA 8aglT0JX0yQcjcXFBAZhPQPBgev+VjLEq1jlJSNsi7TYO4iSWI60l0oZ3Muw6BQwvLkX jKP9G+1PLefJLHCEGUkrLSMsL0sMEtAMuPFzi0YsNutZCPx9E6qwSoGRwB6ibnDeaYgk ZFwNM/ccaWgEkzT+dMJe7x7cqOhAHlGhxWVI5T/YVTFYMeQUqk54Y5WzALV9kkHDCbf7 r8ULGQQ//GukcpjS2ouHI53ITim/tGrS7cPzgDwFFn8aI+Otw9/ybpEO4FDwC5Z7Qcga Lsyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NC+MAJ54; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 62-v6si698331wra.271.2018.04.23.19.18.19; Mon, 23 Apr 2018 19:18:20 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NC+MAJ54; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 57CA768A039; Tue, 24 Apr 2018 05:17:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E9C3E689C50 for ; Tue, 24 Apr 2018 05:17:42 +0300 (EEST) Received: by mail-qt0-f194.google.com with SMTP id a25-v6so20195689qtm.1 for ; Mon, 23 Apr 2018 19:18:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=igdUeV32+kOah+8kD/YA80BXS06hoYOt4BooTAdvmcA=; b=NC+MAJ542fKJLvIKik/0jkqNZzWoOHURtMewfn4xC//VPhnN0A4PMYw4vr8EhJ04+n 2AJuckoaRR7k+s8QRMY2DuED0WeYSX6RVSijx1UXoRiAzZCv7QcvUiYQp8UOCWmHbysR uIQiUdctPBWbabqqhV4zlY/gmvtFIC0kEETB69ySgU9bICGNh8JpKc5rnvKeDgwLuXjR jJb7dbor4E3cn3iXohO3GLfonC19AVnaxffuYalRUxwCoOkiNBjQMZ3ZcRoEsa9AzBmE hy5eV3OJgTsx/s/K4mXMP8nyIuUL2t7TR7T5RHk4fNs27PBsk6I2dmlZAHGOi1+k9Hey 1U/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=igdUeV32+kOah+8kD/YA80BXS06hoYOt4BooTAdvmcA=; b=ip1axhX1us6n0rkqPKo/KaRsPu2oSXs9eVl85aTOjkxhy3wr+H65qblE9K5lFGRWdV 5W9Uknu73WcddOlPvTb3mFylwQrZspedRFR8SKqSKmou8ZzdUrzmMzFOSjousLC12ik3 sElFBDEWXctlBlOu2ckw3Itiya7rTlSiG3nqS7I4wfB4iJq7OY6dj6Vrl9kr2T/9rB+N 0ObT0LWv7qyd3CuTUXy1qlwWg7qeVT1Q2P2pr7tYlpXfDtRbQuBoj0VzMU+UklhkzDbj 3sWDoij6RDjIkvwJEhqIADBs6jgZ5VbGwMnn/ctpAouJPRFmJQKge9UkU0g+DrH7N0Wy wo4g== X-Gm-Message-State: ALQs6tDLIXqCYE8kxZMK/XTZsdd/fdr63fkKiDjm4Wv37dJk6UugbeCq Z/1HX9XPYRvX4+KnTLRQNh/dvQ== X-Received: by 2002:ac8:2bce:: with SMTP id n14-v6mr26029295qtn.38.1524536291266; Mon, 23 Apr 2018 19:18:11 -0700 (PDT) Received: from localhost.localdomain ([190.188.171.140]) by smtp.gmail.com with ESMTPSA id q8sm10952171qkj.21.2018.04.23.19.18.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Apr 2018 19:18:10 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Apr 2018 23:17:00 -0300 Message-Id: <20180424021700.11720-1-jamrial@gmail.com> X-Mailer: git-send-email 2.17.0 Subject: [FFmpeg-devel] [PATCH] avcodec/cbs_mpeg2: use existing buffer reference if available when splitting fragments 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- libavcodec/cbs_mpeg2.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index bfb64a0851..086d08ed64 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -146,14 +146,17 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, unit_size = (end - 4) - (start - 1); } - unit_data = av_malloc(unit_size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!unit_data) - return AVERROR(ENOMEM); - memcpy(unit_data, start - 1, unit_size); - memset(unit_data + unit_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + if (header) { + unit_data = av_malloc(unit_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!unit_data) + return AVERROR(ENOMEM); + memcpy(unit_data, start - 1, unit_size); + memset(unit_data + unit_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + } else + unit_data = (uint8_t *)start - 1; err = ff_cbs_insert_unit_data(ctx, frag, i, unit_type, - unit_data, unit_size, NULL); + unit_data, unit_size, frag->data_ref); if (err < 0) { av_freep(&unit_data); return err;