From patchwork Mon Jan 3 00:33:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cameron Gutman X-Patchwork-Id: 33028 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp15722478iog; Sun, 2 Jan 2022 16:33:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwyXBVeKgqPcDTcqQhtMNIG0/9fSiXKZKpi4+l3+2XL5CYLGVI0ydoxkLY2ThGSVg1c6nCC X-Received: by 2002:a05:6402:28b4:: with SMTP id eg52mr41690452edb.101.1641170038185; Sun, 02 Jan 2022 16:33:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1641170038; cv=none; d=google.com; s=arc-20160816; b=xwjHhgF3JDBkxAGMbrxlGK5r0Dym+HbaksRHgE9XMkMZg0Ka3or0sJQt2gjjaBqi9U Dx8C77KlSSBRLR5uoYIHgIPYs605AWmBtJduXQ3KI+UaVinmGmgu3ibZ9Wp3CthFnoA4 RIIe/i6poQ9blQ5Anqxzzic5vy2BFNgz/C2bejVXl8vn94yT/avOXioTAFmniTm/Laeo ahgmJJtSzn8RufNCtef1FH9sjeXyIX8YRJpWWbc5fJ6Lqmgn7s1d8NQTMwPlKZu6uTG6 TWHMtj9g00/a9VHr09P8EegoWcO5CSrvofTLd2qqImOmGx8N8Ayzic/cMgBvD68yvJha 4LQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=ihY5qQPMUlVvJJcobmANduG2ACC/oO1zdZScmmmOB+E=; b=rGmPgXYKBGdeBp5vtRWsBGxmlEuXinnpS6jbhCGpz+Qxfj4yHlTksj4FzYq+3mS15Y Gq5yEMttryjrcEKqr6HHrihLWT1xiW6qDUHlqq20L+tKbcJqddNi4RQxIYz7vnPm5ilS P5c6DqapR8h2SPzymjZHPDkdDw+l4QpDoHZyrkj0lfamAa95lo8NFBqDvJGYXcHeLy7i SFI7K61Uz5aAE5gdVKryRsWL4DanqDucAt8iu8/vp5V1BGWk+0s20K+oTv2Way7kBL/K NDjHtlf+OnQEuJehXMjnFy/yBjakubfBZxOQysVHHYCUnQAvQzov8ROy7xEqmkY77Y5c CWTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="P9l6ad/Z"; 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 r18si9893684ejr.58.2022.01.02.16.33.57; Sun, 02 Jan 2022 16:33:58 -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="P9l6ad/Z"; 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 5161E680923; Mon, 3 Jan 2022 02:33:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C963968B19A for ; Mon, 3 Jan 2022 02:33:48 +0200 (EET) Received: by mail-oi1-f181.google.com with SMTP id be32so52810928oib.11 for ; Sun, 02 Jan 2022 16:33:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+xaopab8T8Q7QkSQ8pHZAnFqyeIyHNt1jbfEF5sdt14=; b=P9l6ad/ZwTL62nKsgGIqzvGfBiowZTet7mQ+MZZEriwSj4GKRbJ9aNeCtUPyYkG/MP 7AE5o2RK/gVvlzAQ+b3jLr5/wA6jI0NPbMmO0nxkcyw8R5NOPEuY7CPK4YpkDA/V4+0F vydW8WjLVcqqeDWSEbbDhvaebHw9RV8+jZuSq+APH/72zCxTF1+tclUTueWXv7Ld1BuY NhTCkYmIie3+Q8xyWj067YOslJxPEByyipyETkQcgqs2OfIr1kGlveNJ0VBOCG3OlFH3 fhEeZa7Bin8EznIZCcWb1zA1HoLyH+KXI2e1GOQ5Yc/dayVJ7njh+jFe7MPMdH6fCR+M OiZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=+xaopab8T8Q7QkSQ8pHZAnFqyeIyHNt1jbfEF5sdt14=; b=xKIsBdRrQsGI9nAuDSCvYr6xHx0pj1op+1qbsUJo+B94YSghdZwd45av8qtEbDkRFX hvlZvCWSQRU0O7xUUekDFOkiEo16G0kgHMBYyvFo9E6Rw+Q9rNETTW83d0EHuzRkENiw 4pYr7ZLon7Z37NAVQBvH0rgAgETTle4Jq4uau+Iy96JM6iB/wSTDHeQA1ciEBWf/3n5g T3/tT6NV5urQ+d+ZGLQx+QnAzblDMtjrVenh4QZbxUO4sOhbRAa8alGcciFWI041yb5i /CN8vhxd5WqRUAdPrmj7oOjbI9Dnv5FCDnsYW0ttGjn94kCdDoHdnUWhy7osh8DBUCB2 RvaA== X-Gm-Message-State: AOAM530QNj5NfkUgdJ4GplxJZKViRY2ANDVW5NPx2XN0BUfLV9eeP7Cg y8QUYgO6lnt+9ISTxamOyrRuhstsxxn5Wg== X-Received: by 2002:a05:6808:14c4:: with SMTP id f4mr34757450oiw.109.1641170026693; Sun, 02 Jan 2022 16:33:46 -0800 (PST) Received: from ubuntu-vbuilder.localdomain ([2600:1700:4830:3f7f:20c:29ff:fe04:f136]) by smtp.gmail.com with ESMTPSA id t3sm7579334otk.44.2022.01.02.16.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jan 2022 16:33:46 -0800 (PST) From: Cameron Gutman To: ffmpeg-devel@ffmpeg.org Date: Mon, 3 Jan 2022 00:33:19 +0000 Message-Id: <20220103003318.442892-1-aicommander@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavu/videotoolbox: add support for memory mapping frames 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 Cc: Cameron Gutman Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Xcsha7XTWCjk Signed-off-by: Cameron Gutman --- libavutil/hwcontext_videotoolbox.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c index 0a8dbe9f33..026127d412 100644 --- a/libavutil/hwcontext_videotoolbox.c +++ b/libavutil/hwcontext_videotoolbox.c @@ -711,6 +711,30 @@ fail: return err; } +static int vt_map_from(AVHWFramesContext *hwfc, AVFrame *dst, + const AVFrame *src, int flags) +{ + int err; + + if (dst->format == AV_PIX_FMT_NONE) + dst->format = hwfc->sw_format; + else if (dst->format != hwfc->sw_format) + return AVERROR(ENOSYS); + + err = vt_map_frame(hwfc, dst, src, flags); + if (err) + return err; + + dst->width = src->width; + dst->height = src->height; + + err = av_frame_copy_props(dst, src); + if (err) + return err; + + return 0; +} + static int vt_device_create(AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags) { @@ -736,6 +760,7 @@ const HWContextType ff_hwcontext_type_videotoolbox = { .transfer_get_formats = vt_transfer_get_formats, .transfer_data_to = vt_transfer_data_to, .transfer_data_from = vt_transfer_data_from, + .map_from = vt_map_from, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_VIDEOTOOLBOX, AV_PIX_FMT_NONE }, };