From patchwork Fri Nov 12 08:36:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 31372 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp1530628iob; Fri, 12 Nov 2021 00:37:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJzH1W3Upu8BD/EgJDFYjmwAPJ+3A90MIYIOKMbc3tmO41PWaQiFL0UDYCmOiNJOVd2X/hJ6 X-Received: by 2002:aa7:cb92:: with SMTP id r18mr19131336edt.282.1636706220705; Fri, 12 Nov 2021 00:37:00 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hr38si15397801ejc.65.2021.11.12.00.36.58; Fri, 12 Nov 2021 00:37:00 -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=@nxp.com header.s=selector2 header.b=l7TyQEVw; arc=fail (body hash mismatch); 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=NONE dis=NONE) header.from=nxp.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 32F2368ADEF; Fri, 12 Nov 2021 10:36:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown [40.107.2.79]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6A424688166 for ; Fri, 12 Nov 2021 10:36:44 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UDgmmxlJtQIeDD1qimSwRgN+cReV5UIddPrm2tlzlfkZzgAcmZ1QdsyPjktvlwRPR1PBrsOa5kC31zFbLktRlMb35MVjUu5VQsdhznrFLKVeIWjO+E/LOphOexfSWHSP72bTYJYqXTPUOlR+8hxCXyz6dUBK/daZzw2sk3lQsydStYxMiLrciI1Mrud0WLGSEmqXw+SKPAwGxXIGKJ4q+7pqR+QQBurolZHhv+SBTocJYkgaotuu8nV3Z6M4spwXr/+bnjaCfxzOEV8jBv6Ht6bedMorZQwWftfYvh0TetjXn5pLlAM8QvMoGGBjoJDuhS2kkdHNUqU91qxEBRGrtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4I2BPl32BuvQINkd5bD+AgsoTRP3fwIkH4b1kTddoec=; b=Fb6YMXpPKKhl6MAI7SVc+v+E0jzG7hVHr6j0GzNXvoSqsokIQ7vXY4B2s/ZUWExpBkLCqm8Tgqrr98AQtEVO6eNpEA/dzDz6kzwNZT4++CUfimvf4eAt702PImYKDE/GnQOJKGvsbbNKd1AHQnjAIvI1sqQQ5ZQdDC1PzjTSRG3jOjhxDLIMMCl80iDU9gjivpQpdCEUXV/L4bxOxfUTviq8+m6gXuHkEmdSGVbbLls3DofhMOpT2FbYsvAcuTBcR5wgxy1PA4GmmL//TZ0496NlbMHM/kRnzIOh5BBe7tWJgSthsm7xm3G8McDvb5tnzmN8cteBkwK/CviSGZNLEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4I2BPl32BuvQINkd5bD+AgsoTRP3fwIkH4b1kTddoec=; b=l7TyQEVwLO9CHmisbvqjgmZab4HMeTunALzB0gERhvRktPLb5339FewJsYGe4Qk9KtLTfSaNjKS6CwrnB/20+JgsWy3OQTGye2TNGogPyuSki+zm/J+1pUNFEiAhwh767f91fUEbaZYqNjb/pikp0aOpB9PRX7oB5yG3gQtzenc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by AM6PR04MB5928.eurprd04.prod.outlook.com (2603:10a6:20b:a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.22; Fri, 12 Nov 2021 08:36:41 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::fc3a:8aea:2c92:3886]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::fc3a:8aea:2c92:3886%5]) with mapi id 15.20.4690.026; Fri, 12 Nov 2021 08:36:41 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Nov 2021 16:36:00 +0800 Message-Id: <20211112083601.6804-1-ming.qian@nxp.com> X-Mailer: git-send-email 2.33.0 X-ClientProxiedBy: SI2PR02CA0047.apcprd02.prod.outlook.com (2603:1096:4:196::14) To AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) MIME-Version: 1.0 Received: from lsv11149.swis.cn-sha01.nxp.com (119.31.174.70) by SI2PR02CA0047.apcprd02.prod.outlook.com (2603:1096:4:196::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16 via Frontend Transport; Fri, 12 Nov 2021 08:36:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: db945b86-a117-4ac0-de8c-08d9a5b78cd8 X-MS-TrafficTypeDiagnostic: AM6PR04MB5928: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mgqLHcIuw5yiGHDuGGAtuEW5oTcCksKvG3zWAZO7dTy7OBklsC0QpuwOwXDd1vMgYRpBPo7EO6A5ehfA5BPSv0k9EIOe/U5mhHpUiwYNcDt1cwv3fCRNfHwGSSA0flS0sYrRHLo9IJSO7PKclJB0Fgjt/k/uUdqhBls1lSzOaqdZlDACgRRc8oGw3IA8IYVYIUkCSDk1mWHAxlpxlEJZ5iYHQtJZL+Pn0N/ItXpDZa/VW77VA5KI4sqQEE7Loey5LRH+Dwi5EuDDgwmFoF61p+WoTB6CXyGPjssbkSxqCOGk4wYfOsewcvXasYB40zn6By4Cp8x6pNA9mw/akQgHd+z6maBtH8V7gR6H9eUYsVdair0pIPm7aqTbWuKPDy+tW/wJdelLOk4344a/jMLQGGukADf06ZOebDLLKyJPChgmC5o0tH/gwTbequgJhCTFUXCwMg9LpucJq++x4owNbYZfDgvFb7aog/hkLq7NX8hNMgTmCgTPgA6IBRInslzKfowmJAqnhX0Pi6IrIumZ/hUd2rtQwiFIMZBeeST5YmBCskRHggOiHCgp/QWo0X+MC9p+Zt9PWc2vzefjUYTfOKu6rXFRo+pd4OGBMr2/OUkQEm0laBCGI6lxw6DoIcsFtAq3a/WwavxVEJQLSwVPWC9JvgaY4CuHOgM6LzvPyrYYr+9qtMDcUTxFurIsAI7TyAc9zvJapUd7l5S/49NRhg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6341.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8676002)(66476007)(38100700002)(38350700002)(956004)(66556008)(66946007)(6486002)(1076003)(6916009)(86362001)(5660300002)(7696005)(26005)(2906002)(52116002)(4326008)(316002)(83380400001)(44832011)(508600001)(2616005)(6666004)(36756003)(8936002)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5WRbdPo9IES0rnY7MWQ8NLzA6BDMgSFzx/Al7VBu/inn7RFNiHek6C4SYMAZQSWfxDZ+EERMkNTBZoc6s1iODJo7OLUJwUuv9kKxmlw29q/tsDqvFtRsDhA/KbnaAvH7UKcf8TBkJ2shdph8qQPgB+YIRe8dabQN7AlW48iAwIKh4YY1AvHiJMXR8TAtjohDH+pdRNfuNjI1Vnlt9UX1TkbnzcmoE8LgtuYBR61haaveJ3Ct/+fJBro239VjDbro5o8rQTl43SRmR4st6Zs/n7DGHtZpJrMgKcQmvfdehXVE5r/5Z2SmW1sqQax7roPLWoOj3iIvsV2ewo/dthkr2FscsxXVEqG2AKi2YirRIyJAbX2/bY9oDZMoKUCRO8a3hmIQjNJQEm4rYtA1kHIbjwyql/9eiOAoSi/mh3vPKevn09QB+vJ1CrGYmMrAa5ryyV8LcAyEICIYhbd5zlTdMLOlQol0XscdP6Kcw0Q+nE66V45hLioA0slrRUG+2AUfCwerf3TQHWnG0NIebu3IqbJzO+NoJUtFqA0lmCWhcsVc7Ll3ryAxB/JAsTXIEeS/bCSvUnnqL6poiq5K90VfwYPReMEHqJuRrFj27+CuUgICRoJhdocHJ6HY7SERSy5h4MwE+xcKEi1tmQ/nqtomCrNbCvUzCyTUV/PV83dYfZR5Hz1BU3+CjhPICQTKOATDJadb7P0YLOa9YnNC1m1FcJc4WNMXYjo8Oq5gTb0T582txNbBieQsUt2ldPcYSW7X37L+A+19FGIZ+d5At0DOspvXzSfxjOA1jJ2GPtOuuHsMZRl0SGoBRV6DPfexq+z7h4aC739MT1O/STa3T6wq7C+BvEHyW19/DIQCr0SviiBIJhuQTgb3SV+dNLWwHFck2u/DJ4AQhEJYboTcRb86OW+9N0GLEvO1bCf92n30i9vwWGnCpGznTt9z1QA2fgCQG2Lac38LK6QgqaPSHFiB748etZcBEKqydfO3/4mWbTYOnkUfhcwm1xf8J3O/H8RWaaswVZVHXlBUV8I3SwOKoWPFwm5lPa6/MAhq7lC7KfcPhwS0OqbODiC7umESX4S5CfLchABTpPtcIbuF+i0FgEXP/QFR4zW+Bt2BSE0Uzci9Ws3jB6cwLg0oofEbZWFf8io9Jglk2Jfok1eZI/NXz4iJ/Mpb1RCIQt/l8XybNLZLFDqHsBf5EOh6LbtBIxJEnPPJ1gpfHIvD1cFhYJHBCu0JHlM9jBhlMQApzT9MF8isi6m+NxdfBgwv4mM/kPEuQpRpFFvOseQ5QvHE+A5KEwhsBooRhCrJ9KEOztCI4BK4r18OU934GKBT5YgEh+dghbsG/2tBJ6CDH0EXpFu6d93UmJMgkb/mBPXZeO9rOAO5qn5hsyOWcDiLumi6HUTr4bUemksoJ/oKFbw5fd1H2+ONpyTl0unNE4dSWLeVHB5IjP5I3a2GaanZD/UkhgAIqI1n+ys0RC54CGTI2x3qdbRDF8jrurblKvZjtKFAoZvq4TiUjk65bc00JKzBEAJw4MhkGAxRjBgV8oV03gTk39IH/44rvv6++dHOejJJqyb5/AmKH5KKaM6Zp5NV8cJOyY5hIfW1hNDKY9QNnl+3irhkjtFup0lI7OEXFf7aNOs= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: db945b86-a117-4ac0-de8c-08d9a5b78cd8 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 08:36:41.2955 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 86vDXpF7L0dm/9YX1JW+wTeSAcRplvb2B3st+YLgwatj6g7jXA/AdYy+tVRe6PWIVLhwaMG4xOAAyB1b2WyjQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5928 Subject: [FFmpeg-devel] [PATCH v1 1/2] avutil/buffer: support represents dma-buf 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: shijie.qin@nxp.com, eagle.zhou@nxp.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: wUZ9VFheoP1g add a member dmafd in buffer struct. we can use it represents dma-buf. Signed-off-by: Ming Qian --- libavutil/buffer.c | 12 ++++++++++++ libavutil/buffer.h | 14 ++++++++++++++ libavutil/buffer_internal.h | 1 + 3 files changed, 27 insertions(+) diff --git a/libavutil/buffer.c b/libavutil/buffer.c index 54590be56604..6aacd9c2c08a 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c @@ -36,6 +36,7 @@ static AVBufferRef *buffer_create(AVBuffer *buf, uint8_t *data, size_t size, buf->size = size; buf->free = free ? free : av_buffer_default_free; buf->opaque = opaque; + buf->dmafd = -1; atomic_init(&buf->refcount, 1); @@ -48,6 +49,7 @@ static AVBufferRef *buffer_create(AVBuffer *buf, uint8_t *data, size_t size, ref->buffer = buf; ref->data = data; ref->size = size; + ref->dmafd = -1; return ref; } @@ -180,6 +182,16 @@ int av_buffer_make_writable(AVBufferRef **pbuf) return 0; } +int av_buffer_set_dma_buf(AVBufferRef *buf, int fd) +{ + if (!buf || !buf->buffer) + return AVERROR(EINVAL); + + buf->dmafd = buf->buffer->dmafd = fd; + + return 0; +} + int av_buffer_realloc(AVBufferRef **pbuf, size_t size) { AVBufferRef *buf = *pbuf; diff --git a/libavutil/buffer.h b/libavutil/buffer.h index e1ef5b7f07fc..b86aaf87efc0 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h @@ -92,6 +92,11 @@ typedef struct AVBufferRef { * Size of data in bytes. */ size_t size; + + /** + * The fd of dma-buf + */ + int dmafd; } AVBufferRef; /** @@ -181,6 +186,15 @@ int av_buffer_get_ref_count(const AVBufferRef *buf); */ int av_buffer_make_writable(AVBufferRef **buf); +/** + * Set dma-buf fd to a given buffer reference. + * @param buf buffer reference to set dma-buf, + * it should be create from dma-buf mmapped address. + * @param fd dma-buf fd + * @return 0 on success, a negative AVERROR on failure. + */ +int av_buffer_set_dma_buf(AVBufferRef *buf, int fd); + /** * Reallocate a given buffer. * diff --git a/libavutil/buffer_internal.h b/libavutil/buffer_internal.h index bdff1b5b32ca..22aa54a246b8 100644 --- a/libavutil/buffer_internal.h +++ b/libavutil/buffer_internal.h @@ -39,6 +39,7 @@ struct AVBuffer { uint8_t *data; /**< data described by this buffer */ size_t size; /**< size of data in bytes */ + int dmafd; /**< fd of dma-buf */ /** * number of existing AVBufferRef instances referring to this buffer From patchwork Fri Nov 12 08:36:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Qian X-Patchwork-Id: 31373 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp1530811iob; Fri, 12 Nov 2021 00:37:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwcjv97J1F5ls56s57EMqO0+b7rKDacehAt0gdv+OArAemNEFvny+FBWSBbPhukq7WJHBiu X-Received: by 2002:a17:906:7c4:: with SMTP id m4mr18229285ejc.18.1636706232530; Fri, 12 Nov 2021 00:37:12 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ho6si12249680ejc.590.2021.11.12.00.37.11; Fri, 12 Nov 2021 00:37:12 -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=@nxp.com header.s=selector2 header.b=nq4Wq1PX; arc=fail (body hash mismatch); 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=NONE dis=NONE) header.from=nxp.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5BB1168AE25; Fri, 12 Nov 2021 10:36:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown [40.107.2.79]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1F0D868AE10 for ; Fri, 12 Nov 2021 10:36:50 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a47zEOAHfyN4n1p3H0skEL8+HrxUbUxvv6ejQNwKNob7Tz4UXWYT8IdDCxvXNZ3RPLXs3BISO8LEse0YK9h0REkbvkaCef0yR+In4YvgqFR4LumcQBzwaRCugY0scb43semql3Gg/roVTL2lRvCH0G/lrBp9Jb9Pw0lLaGHWMPFLOu+fnuxdDWse2bFlqcF6l8dhWamujQRNiNlVDGqnLcSKdUMuxm3/8QgYe8PZLqQROTPGGRTtGqzkHdcjQhEL0NHqsPajaZRCZMVCjtcNPuxway5FZpTEmJ0NmZM66hmtZJaIL4omQB9FfGz+mZUIhimTbcIdocvowQYwGlM40g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wE7Kx511jccDLRIOY1DYLPcwW3AVlt307vFP/ZfKPU0=; b=If+D/qqBs5aOiz3UBH3B4OXfX31Qc0xl4mTjd1SY/xKOAIkZ+BC1Jx56d+UjOb4LtVrPA1IeTjLczsG8xKGtXkNdJIA/bW+XvEexuJR8q1PBWUeKgy2OlNnObFXLgKUGNcjgaeB7/11uBOZ0NlYPCn4JVHLbVWv7H8q+uWkUWNp1domCXQZyZtg3fQJ2jyuVQU/1IcvoZLdFDv1diPCLBZq4yC+JWqi7XrpIiZS7jbnyG3IieOa334jRyjfeAZxti25BTU51ezX/xVq6wegfc0cF/Dn4hq+o2u0vWEdduM9i+c880nDJjKr8s//C3JBG4blPoO91mZfB1IYCfbA2eA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wE7Kx511jccDLRIOY1DYLPcwW3AVlt307vFP/ZfKPU0=; b=nq4Wq1PXMgMzPlfX/LIBRP1o01MD4ZiLESRqvyTA/H6C3oSyZCY5hnmYOzrlVYZx6N4PljFnOI8KSRmw7fZBfwRbTc0UJOl8HK7ep/anIePc93urLajOd/FRwkctFrGBVgCLikcTRGersUPAz7ioE54lfXDWJOfGtMfNviSm17c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by AM6PR04MB5928.eurprd04.prod.outlook.com (2603:10a6:20b:a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.22; Fri, 12 Nov 2021 08:36:43 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::fc3a:8aea:2c92:3886]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::fc3a:8aea:2c92:3886%5]) with mapi id 15.20.4690.026; Fri, 12 Nov 2021 08:36:43 +0000 From: Ming Qian To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Nov 2021 16:36:01 +0800 Message-Id: <20211112083601.6804-2-ming.qian@nxp.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211112083601.6804-1-ming.qian@nxp.com> References: <20211112083601.6804-1-ming.qian@nxp.com> X-ClientProxiedBy: SI2PR02CA0047.apcprd02.prod.outlook.com (2603:1096:4:196::14) To AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) MIME-Version: 1.0 Received: from lsv11149.swis.cn-sha01.nxp.com (119.31.174.70) by SI2PR02CA0047.apcprd02.prod.outlook.com (2603:1096:4:196::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16 via Frontend Transport; Fri, 12 Nov 2021 08:36:41 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddd33cbc-f5c0-4e94-418d-08d9a5b78df0 X-MS-TrafficTypeDiagnostic: AM6PR04MB5928: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:178; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5+C7CFJTlAAskitTdbcTOhwG/jnWi5djCD71r6c/GKia/XdQ0oku43FoV1bVLKYcq2xgktauQDARe5rWEFkQPtCYMHoKATWcfaa7d6TDOrx712AOFi7sKZLkXLZyG59Ee75ajEY/SPbhXEQoCghIyImcInv/9jTRLa6+JeT/qWoBE+T7iGf48hiIKOh4khudvGgGYG7qVMun0xXC7UotQQo3XOii1NPYJsdGhL1Cwe3EMx/Wj9jypOyyRzN/NbWe8Nym5HaSgDlEDI8c4oCEDyZAH0UtO95wos99rj3376Bw4Pxe6zfEZisCSAC2HYyfypJKrXYcV02B8tqYbQquTCxN/XBKi1i1x8iAZ7IOubFN5bb8B7tMgcohEkT6ouVpQWcz93f1gb5/HKWuOa/0Dpgqyo8vpr9bxgKUq5JbW63TBHc58ChRaKwnma+SxviQ5lnF7PxFaD5CFnWjUkDEikPKsAcHrIGF8/vYiTszp02nt4razGqKEN4lL/SlVowjh5BIzMMGDUefeKJRKdJxvlWVRN3HVtLUZvZ7u7KtaiUyRJLookhycZnqCQYDvWWogLwZX0OO4jVAOj/Cf4sW/57xkLqn0a30/D2joitvd0/ZLz0OHFzMILtgH2sFgctzMfgbHq4me0IpIDqmTmyU0bi6/ahN0CUGhns248H3TNokMK9k2O6dvOaD16pX99wZ2vUFa1l0a3f41e5ZR7XngQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6341.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8676002)(66476007)(38100700002)(38350700002)(956004)(66556008)(66946007)(6486002)(1076003)(6916009)(86362001)(5660300002)(7696005)(26005)(2906002)(52116002)(4326008)(316002)(83380400001)(44832011)(508600001)(2616005)(6666004)(36756003)(8936002)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6qrGFWHutEXGaJK9/QtCdsS6F3uBbYPr66drmGeUa+Q44rxyRBR0smQxSAAN0EmRdv4BtLMur8ITw3qWm+kTJueAaRYgA63mQTO8jVoNLFL3AQZmnUGiPLFG5gjpmbbpOIUpXu9zMLHC/Y5b5enQhQqLe07pYBk1uyYxwd9ngLF427ysc9etUru1UQVbn4RoEly46SfHP9hmrRNTCHYq0PSoYgYdWuFICr9eomjIQBJiwFMdE8PiZSu0Usi8U7d6J7b/+bIAuP/eAPOvLsS/BuqMlwSo7Dy2bqw11dUqalCIfe3HJKu36S+xEmkhdQFRIB9v4sEqOXBgwCs7hwMSxDtEr3UYGZdn9jAFnfMk+/NfQhLr0QQNNlld08+49w1PlRQwaNPdcnd48okb7PY2nm+HIfXd48v8MkIEv2871CQaXL9KUiToOTWFnUSd53JGLQoWHwyAzrkKvjlHw+Tlr51Vhbt91vLiLzsEOn8Bl/uflJAmuGfFEZyQgLHl59NZ2RFe5Zf8dSasG++ROXNzLyqaiQolREq09R53EQREyfTNZssqREFvWZSQzvdOoWFaLy/ayvfkQ5YBIf3iJ6EhrjY+7uBkgAaXxFPT5J13Aj5yKbBJsVROfBlFOm6Oa0H28kW5JCHDgNiBB/zfpS7co+slsvvx9d6ey8110c9p7o7JliexwwODsenyAuUcH53vDwSfMmBJv1GV1fIuUtivNb/TKGOgNd0CQkKFJZ8l0kui2xDKeMKhoTFJ9g9wRr01gqY0V5jGBSigBwmBwz920Lx1QlpYk+OR8ktXANznDmNeTMtU/WTinp85Fp24+CTLW8yA8S//q3Cq1wFcs18ROaqOVBZ11FagHAumxTiBKvWTwN+YuamESKQfYddziRkeKpYVbTCsSXcSuLg5SXy+dCd6BT2Ls3VMkkxDBfK0o8Wzp3jD5UwHToziNOvBlmMHbaSh+pHlXtcVe5VubEwKW941tn548QUH4/sgS2lJVu6peqXeWnB/yvjDTbHkt8S4VwTwdgyE4w9AIgkyddlKphYycYdNl4sFr9Gw1VJzoibl3BRp0a/ZU7m68xumsZ5NVOuXhimpaNx7uEUlsFtqW/YMNtxHO6WYunY2AfIkGkhLrGIGveYSGgJMRNVJZVNj/jDPR+FdkJjVJQcUD49wheIXryYQbtEN0E5jNnXYVpzSXXAvkPaOgH7LIWCsIVE2kGzQKAhA9o1SQQihrszOAI3kpWcfQ3U9HBjcBusQ0OW3bSrMGJhGnhlDEBgwHSH0ghtwe9qN73u/ua6YWCbetSl68ojs4jFc3D/sTxyBd+is/qS5p94a52gSvAYPXdw3imJTu83IuW8UJ/l8nPIMSMHkSxadbsQKMkAtE7CHOTnzyp2MhsJhzN6SVk8pNRbN+BXYzhh1lZd5z2J35BzYhz/NrK63ssQd4gdmYpeoeHpGTApzfYBUS8xwcwUdM3yMFokf1pCngTif70CeHnPcyVNbE/+FCe0ktLBsLDuRI97FLeI8A0IdrKFg2yWX7MGJLrAxuFc6D0rO7YN6TYnDEpg/ctx8/IV6vvMEkkXlAjV5ZQiMxyYLAGSb3yP0PtCQH8BF9k8GJC3TPpzpdcN6MT9uvm8QjpskZj1UL5E/lJg= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddd33cbc-f5c0-4e94-418d-08d9a5b78df0 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 08:36:43.0375 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: plLJkfF9vhqGCPBzo0hGqsOSrM6XVG7RcpOqx//jGWoaz2Iqcgi8Q09kN2Km0A6spOPNLGYMPkXOY7bNUHXsQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5928 Subject: [FFmpeg-devel] [PATCH v1 2/2] avcodec/v4l2_buffer: export v4l2 buffer dma-buf 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: shijie.qin@nxp.com, eagle.zhou@nxp.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PpuL6yYj8teX Signed-off-by: Ming Qian --- libavcodec/v4l2_buffers.c | 14 ++++++++++++++ libavcodec/v4l2_buffers.h | 1 + libavcodec/v4l2_context.c | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c index 4b2679eb3814..efa42f4c58ea 100644 --- a/libavcodec/v4l2_buffers.c +++ b/libavcodec/v4l2_buffers.c @@ -21,6 +21,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif #include #include #include @@ -267,6 +270,8 @@ static int v4l2_buf_to_bufref(V4L2Buffer *in, int plane, AVBufferRef **buf) if (!*buf) return AVERROR(ENOMEM); + if (in->plane_info[plane].dmafd >= 0) + av_buffer_set_dma_buf(*buf, in->plane_info[plane].dmafd); ret = v4l2_buf_increase_ref(in); if (ret) av_buffer_unref(buf); @@ -494,6 +499,7 @@ int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) { V4L2Context *ctx = avbuf->context; + struct v4l2_exportbuffer exp; int ret, i; avbuf->buf.memory = V4L2_MEMORY_MMAP; @@ -539,6 +545,14 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) if (avbuf->plane_info[i].mm_addr == MAP_FAILED) return AVERROR(ENOMEM); + + exp.type = ctx->type; + exp.index = avbuf->buf.index; + exp.plane = i; + exp.fd = -1; + exp.flags = O_CLOEXEC | O_RDWR; + ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_EXPBUF, &exp); + avbuf->plane_info[i].dmafd = exp.fd; } avbuf->status = V4L2BUF_AVAILABLE; diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h index 3d2ff1b9a5d7..74550544e0eb 100644 --- a/libavcodec/v4l2_buffers.h +++ b/libavcodec/v4l2_buffers.h @@ -55,6 +55,7 @@ typedef struct V4L2Buffer { int bytesperline; void * mm_addr; size_t length; + int dmafd; } plane_info[VIDEO_MAX_PLANES]; int num_planes; diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c index b08f0015c2e5..f0406194293d 100644 --- a/libavcodec/v4l2_context.c +++ b/libavcodec/v4l2_context.c @@ -453,6 +453,10 @@ static int v4l2_release_buffers(V4L2Context* ctx) if (p->mm_addr && p->length) if (munmap(p->mm_addr, p->length) < 0) av_log(logger(ctx), AV_LOG_ERROR, "%s unmap plane (%s))\n", ctx->name, av_err2str(AVERROR(errno))); + if (p->dmafd >= 0) { + close(p->dmafd); + p->dmafd = -1; + } } }