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