From patchwork Mon Jan 24 14:46:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33780 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:e71a:0:0:0:0:0 with SMTP id b26csp388890ioh; Mon, 24 Jan 2022 06:50:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJxxbqJTL6whkKoPNBGNqkgyMDS1GLiaVo0bSG5kkAJNiIhixbaXhZHlmMIoOTIcPNFqWReG X-Received: by 2002:a05:6402:51d0:: with SMTP id r16mr8666025edd.415.1643035832946; Mon, 24 Jan 2022 06:50:32 -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 sc13si2246683ejc.164.2022.01.24.06.50.32; Mon, 24 Jan 2022 06:50:32 -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=RGBBTwdu; 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 A832468B177; Mon, 24 Jan 2022 16:48:38 +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-db8eur05olkn2050.outbound.protection.outlook.com [40.92.89.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1363568AD15 for ; Mon, 24 Jan 2022 16:48:32 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HjQn5DMp9wGVO8HnO/e774ydAjSKZ5MfCOJeLde2UjwR2nigQwI2nvv+VSaUyCQ0+MqUu3sIzMtEjq5Uivy2qtaQ8mmVT/5EgIe/kVV1QQS9LzlxcFzq9XX32Ah3dOcoPZ1W1/7L/ePdFbtUuuwCjss7X1duyK+8PcePHxJ0hNuPZ+w1vugRJd3hdtmW53YJjoj8nx9emGLnMTK7rPG1MpvbHCXedPoY4Kv56U39OAdCpGmG6zAN1yzsBJQ5YYq2vWRnBxX1hkX9GZnt1XBZ8Z+ziueOXibnMuFT0kwO04EN58vvOp1Rt4kDuJKrlpcQyWcybR0KEnP3R7R3KGQb5A== 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=aMb3FEnzxXKgSqbVbxcJAUwP9Zv9qgFp2xwBoos1cyI=; b=QFD7vdXwIDyi7DCY4MJciEZrIdGp/+YELtEO1fMmIQWFeoFiYPO04BntaGQSuNhRtIiJ2wRZ52a9M0knJ18Ur7B6MUF2YAq124AovzJQTHeRNbVynhJzTo06g8IfBTsUYfxjxD2ytM2uNm8u1HPlaKPOn5qKrXn9oYrcBbMPMMB42SpQ2rF0PcPp1lAydC+q0gf3OuHDN3Su0/bNDWjB9ioG8AHVUXwmn/eBIOsUW+YKCNShH5l96Wj7RjfKR+q5madJhiKiv/Q42v15AjXpa3Bc3HxqzlbK2raRDM7BZb+qypPz33XunY00AV+yu3Bxh0YN4zFFjdtVqvWknNsabw== 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=aMb3FEnzxXKgSqbVbxcJAUwP9Zv9qgFp2xwBoos1cyI=; b=RGBBTwduwax5fUHlFJVXUzKBbo9QHJYHv9sMNAq1BpU2QAVRPJNFqMtWTJK49tcyyTvyLBalESFMYy6CHK5On1FJHwrk5eIJHg+NeGw/QNuoeMB2rH8DLunIQadBs6wmF2pGLj9d8a98r9wrfmJUQjKv6xIqzm2wahswwDlV8IbLOglTfMS0OWVNDyF1yreQIB7n3X/jeino+YsL3ZvmEs2+bqx+78tMfId0+q01OCGxZ+gkD4SEf0gwQgc6U0VSvAH64ojUGsEcOmCmAy7LDGDHbl4VMMVkU6s5kUA7dH5AfDUx80g4YDmaGT9BMpeio45v0rdRgxH4udBSEIx4SA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM0PR0302MB3187.eurprd03.prod.outlook.com (2603:10a6:208:7::30) 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:48:30 +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:48:30 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 24 Jan 2022 15:46:08 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [LbddDIkn3U5F8Rfutvta7DkIakjmcn/H] 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-23-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c144b6ff-8a59-4980-871a-08d9df48968f X-MS-TrafficTypeDiagnostic: AM0PR0302MB3187:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RnK4GsMOeg3dUrqM3zg73M1tmDehiHvj6KSvHBMX5flrotKqgyAaEOv7LlfGsRLmTDHknkyqmRkKHkos5zj+YXgIN4rc4mPix3ZAvkMjh3R20Db1En8GtGEuzIz9W0J/B4io38ZdXx0Uya6u0n8KJTCaB/gSACLQmp98+1auaTvM8QHPOxcjkhmsN2GqZNltarCnz5GuTTU+o5d4QQ9aEIXArMAWsy4IxTCLfTlaz7gb+NJ/g/goIdsaQDgeCbdHEvveZ3FN5B4g4s4A+1Aai2i18VBJXRk4NAw9EY0NeZP+PfBn7trE8Av+lx9ETqPrpwwnB2D4o45gKv+fC+IxNiiFubcShPcXpYRnZSf7h+e0/1nwCyBX4qtE1Ic7FTga4I7LPiC3OCIvDYe9LzDHIWMYEdAEom95WAmqf7vbdgeeWPZP4nfXwml9PON92FhdvoEB/2bAua8hZO7LlfHvVpGP7Zr+ocdPfDwjiU6xpQIa1sKPR2jd42MVEzxog0GM/QChqWSZ0zp0sXiadB6mX6lEA2wrA2NBOTQrOmnzGAtiIgupLTMsmnNvtzVy3bbfsj5HKLxaeSyncTL+hxKd9w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vaVd1+Unh9sIxajBAkb+jiBNkJRcjEbbihJotz8LY+4EUMeAXN66qpEC0cORHK7wAhFXHdPFlkIJy770hsMcmmIOI+lDVI+7DRZYKlzO8IK3BRx/oNO0XVU2Mzp6ETdJZV6RKBThIKu0moO5vFfAJQevB9DmM3nveSKnkIo7O1JyQ2p3/wsM7IIkdjs6szNfHVwvAVmmhJWpU+DFz0mlMplsOphKYMiQbOURPTuqZsxEvktHDMm94gjRe/OkEWGAwGo8H2EoVXCJSEZqdivm7FyJ0kQu1IHb4Bn/pph11oQW7NnpPqZRGpBRR83CsY3BP8sMSCM0gxNmL8assinYrmUq+fGNBJvavD5SbUh3pu3zwQb7mo6TyLTgoobYaPgeZmWgGavCqXEst5KDdkh6FdSgB4yTmEzrvxwrbgQd0N6T4cEtv4B/+z6bFZANeyZNdyiFWTZ92c/nxM8dyFtAREq48dvJ4yS0lDBKOny2Jje7HWfAqw7vnEBvgHAjP6krJyx7jNgjYRIqf9qedgwPlkwhWfHKXcTDPT1oqmNrelctjOOgRHkXcVNmb9Oo9m4GGyUQRUR8AGo9B+KxTke2Y/RzYz/fR+z3761pAxXA7Jz0v3mD92tts6lCXmLV8Nwfv+Pp45PoslBdP5MeBSbbiUkzET4JVOiXSeT2vvnX1Hd8dshuf5lTB2DgPO3yX8hoPZY+6G7qNG2+ArdZQbWDiTZqurqJQlqx5Yip0bJw941bA/QcnD149CnWYC+gKeZBPAkB/WT/IWjk9/mPauqGB18ADETWerL+pxBtG746vCiWE2oee1O2xUypTR0/qMag/b9/RWQ/6wujXse5pajw6jwq0XaA5kH+j1vix9R0kX+Xzbq8/fl+XVvmbNH6+2VdrzvCkWOmFYvREURgqHskrvbuOjXA47i9/zPS2Wy67n7CTpUzezJPoVVXrApfQcuvEX1M0sb6HQpFY8zKnW/Ccg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c144b6ff-8a59-4980-871a-08d9df48968f 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:48:30.8138 (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: AM0PR0302MB3187 Subject: [FFmpeg-devel] [PATCH v2 23/31] lavd/jack: switch 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: TexdjGWU4rD5 From: Anton Khirnov --- libavdevice/jack.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/libavdevice/jack.c b/libavdevice/jack.c index 0d5465e407..b9a167bed3 100644 --- a/libavdevice/jack.c +++ b/libavdevice/jack.c @@ -50,8 +50,8 @@ typedef struct JackData { jack_port_t ** ports; int nports; TimeFilter * timefilter; - AVFifoBuffer * new_pkts; - AVFifoBuffer * filled_pkts; + AVFifo * new_pkts; + AVFifo * filled_pkts; int pkt_xrun; int jack_xrun; } JackData; @@ -81,13 +81,14 @@ static int process_callback(jack_nframes_t nframes, void *arg) self->buffer_size); /* Check if an empty packet is available, and if there's enough space to send it back once filled */ - if ((av_fifo_size(self->new_pkts) < sizeof(pkt)) || (av_fifo_space(self->filled_pkts) < sizeof(pkt))) { + if (!av_fifo_can_read(self->new_pkts) || + !av_fifo_can_write(self->filled_pkts)) { self->pkt_xrun = 1; return 0; } /* Retrieve empty (but allocated) packet */ - av_fifo_generic_read(self->new_pkts, &pkt, sizeof(pkt), NULL); + av_fifo_read(self->new_pkts, &pkt, 1); pkt_data = (float *) pkt.data; latency = 0; @@ -106,7 +107,7 @@ static int process_callback(jack_nframes_t nframes, void *arg) pkt.pts = (cycle_time - (double) latency / (self->nports * self->sample_rate)) * 1000000.0; /* Send the now filled packet back, and increase packet counter */ - av_fifo_generic_write(self->filled_pkts, &pkt, sizeof(pkt), NULL); + av_fifo_write(self->filled_pkts, &pkt, 1); sem_post(&self->packet_count); return 0; @@ -134,12 +135,12 @@ static int supply_new_packets(JackData *self, AVFormatContext *context) /* Supply the process callback with new empty packets, by filling the new * packets FIFO buffer with as many packets as possible. process_callback() * can't do this by itself, because it can't allocate memory in realtime. */ - while (av_fifo_space(self->new_pkts) >= sizeof(pkt)) { + while (av_fifo_can_write(self->new_pkts)) { if ((test = av_new_packet(&pkt, pkt_size)) < 0) { av_log(context, AV_LOG_ERROR, "Could not create packet of size %d\n", pkt_size); return test; } - av_fifo_generic_write(self->new_pkts, &pkt, sizeof(pkt), NULL); + av_fifo_write(self->new_pkts, &pkt, 1); } return 0; } @@ -193,9 +194,9 @@ static int start_jack(AVFormatContext *context) } /* Create FIFO buffers */ - self->filled_pkts = av_fifo_alloc_array(FIFO_PACKETS_NUM, sizeof(AVPacket)); + self->filled_pkts = av_fifo_alloc2(FIFO_PACKETS_NUM, sizeof(AVPacket), 0); /* New packets FIFO with one extra packet for safety against underruns */ - self->new_pkts = av_fifo_alloc_array((FIFO_PACKETS_NUM + 1), sizeof(AVPacket)); + self->new_pkts = av_fifo_alloc2((FIFO_PACKETS_NUM + 1), sizeof(AVPacket), 0); if (!self->new_pkts) { jack_client_close(self->client); return AVERROR(ENOMEM); @@ -209,14 +210,13 @@ static int start_jack(AVFormatContext *context) } -static void free_pkt_fifo(AVFifoBuffer **fifo) +static void free_pkt_fifo(AVFifo **fifop) { + AVFifo *fifo = *fifop; AVPacket pkt; - while (av_fifo_size(*fifo)) { - av_fifo_generic_read(*fifo, &pkt, sizeof(pkt), NULL); + while (av_fifo_read(fifo, &pkt, 1) >= 0) av_packet_unref(&pkt); - } - av_fifo_freep(fifo); + av_fifo_freep2(fifop); } static void stop_jack(JackData *self) @@ -313,7 +313,7 @@ static int audio_read_packet(AVFormatContext *context, AVPacket *pkt) } /* Retrieve the packet filled with audio data by process_callback() */ - av_fifo_generic_read(self->filled_pkts, pkt, sizeof(*pkt), NULL); + av_fifo_read(self->filled_pkts, pkt, 1); if ((test = supply_new_packets(self, context))) return test;