From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4E4DA430A5 for ; Thu, 13 Jan 2022 19:03:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B5B568B558; Thu, 13 Jan 2022 21:03:45 +0200 (EET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066071.outbound.protection.outlook.com [40.92.66.71]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C1BEF68B3EF for ; Thu, 13 Jan 2022 21:03:39 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iWHndspEs4tqG7/TEmDXZ4cuYxcdePsxsvJE2gxBC/aGLba4uJAaEpo/ND1Kc7VYUDaWHcuDyUQXOwwvzDpasnr5AZPGNl5sr28q8bteX647G+ZRFzmYpiT+9sdomKEfdGYq2T9tbmEdaKS+q019AWisw/xDI37UKI1RLnnK6Dl/wBD0FUNeJiAlVQV3688axLaYnYqe1G2CFc+6r40GoIM9swz9SIoeE4xQ+WpQU0jVA/bOipDWvn6UQN/F00I84ax5T9VscVSNo9uh7arHJ2HFvJnTt1gjvJEccgt/FXSw8yCseKLKz08/aYM+w4LPjBMG6hzBWA1XUjr7Ba2bZA== 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=inLFJOIZeKw1vuYXFdp23NAT0nq06aV4PLXwF/nBGtw=; b=gGOfceh4w9DP3PiiWJR3/J5f+HCOtBd46mvf/EDZfHPUV+TakudfpE4MNQxY/0bxx4qYBH3YqpqK/KWSFkUXF2tisnOKvlvlKtnTUotD2L0md1TlhdmexwKeNMlkOWTJL/6kX3VcfPsVwVev+1M6ZTkoJ6IO+6ks811qIsfNucKVcvsHhrpfmONeywug9E8zvI78imibHUai/fshDwqX7hwD453hZTcZViriYYBIfzRV3yEVp2VNKG7WOvAr7WjvEUDDjtNrIlaGNs/cC8QzWolNAxhwil5BQLlKCMqejA0Y9ffSK0X3apkjU/mcqAPtg/T5zOw5ubzLp36nOqwQ1w== 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=inLFJOIZeKw1vuYXFdp23NAT0nq06aV4PLXwF/nBGtw=; b=i2GWuTur/rWJe/SOO8pjHH88R0iTAXLZbXa7j/gfIOfjQfWDNxQ1Mm+GoLoWYxHJjp5rKGUATfQ0R93tWB9ll+GUZXQytGpGm/omvmCuVCwmLUs8gjsi8HXLw+XqRrVajqzMC/yhNMJmr5hJT7qmnl09AVh1aXoEsTytd9whZ6A+4YOLC+XagB/FCYstPMoGHoX2HxLSut0zwLg3D9U/m0Zp7kfZaZzPvfYm6Cv363XXDMjFqpJDtusp3unTmx+5SH4K1xwCAVa/mokLjLRzgzAXF8mi0+VpPX+b/bhw8Z6DT4XvyYu/jNlbG1ibIveeYNJawHYB8Gvs6Dc00PJmbw== Received: from PR3PR03MB6665.eurprd03.prod.outlook.com (2603:10a6:102:7d::6) by DBAPR03MB6599.eurprd03.prod.outlook.com (2603:10a6:10:19c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.11; Thu, 13 Jan 2022 19:03:38 +0000 Received: from PR3PR03MB6665.eurprd03.prod.outlook.com ([fe80::bd94:8238:bf7f:ca2]) by PR3PR03MB6665.eurprd03.prod.outlook.com ([fe80::bd94:8238:bf7f:ca2%5]) with mapi id 15.20.4888.011; Thu, 13 Jan 2022 19:03:38 +0000 Message-ID: Date: Thu, 13 Jan 2022 20:03:36 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220111204610.14262-1-anton@khirnov.net> <20220111204610.14262-31-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20220111204610.14262-31-anton@khirnov.net> X-TMN: [exE6tjpKKRqhhFKvfmA7jSIE3iqkAON4] X-ClientProxiedBy: AM0PR04CA0047.eurprd04.prod.outlook.com (2603:10a6:208:1::24) To PR3PR03MB6665.eurprd03.prod.outlook.com (2603:10a6:102:7d::6) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 49b34edc-3db3-4388-9b53-08d9d6c767e9 X-MS-TrafficTypeDiagnostic: DBAPR03MB6599:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /qG6Ovd1zh3xWfjafYvt2g8t4kj8vizVsV05Q/lPLABEv70qhG8J7dbJN8W3Ku9Q5WV1LfrLVuYPQoYNnMN8PTZ2hMUFFKiiAtNuMmfVsuF+JVen0sxztSlfwAB61ukYcyRfWhyyW7v68/ICKbpkARKe0GQ6QhbQRpM9bSNVFjuhplfOUGithGs2s+nDG0rnmucDHei8fPYUiYxgnItDnXmqakJ2Q+oSLEcF5O5XP8cO2MVjM46dBl1IDHUhJqzraVKg+28JUdEIzPT1gIgmelx/H4whH+X6jyO42wwK4bZRvA4vV7ipFIxaZHtbpZkcFWrR6qJvgVpA9dpPk1GGOIjYvdlwXbNkc5RaM3FYs4evrFOFpd/9GXNHCnmU7CZI/VlRdsAC/YuCqlJ8LGVdCRoFrBs3tJpqKm4sdzUTDTF2u8yu8TMXtut23MQ9QGS8YXKvip92DPF6LDlfl/EoKCXY+xbkb1uF8T+m1jeKlBEHgSwNthSjE8UbAwUBGlrpR54JmNWL/FPPhl79xCjlS6NC7z07i8t2khXNhM8NZxDfgd41ubP66QeckuCG2oK90xM3kZZD7HBAMAAYMYhv7g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RlMzWHdyc0NzdU9DSFlURkZLZ1YvclA2TkNxT0RBUmVaRlRzNTZKUytpQURn?= =?utf-8?B?Sk8yV2VENUF2ZTgzcmJINmo0b3k3WjgyOXRHd1VGRFg4THA3TWlJMCs2NGlq?= =?utf-8?B?aUpLcFVyM0dXTC80T3NGeFViOTRwclZMTkR5MGlpRDN0WGYyUHdCTlhlREd1?= =?utf-8?B?RGZ6Tjl3bjBBeUZEQ09KMmszU1ZFVnNhV3MzdE5YbkZ0NWxBMm5LSHVHcnl4?= =?utf-8?B?dWNYVmliRzBVRCt1Um5oTmFkVXAzVmxLaUpZN3RzUjh0NnVmUEVJUUt3Vk4y?= =?utf-8?B?YzhrVUo1d3VtQlUzVi9Ba0NFdG8rVW01OWVhSStKZTUxU1g3Q1pjL0htK2hm?= =?utf-8?B?QzAzVk4wQkR4dmJ1YVpTYlVMc00raGJDTTlySmo4KzdvUTNLSnQ5eHFQRHRM?= =?utf-8?B?R1NDZkVtTkZsNWRObHhkelpjUENQNzlMSDlPaUpsUHRDcmpJcHdLSGJTYkNF?= =?utf-8?B?ay9yYXpoQUZXVGhLSFBiWkl1N0dNME5OSDVIS0wvNU5zSHZDdk13K3VKT05w?= =?utf-8?B?SXB4SEt1V09DYmRrMFJPTGVXcXhoS2JZemtFRG9OMXZTcHVDbmpOUUxpTzNi?= =?utf-8?B?cmozc3ZRVG1nK3oxTFVBakl4MEY0bmR4VFFJTzhTZEJMRVplK1dwVFdsME5x?= =?utf-8?B?ZkhFS2czdDhCZUhDZFNFaWlXMmxFdGhjT1llTk5yWXgva01YaURqMnZXWWJD?= =?utf-8?B?VWc4TE8ybm9MdnlnTDdEVmhlWDRYVmxiNFpqZDR0aG85bEt3dEpGc1BRSHVO?= =?utf-8?B?WnBrMzNhamF3eDhsbUhneWFoWmxzOHdRSlVIUmIxbWYrNmNqQUFEcDJxY2s3?= =?utf-8?B?OUZzbExKM3VKNStETnlqWDl5UzRNNkpORHlWVW1GSWpBMnRDL2w5S0sydU5z?= =?utf-8?B?cHUyR1pDMFY1ZDN3N2xUV2hWZzB1R09uQUk0MVBkUk1BdEtLekJmTy9VRU0w?= =?utf-8?B?QVN1UGNXWTNXbTBIUWhZMW1CeHpESHJzQkw1NUY4YVlQenYrMSsvUTg1SXFM?= =?utf-8?B?TUNjUUR2UVVYT1pQZWdoMjdYUjUwa2NqN3J6MTBBUW9UcEF5MVRTcUZHZENR?= =?utf-8?B?aTFGa1Z2bmlBczR6NSs0QWk4N0dXUGpnVkRNWkRBcU82ckV5WWx4Mkt1K0hD?= =?utf-8?B?eWJwOXVQZm4vL1NqdDRJQ0hMYTRNejA2TE1DWDFWOEUrK1NNQmd0WnNLQzUr?= =?utf-8?B?VjZhR2tkQmx2bDNneVVCU3lwblJEZVdZdWk3TWxRWXc2YjFDUlMxRks2cklm?= =?utf-8?B?UndCOWkzYU11YTNCWFdFanFqZklrTWJEelFSMlg3TWU4M1QyUT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49b34edc-3db3-4388-9b53-08d9d6c767e9 X-MS-Exchange-CrossTenant-AuthSource: PR3PR03MB6665.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2022 19:03:38.1553 (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: DBAPR03MB6599 Subject: Re: [FFmpeg-devel] [PATCH 31/35] lavu/threadmessage: switch to 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Anton Khirnov: > --- > libavutil/threadmessage.c | 34 +++++++++++++++++----------------- > 1 file changed, 17 insertions(+), 17 deletions(-) > > diff --git a/libavutil/threadmessage.c b/libavutil/threadmessage.c > index 764b7fb813..39d3525a78 100644 > --- a/libavutil/threadmessage.c > +++ b/libavutil/threadmessage.c > @@ -64,7 +64,7 @@ int av_thread_message_queue_alloc(AVThreadMessageQueue **mq, > av_free(rmq); > return AVERROR(ret); > } > - if (!(rmq->fifo = av_fifo_alloc(elsize * nelem))) { > + if (!(rmq->fifo = av_fifo_alloc2(nelem, elsize, 0))) { > pthread_cond_destroy(&rmq->cond_send); > pthread_cond_destroy(&rmq->cond_recv); > pthread_mutex_destroy(&rmq->lock); > @@ -107,9 +107,9 @@ int av_thread_message_queue_nb_elems(AVThreadMessageQueue *mq) > #if HAVE_THREADS > int ret; > pthread_mutex_lock(&mq->lock); > - ret = av_fifo_size(mq->fifo); > + ret = av_fifo_can_read(mq->fifo); > pthread_mutex_unlock(&mq->lock); > - return ret / mq->elsize; > + return ret; > #else > return AVERROR(ENOSYS); > #endif > @@ -121,14 +121,14 @@ static int av_thread_message_queue_send_locked(AVThreadMessageQueue *mq, > void *msg, > unsigned flags) > { > - while (!mq->err_send && av_fifo_space(mq->fifo) < mq->elsize) { > + while (!mq->err_send && !av_fifo_can_write(mq->fifo)) { > if ((flags & AV_THREAD_MESSAGE_NONBLOCK)) > return AVERROR(EAGAIN); > pthread_cond_wait(&mq->cond_send, &mq->lock); > } > if (mq->err_send) > return mq->err_send; > - av_fifo_generic_write(mq->fifo, msg, mq->elsize, NULL); > + av_fifo_write(mq->fifo, msg, 1); > /* one message is sent, signal one receiver */ > pthread_cond_signal(&mq->cond_recv); > return 0; > @@ -138,14 +138,14 @@ static int av_thread_message_queue_recv_locked(AVThreadMessageQueue *mq, > void *msg, > unsigned flags) > { > - while (!mq->err_recv && av_fifo_size(mq->fifo) < mq->elsize) { > + while (!mq->err_recv && !av_fifo_can_read(mq->fifo)) { > if ((flags & AV_THREAD_MESSAGE_NONBLOCK)) > return AVERROR(EAGAIN); > pthread_cond_wait(&mq->cond_recv, &mq->lock); > } > - if (av_fifo_size(mq->fifo) < mq->elsize) > + if (!av_fifo_can_read(mq->fifo)) > return mq->err_recv; > - av_fifo_generic_read(mq->fifo, msg, mq->elsize, NULL); > + av_fifo_read(mq->fifo, msg, 1); > /* one message space appeared, signal one sender */ > pthread_cond_signal(&mq->cond_send); > return 0; > @@ -208,25 +208,25 @@ void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq, > } > > #if HAVE_THREADS > -static void free_func_wrap(void *arg, void *msg, int size) > +static int free_func_wrap(void *arg, void *buf, size_t *nb_elems) > { > AVThreadMessageQueue *mq = arg; > - mq->free_func(msg); > + uint8_t *msg = buf; > + for (size_t i = 0; i < *nb_elems; i++) > + mq->free_func(msg + i * mq->elsize); > + return 0; This function (like most nontrivial callbacks) relies on buf being suitably aligned for whatever type msg is. Therefore one should document that the src/dst in the callbacks is always suitable aligned for all non-over-aligned types. > } > #endif > > void av_thread_message_flush(AVThreadMessageQueue *mq) > { > #if HAVE_THREADS > - int used, off; > - void *free_func = mq->free_func; > + size_t used; > > pthread_mutex_lock(&mq->lock); > - used = av_fifo_size(mq->fifo); > - if (free_func) > - for (off = 0; off < used; off += mq->elsize) > - av_fifo_generic_peek_at(mq->fifo, mq, off, mq->elsize, free_func_wrap); > - av_fifo_drain(mq->fifo, used); > + used = av_fifo_can_read(mq->fifo); > + if (mq->free_func) > + av_fifo_read_to_cb(mq->fifo, free_func_wrap, mq, &used); > /* only the senders need to be notified since the queue is empty and there > * is nothing to read */ > pthread_cond_broadcast(&mq->cond_send); > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".