From patchwork Fri Nov 19 15:48:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 31502 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp2581355iob; Fri, 19 Nov 2021 07:49:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJz7s84AexkIXyIm8Pynlk/8jYKm7meZqulNXFd9zaHuKEedFnkwa3J2bRXXJAnsjvBixhpB X-Received: by 2002:a17:906:8c3:: with SMTP id o3mr9275711eje.10.1637336977729; Fri, 19 Nov 2021 07:49:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637336977; cv=none; d=google.com; s=arc-20160816; b=1H5cchdGz01qLPFGmzWb3abXHRjSsjdeDh9GBdtMM1BxUw8FBtWi3TbPIiDv2uGa9K bv5G7EtRA9EuNyK9+SDZ4mch4z8J5Ahw3LouYy3antj24XR9thkJaE9ZTddxFc4vkZU3 Tn7oHWiyptsgH9LPjVhqTzV5j14G+/laivN9pFCmFWQYQj8BoCzZEorUBN/wecy893jY ZAqt5UFFNEUloAvvRmb6cr1w9L+++nwlFjdO7oWmkOdsEgXUkkFbz7ed5CKtesPd7zxO 44x1F4buFhCskyOXyFVhioMARSseDF7vq7mObKzRloUDZFtBLP9F4jlQb8vn+ietM/JV Xmrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=WEWUQR9ukUHXAo7HFYwYe19e3ikUWTDXCP38YBRAmOs=; b=b6BhQB+0P+zghw0Sx8hrTuKz2Gce1chngfJynP1GGUUhvkk9cPmt2CQ+9aOwRjF4ss G5Nyi+zgLsppXtetOo/FQOgjzigeSPVuicEsKQjE9OxI4/8mPEoc5DlaYkzxb2lDNSvb +EHBNjjIRLqtBpPH3yRJXWnP7yh0PMwlpCC1WiC9Bcgtpad8Hfu1KG+FMwGz/CvE+7TT 3+b72jLQtGqUefk1FRJC+A+ysEEfoWkmTdraxgfgcSAU3PsY8UZsyudcI203VNwUkMmd DxZ/UaN3IRVwzOkJxfcC19nGYt92eRAW+pN2S0cQnF4shABWZnDVkxDp8r8wtpXZb19R 9iLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=kp5AwAjH; 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 f3si110414ejd.672.2021.11.19.07.49.37; Fri, 19 Nov 2021 07:49:37 -0800 (PST) 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=20210112 header.b=kp5AwAjH; 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 14E7B689CDF; Fri, 19 Nov 2021 17:49:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F066689CDF for ; Fri, 19 Nov 2021 17:49:16 +0200 (EET) Received: by mail-vk1-f174.google.com with SMTP id q21so6146196vkn.2 for ; Fri, 19 Nov 2021 07:49:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7QihIDI+UG+m5i4Mfy7F2OJ4a7c4DwfiQRPMjFHiG+A=; b=kp5AwAjHXubf0DnIRay0YAGtW4m5IsKsLv09+2U6bXpcd0an0jNMSPnNcA6p05ywlp W3/4Yr0WXzngCpx9l2pldg2bDlF76vASRzZtbl7fXjL3aIGNyTEhTCXwvlFs4h7fCrKv m4e1F5Y6WAD+56sDmhdqx2IcalEbG0yhsYTfu6neZXtGHO4CUwtyuVu2NjguWPQTQI3v 5JJKRn+Pa42tBbiO127GJNGYfDUKAg0LOm+ArUhhnxXarJlk0E5Q2O1L9v0w1R+RsKuY zU9NGmj5letV8mizt8prinCPq/81fUASRqRRzJk66aruReB/V0qmhRNSfZbgSu+QlOQr /phA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7QihIDI+UG+m5i4Mfy7F2OJ4a7c4DwfiQRPMjFHiG+A=; b=wB8WnSnmA0H63oCbscdHs/IXoKQ5YaOyjM+jeaCXw+YbqucJiVr3CD4vKeRk/PApoe QERx4+X0qrLGHd1Wt0HRbguSRudOToJG0a6ALfQ7jTRK12Ve0Y67rxa9PUjlTiZHUpLp rbIr4CPDcIuF8AXB/+PxERGyRH6VEEi1k2by+tUkoUuor9I/FEzEkxrZgkXiqQszr/zs nvr6OyhaHPLZSdwW96XY9DioOxGk7ivU+ZvN5G0bIIiUUHkHG+26EsRDi9SJ2lOHPnlc SL94RSV7RlEa1yJIion32iTT5nzrChJBq1EUbt/7vY7BZQMCTpHJpPmT0iFjatN8bFWF w8eQ== X-Gm-Message-State: AOAM533ZIBoNiYu/OqmOU4F6cWaXoZ6Xa+y5V08ZhBAM40oFOF08XxDu 9dAVHvf4Qh5C0DNBH2moSIMrDS54Jx4= X-Received: by 2002:a05:6122:a02:: with SMTP id 2mr120692171vkn.6.1637336954599; Fri, 19 Nov 2021 07:49:14 -0800 (PST) Received: from localhost.localdomain ([181.23.88.82]) by smtp.gmail.com with ESMTPSA id f26sm45571vkl.51.2021.11.19.07.49.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Nov 2021 07:49:14 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 19 Nov 2021 12:48:56 -0300 Message-Id: <20211119154856.44240-2-jamrial@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211119154856.44240-1-jamrial@gmail.com> References: <20211119154856.44240-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] ffmpeg_hw: reuse filter_frame in hwaccel_retrieve_data() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Hlo64rGiBtUE This avoids an AVFrame allocation per decoded frame. Signed-off-by: James Almer --- ist->filter_frame is safe to use here since send_frame_to_filters() also unrefs it immediately after using it. But if this is deemed ugly/evil, I'll just add a new AVFrame to InputStream. fftools/ffmpeg_hw.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/fftools/ffmpeg_hw.c b/fftools/ffmpeg_hw.c index 14e702bd92..4201e44c43 100644 --- a/fftools/ffmpeg_hw.c +++ b/fftools/ffmpeg_hw.c @@ -500,7 +500,7 @@ int hw_device_setup_for_encode(OutputStream *ost) static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input) { InputStream *ist = avctx->opaque; - AVFrame *output = NULL; + AVFrame *output = ist->filter_frame; enum AVPixelFormat output_format = ist->hwaccel_output_format; int err; @@ -509,10 +509,6 @@ static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input) return 0; } - output = av_frame_alloc(); - if (!output) - return AVERROR(ENOMEM); - output->format = output_format; err = av_hwframe_transfer_data(output, input, 0); @@ -524,18 +520,16 @@ static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input) err = av_frame_copy_props(output, input); if (err < 0) { - av_frame_unref(output); goto fail; } av_frame_unref(input); av_frame_move_ref(input, output); - av_frame_free(&output); return 0; fail: - av_frame_free(&output); + av_frame_unref(output); return err; }