From patchwork Mon Jan 24 14:45:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33772 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:e71a:0:0:0:0:0 with SMTP id b26csp386732ioh; Mon, 24 Jan 2022 06:48:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJw9iEHgFd/EeSrd2VD6VmooS63w71z7V/rMbkiuPo3ZtkiKQuNCkp7DPxcjVuIxvwddJAQg X-Received: by 2002:a17:907:3e26:: with SMTP id hp38mr4707751ejc.715.1643035681068; Mon, 24 Jan 2022 06:48:01 -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 3si4145096ejr.609.2022.01.24.06.48.00; Mon, 24 Jan 2022 06:48:01 -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=@outlook.com header.s=selector1 header.b=igNRudaj; 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E167168B0B8; Mon, 24 Jan 2022 16:47:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2012.outbound.protection.outlook.com [40.92.89.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 302AE68B0A4 for ; Mon, 24 Jan 2022 16:47:07 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lG9cLWOOJl11Kp3c6em1eXtLhoJpE4PCqZHzfLvhWHLX+DmBUG5WGfYvWwjNR5KMdfAy2VyzEzthDRgaWY+4zVsv6Q2D6waRUcLuggU7OxLeBHcb0kO0gbfMeRPiBfkKhZVqZyKR3i6cLizQY/acDZ/iODQjtTxqohiqCeWdHmTMpnnQJZQ9zhxAuDhqrY51by8fBF4HENMdAn4OUAiUi0fySu2mHgPQDyGVC8tocm6Zz2w8ygYBE2EYi9/R99+fi7TKleTaxiLeAKKUouPGymCHLibuou0zQ9h2HK2ByiuZTN4RmRDwKPEe9jgykfDlTqYeIFSM13uZUWoWcahttg== 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=4pBnoYPHVB88eAW0B+koo5cIIK6HD553WRtDzI4Sg6s=; b=RfvXPHCdFoAhgmgrFV6H0ELYODU0D6PeQebHMptzrzZaOdOKbEOpXyJ+gVWA+AqGBm8atwEKWUBaku80SdMm4IdntuG+VAnPkR7HFLWzJHuuzbcsNG3kM4aVBS6TsSVhjJMabrNEG2mnH6eFDpLYPXBBPw/kOsBlpO8Wig4f7STZsd9v8S/EArXmMyqXOZNQN8Iwl9/v3wnNG919t7RJlZ7xKdnmtZds5XrMEWNPdHEizonwss42SCf91nq4xH6JZA924aCZ3CqTNYcb0JAeJVAYocDKAY0fLISQBKrqub7iYc2qBzxkjTvVINjThEjgJhwbd5jtpJiWMOZZQ40UKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4pBnoYPHVB88eAW0B+koo5cIIK6HD553WRtDzI4Sg6s=; b=igNRudajSJw1CaNtbmJJiEa4Q9O68SrGATTKXPPm6/qtIj7cEWWYM0/TIOWFLqfCHXCEacvRtociItmN3BJOp7iO938FXG/75ExURApJ0ASzsceBYX3Rlk11JrX6zsMTHAkY9NmboNieXVfXbAUW3XQdyIpn8CjxKklcskaSp/OqCO9TSNruuAjH53uPoCNGLdEREFoNW1OWNIIhPR7qVp98JbwQYDWVgrppPty41nTn3q2Mees1uzWVAq5CRWk1silyK439ljaBFm9Q235jZUhmvpxOwTsN4DhzyOcn7Q/UrmNT/aFBTDHbnw/mv8dH/jTIYWfNaoXEtkgBUHURvg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by VI1PR03MB3088.eurprd03.prod.outlook.com (2603:10a6:802:2f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.17; Mon, 24 Jan 2022 14:47:02 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%4]) with mapi id 15.20.4909.017; Mon, 24 Jan 2022 14:47:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 24 Jan 2022 15:45:54 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [4lasaWpEAHyM15XXMPt/pfQkGSNK7Rav] X-ClientProxiedBy: AM5PR0201CA0016.eurprd02.prod.outlook.com (2603:10a6:203:3d::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220124144616.559446-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f88c6fa7-6b4f-40f8-9e82-08d9df486210 X-MS-TrafficTypeDiagnostic: VI1PR03MB3088:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q9OyDB+A73Y+MQehxPr5QOQ9e900XwDT9TP6JZm/fEOyER6+fPgzcrH3t56+ARzx308bXFUVTxvLuYIqH6C3G4WxyHQc/feEcnvsQQuvA8JRd7SaRkvl5wILMCR1MUS2SjNR3ShsnPuxAbiW3Gk71Wv+C0gBgl+nlb0QLhzU3O4nLtEXdux95F33bV24xyF3dqTUjGkhlc/QSZgY5rqO2vXJyaymk36frKukdeFw6IU/Vg53TzZ1kArKsh2iEBDrmSlrYBUKxc7iWBcL6tRz7o1ZIQJfWTwz6X+KbdLFUQasifl5YxPqwjn2P1unQAux1tlrI5WayQFYHJe0NzdiUaRP8jaMrVg+Orqs/wAdkenJFy7qat4SDqrc0z9RbMK/sDPvlE4ICZb9IEu1SD1ieUNwjqtl/JIywmFRoxOAZySZEdKqL8vNNwqmmF1T65QXT6h36e0+XTZTiSgW+MZJI3HodrgnGM1ErsHrtU7yYodjCkE2mFk/PecUIGE0UP2q7t3dOkz4IFQwqWxV8xL8kPeqLgqzwSqpZylXBtMXh6f7yUhkmHTMtFIVfD0QY3kPRXTuRKviDz0JqWKQVOcDog== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9Ljcm9VVgybuNq8ADT8UTFi3/81NLmc29wsEXl0pX/2zswISl0Jvf5kyBEfLAjPt0T3rRGKOWVxnvAXejR8voT1zjAOit9hk9mBOCQyPEtlSZqTlQ+98BGR9Z3nHPNtt8mw7xy1tH4CLHc1D8Qb9/y+ZSuGmTDO9cC9NP2d8xoN4w0B00r6NFwnK2bdoDp65L27g9AFdoJwZkHmOfw+WtlMj8No08CkY3XK3Zk6wjnxIilllbIGsJ44Apc7R+K8QF+c+soFFRywQPj4F39zrkdOg+9l6FZQ+i3uG3hN42nyGeYrM3EQ8Kp99y/EGJEhnGKp17KCdD+rzE7yEPt8whxh2FWYtdMptrChtALiL/LZsFNZ003YD13aCQZE1DeGqxuQx/9XsA30bRdUJUxn52f7tm++Y6neaowaG4ZF3m6PM7DOAxi766FqbRJhsoDDT0RCTpexYu/lu1LS4KuJAI7VLAg8OCHy7wTFAzdP5m6zC+Sey5/y7ckZPjTV8NZlJLkKNRXNzvlNHnELr0K7CHXr9CzNN+btlHvSpokUfuM311lXezjcLfkvTe4UE1tLt1cpsvsr4FrKuqnPjN5B2ctIXplUL0iWWC8QRMJQFQVCfSPecYcfI1uLX0tO+nZO69lBq1o55wfHdhsipKv0Jm1E1Bgg8trzIEhG8SjSGZaAa+VEJAKlDDIsbrCZXVIkC6e8ja6LifMrX+LS10zDrhNwrt9cKBhZpwCKdEPIrshYp4mla/DX8q/bEs3Z2yHGsNu2Xbn7eBdz0A/xMfu0MxOX6HYLp1uxN4GkDQfPM47bWuC4dYZrNLq6e3HdFw2PW2eAe00XDdHh7QF+S2v2MIx/F3lxbSk0jds5iA2//HGk1baobKeWkxjq30Hxcl0serv2sXk4JwobJsKzP6ta5qRHcqvWhyLgPzVphMGGf84aYW435m8g5cHWbLmZy1ySQq8Bi4pZSRzpSp3S+7RFZpg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f88c6fa7-6b4f-40f8-9e82-08d9df486210 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2022 14:47:02.8187 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB3088 Subject: [FFmpeg-devel] [PATCH v2 09/31] lavc/cuviddec: convert to the new FIFO API 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: Anton Khirnov Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: T6k7pzvNJ8hq From: Anton Khirnov --- libavcodec/cuviddec.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c index b1a3d674ab..1b525cd804 100644 --- a/libavcodec/cuviddec.c +++ b/libavcodec/cuviddec.c @@ -78,7 +78,7 @@ typedef struct CuvidContext AVBufferRef *hwdevice; AVBufferRef *hwframe; - AVFifoBuffer *frame_queue; + AVFifo *frame_queue; int deint_mode; int deint_mode_current; @@ -363,13 +363,13 @@ static int CUDAAPI cuvid_handle_picture_display(void *opaque, CUVIDPARSERDISPINF parsed_frame.dispinfo.progressive_frame = ctx->progressive_sequence; if (ctx->deint_mode_current == cudaVideoDeinterlaceMode_Weave) { - av_fifo_generic_write(ctx->frame_queue, &parsed_frame, sizeof(CuvidParsedFrame), NULL); + av_fifo_write(ctx->frame_queue, &parsed_frame, 1); } else { parsed_frame.is_deinterlacing = 1; - av_fifo_generic_write(ctx->frame_queue, &parsed_frame, sizeof(CuvidParsedFrame), NULL); + av_fifo_write(ctx->frame_queue, &parsed_frame, 1); if (!ctx->drop_second_field) { parsed_frame.second_field = 1; - av_fifo_generic_write(ctx->frame_queue, &parsed_frame, sizeof(CuvidParsedFrame), NULL); + av_fifo_write(ctx->frame_queue, &parsed_frame, 1); } } @@ -384,7 +384,7 @@ static int cuvid_is_buffer_full(AVCodecContext *avctx) if (ctx->deint_mode != cudaVideoDeinterlaceMode_Weave && !ctx->drop_second_field) delay *= 2; - return (av_fifo_size(ctx->frame_queue) / sizeof(CuvidParsedFrame)) + delay >= ctx->nb_surfaces; + return av_fifo_can_read(ctx->frame_queue) + delay >= ctx->nb_surfaces; } static int cuvid_decode_packet(AVCodecContext *avctx, const AVPacket *avpkt) @@ -458,6 +458,7 @@ static int cuvid_output_frame(AVCodecContext *avctx, AVFrame *frame) AVHWDeviceContext *device_ctx = (AVHWDeviceContext*)ctx->hwdevice->data; AVCUDADeviceContext *device_hwctx = device_ctx->hwctx; CUcontext dummy, cuda_ctx = device_hwctx->cuda_ctx; + CuvidParsedFrame parsed_frame; CUdeviceptr mapped_frame = 0; int ret = 0, eret = 0; @@ -487,16 +488,13 @@ static int cuvid_output_frame(AVCodecContext *avctx, AVFrame *frame) if (ret < 0) return ret; - if (av_fifo_size(ctx->frame_queue)) { + if (av_fifo_read(ctx->frame_queue, &parsed_frame, 1) >= 0) { const AVPixFmtDescriptor *pixdesc; - CuvidParsedFrame parsed_frame; CUVIDPROCPARAMS params; unsigned int pitch = 0; int offset = 0; int i; - av_fifo_generic_read(ctx->frame_queue, &parsed_frame, sizeof(CuvidParsedFrame), NULL); - memset(¶ms, 0, sizeof(params)); params.progressive_frame = parsed_frame.dispinfo.progressive_frame; params.second_field = parsed_frame.second_field; @@ -657,7 +655,7 @@ static av_cold int cuvid_decode_end(AVCodecContext *avctx) AVCUDADeviceContext *device_hwctx = device_ctx->hwctx; CUcontext dummy, cuda_ctx = device_hwctx->cuda_ctx; - av_fifo_freep(&ctx->frame_queue); + av_fifo_freep2(&ctx->frame_queue); ctx->cudl->cuCtxPushCurrent(cuda_ctx); @@ -834,7 +832,7 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) goto error; } - ctx->frame_queue = av_fifo_alloc(ctx->nb_surfaces * sizeof(CuvidParsedFrame)); + ctx->frame_queue = av_fifo_alloc2(ctx->nb_surfaces, sizeof(CuvidParsedFrame), 0); if (!ctx->frame_queue) { ret = AVERROR(ENOMEM); goto error; @@ -1030,7 +1028,7 @@ static void cuvid_flush(AVCodecContext *avctx) if (ret < 0) goto error; - av_fifo_reset(ctx->frame_queue); + av_fifo_reset2(ctx->frame_queue); if (ctx->cudecoder) { ctx->cvdl->cuvidDestroyDecoder(ctx->cudecoder);