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 6875448D06 for ; Wed, 24 Jan 2024 19:34:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 46A9F68D0E1; Wed, 24 Jan 2024 21:34:18 +0200 (EET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2083.outbound.protection.outlook.com [40.92.89.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B10FC68CBAD for ; Wed, 24 Jan 2024 21:34:12 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RsiZHgXR7Xge6rkz7214AAr1OFJyQh6P65JSU5m5G9t4BUkvaPirAXP23sjmqbYkUZp0ufH///khUzsce6xm79/fBfavbyd8rJoSMMUgO03kdnRK5hwekev3U30ovKzL0w0lt52ONa4hjavGUTUhjiAaoaThd/sXFSeTFGwbqwcMnEPZdrP81OLqZCl9nMAevLqi4nAwl0gH1isBuFbvYzk/AAPnDbXZY3yuxtnRj2e9xuQiBEsXTO3NzEpS3pXOkvPe8RHMJCrTyf/s0K6ZjfbCdoCo0Y5JpPp8ZoJ1hV4ZZArGOzjT9RdDps5zWIdftHIBkFIfzbZZQwiRH6GE9g== 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=kUT9Gz1qIPUuLl9966sy3q4QqfVeXmjxICgWVJJ8RJQ=; b=H13hnbVp+iD4OxzDRmZDtGDdQl+fOC+pd+Omk3jRD2O36hkZisPfMQvBYw0tKpjsfdoX8RRMPMYTeLwrVKW+vuaSf8Bi9C9kGNLpdHdYAXOrAiZR2yHVzshRcwojpzXe16W2VdEx8ThzWIQhqwIokG1oeDyfcp4tEC5YK1D1pkQIW/PzntxpIwVgWQCpXekM95upwARk8XU7z5GsxiaT1CorohEdpTNCFblmJvw8x3oBhiTpUM1oWc1bwrTdF+T+r/w6Z24kzWcy6xMdz+CkbTe7l2xc8TcGPTapQ4Qvi23T6REGVOfn3izdMoIk+/G34CUm3XQTqB7ATRyTfdLueQ== 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=kUT9Gz1qIPUuLl9966sy3q4QqfVeXmjxICgWVJJ8RJQ=; b=N/HMk60s+wujCaEuFvu5LJ4Hmgz2Seli0QpPcIpZqQVOvVl+aBTiTj1b5KWLWPFP0abNF6hcZd2u35ca7d2rlJlpUy0JBu2bhvVr6WPwCG83aYLsJ80+TjIMqJbFXpS3HTqvpAwSc/a3s9/HUuefZRI3FEmBd2WGSUndbnpdM/MFujdcfB47o9vPxAYzLtbP36mW+BDR40TpSJy4rYDFWZoBPgzJNby41W6QAJDM25SMPuLujI06HemtKvpWMjELWBd9o5aK/w8G/J2idnN2nr0CA9Kjez+fQpHz44hls3eOTxDax5NuVrWtW7f0Ps6wzdC8TivMosnFu7q7kx7eyg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0055.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:35a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Wed, 24 Jan 2024 19:34:10 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7202.031; Wed, 24 Jan 2024 19:34:10 +0000 Message-ID: Date: Wed, 24 Jan 2024 20:35:48 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240124192916.22857-1-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20240124192916.22857-1-anton@khirnov.net> X-TMN: [y7QWFfSsipqJmQH+5+z6f+5iFOSA8ci6ZMJzxZplhSA=] X-ClientProxiedBy: ZR2P278CA0079.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:65::18) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0055:EE_ X-MS-Office365-Filtering-Correlation-Id: 1abc5901-871c-40e7-d4f7-08dc1d137002 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5Z6LXsT6hKTIqpOBzFYEp8B3Xc9xoAyxk0IJmGf9NsFjwT5YVx81G5DtZU1bj2xw8NEXEwjMqYE42j0mkb4oQGcH5mcnIBDiEvp1aN7cHy9vfxGJZ7nsRn0gtuISAGfMmE2RnZPM6pD724WtBBr+y4an8IdtYyxuP9Jequd/x0FmKb9lfBq9938ebNuiyXM1NeRSppGASH3QJOGJI+rRd49RNSWqb4dyA+Z7eOJzXetVfu0B59gWTdUERAymI/UeTcYXm9hr4hqR+S//Uh0SHT4fR72bY5pCH4MExKQXqWJjnBrJGRySsmEQKsucCbD3zfLZI/0OOZSyjvXWM16NYbRtxG/ceH+qM0OY55FEtnDS+BFYLYbZD1Qz8DzxYYkNRXUtdKPQnO8iWXxx2VCf8sr6CU+hbjm35rCXZvr+b4IM0yTEwCqqtoUioJNryEEnrfJtFgdmajPP92y1JyCyZ9p+BIFQXFO2xidvt1o+A691eNxiQD9/khT55+RbODtRgqES1up2/fxNFH7hHDISBEX4O5yd63v2+I/BUewuXUVsMpe36suQYhRErcHk8HKW X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SHl6M1h1dkltSTRyRzZBbW1HQmwxVDdEMXpiazBPSVY1U2pESGcvWTRHUEF3?= =?utf-8?B?SDA2bWczT0U1V3hiZncwd3JjNzhOMkZHNUlOdlJWaWpKQi9ISHEvR25NWFY4?= =?utf-8?B?MncxeVEweThxaDY3SVpWeDJaMnNzdHFFbmt2OHhPQ2pmRFA4U2pXQTNScmFX?= =?utf-8?B?b1NNek1QT2RqUTRTSDdzamVnczNBd2IrWWkyazdHZmQvYjM2c1FGdmVpaWU1?= =?utf-8?B?UHB5ZVN2RWdPMkRlZkVScnRab0tJZ1dSajdRV1UzTlpGVDVlZ1Y2NUloZ2h5?= =?utf-8?B?Zk1YNjdkWWVBTEtDajN1UFBueDY0dGcrZXhJUjkyS1l2UGQ5eXlrNHdUNFVO?= =?utf-8?B?SVNXd0dWQWJMcUtXUXVnL08yV0l5VEZtM0VaeWVYbjRMS05XT0s1ZFpzQXpT?= =?utf-8?B?QS93bWZ0SXpxMlZrK1RzYVZkWEs3SnhsREhDNHJMSzJydGFJYS81MzMwZkF2?= =?utf-8?B?aGlWTlZZNDBNNXdEQjBEWVd0REJsQjhXc1N0NXo2cktaMGNLMnlTbjB6MlRu?= =?utf-8?B?T2VKdU92akQ5NDBnWnZSTGt4UEo3dWtqdEtVNGkyaTdjRUg1ZTBwakU5eTc4?= =?utf-8?B?NGFvbmhaaVd3VHFSc2lNQncwSlVnZHI5dFdDdUZnWC91M3ZZT1RSdEVLdG1K?= =?utf-8?B?THN2NklLL3liSjlqcGZvQ3RFeEpmZ0MzYlJsSlRwekpQclJ0TG0xV29LSUNL?= =?utf-8?B?akhRTFpyRnl4WVhhZ3hZSW03TVZ1UkZEZDBKeURIMWptRWEzL01oMUw2VDJI?= =?utf-8?B?R1JNYXpDNjQxNWNKbUVPb2JZVjVuek5HUU9RdU11anlKMnFDSzRwN1gySG0y?= =?utf-8?B?SUFvVnRrWHFEK3NhMDJFWVZ0anAxam4rTXdsOC9kUW1mVGdUbWtlSEFjTS9V?= =?utf-8?B?R254ZHV4bHJEM2FRcG15NzhOOVR6R05DNi9JOWpEd09aNjBjZFJsSHpOWlUw?= =?utf-8?B?WThnaVhDSTNjNzI4T1oyNEYxbTFUUDduYVM3anRJMDhHTUJTdGU4TGNSMXRx?= =?utf-8?B?Y0pDYXRxa3NOcVlvVlg5UGZGQm1KcXB5d0RvdEhBTUoxOEFJVno2NkxZaTZu?= =?utf-8?B?U2liSkJIRndPSUNVWGl2dE5vV1pHb1hvdGN5V09mV1R6bnVNblpieklpSmpO?= =?utf-8?B?NkRWOEw5Y0N1a3NvVFJWQkVVaTNNVGJLTVlkcTVrb2NFZTJKQU5kOE9jVGxI?= =?utf-8?B?RVJObzlpc0lUb3RIUk9sVU81ZFBsU2xoZ0M3Mml4aWZJS2VucTJiTjZjMGtJ?= =?utf-8?B?YysvVXFvUnVwenpTZGlrbUVpMEJCZjV2U0FPMEFVdXpuMFdBcU13bFBkWStN?= =?utf-8?B?MjdlQ3FoU1lPWmdqc3I3dy9sNzkvTlZNSzNyMWphSDViSmlkRllJS0NPWjBV?= =?utf-8?B?cGQ1RE1OL2VMRFBtN1IxWUQyMTRRUmtpWE5ISkJ6eXZmMEJiUTNTczlGcTgx?= =?utf-8?B?L1M3QjBBNWozOEUwNk95amUzcFFqUzdic0lWNjVERXJ4d2hPOGlhRDNrVEtT?= =?utf-8?B?a2NLSkl2U3pUUWtiaTB3UzBTdVF1M08renF3dDkzL0ovdUtwaW1LL2ptYjNh?= =?utf-8?B?bU9nTnFEVkVFRjMzYUVPMHdKOXRFQ0ZYN3lidXYzOUxvUG5jZU5FNTRwa0xV?= =?utf-8?B?a2hPd3M5QmcwbFV2azYzdVVJSGdwazZhOHhMOG05RFhqamZpSjMrYXpVV1pv?= =?utf-8?Q?1GLbF0UO3AhlSwxrJFCI?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1abc5901-871c-40e7-d4f7-08dc1d137002 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 19:34:10.3146 (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: AS8P250MB0055 Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffmpeg: optimize inter-thread queue sizes 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: > Use 8 packets/frames by default rather than 1, which seems to provide > better throughput. > > Allow -thread_queue_size to set the muxer queue size manually again. > --- > fftools/ffmpeg_mux.h | 2 -- > fftools/ffmpeg_mux_init.c | 3 +-- > fftools/ffmpeg_opt.c | 2 +- > fftools/ffmpeg_sched.c | 15 ++++++++++----- > fftools/ffmpeg_sched.h | 4 +++- > tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat | 5 ----- > 6 files changed, 15 insertions(+), 16 deletions(-) > > diff --git a/fftools/ffmpeg_mux.h b/fftools/ffmpeg_mux.h > index d0be8a51ea..e1b44142cf 100644 > --- a/fftools/ffmpeg_mux.h > +++ b/fftools/ffmpeg_mux.h > @@ -94,8 +94,6 @@ typedef struct Muxer { > > AVDictionary *opts; > > - int thread_queue_size; > - > /* filesize limit expressed in bytes */ > int64_t limit_filesize; > atomic_int_least64_t last_filesize; > diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c > index 6b5e4f8b3c..8ada837555 100644 > --- a/fftools/ffmpeg_mux_init.c > +++ b/fftools/ffmpeg_mux_init.c > @@ -3047,7 +3047,6 @@ int of_open(const OptionsContext *o, const char *filename, Scheduler *sch) > of->start_time = o->start_time; > of->shortest = o->shortest; > > - mux->thread_queue_size = o->thread_queue_size > 0 ? o->thread_queue_size : 8; > mux->limit_filesize = o->limit_filesize; > av_dict_copy(&mux->opts, o->g->format_opts, 0); > > @@ -3081,7 +3080,7 @@ int of_open(const OptionsContext *o, const char *filename, Scheduler *sch) > } > > err = sch_add_mux(sch, muxer_thread, mux_check_init, mux, > - !strcmp(oc->oformat->name, "rtp")); > + !strcmp(oc->oformat->name, "rtp"), o->thread_queue_size); > if (err < 0) > return err; > mux->sch = sch; > diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c > index 304c493dcf..7505b0cf90 100644 > --- a/fftools/ffmpeg_opt.c > +++ b/fftools/ffmpeg_opt.c > @@ -144,7 +144,7 @@ static void init_options(OptionsContext *o) > o->limit_filesize = INT64_MAX; > o->chapters_input_file = INT_MAX; > o->accurate_seek = 1; > - o->thread_queue_size = -1; > + o->thread_queue_size = 0; > o->input_sync_ref = -1; > o->find_stream_info = 1; > o->shortest_buf_duration = 10.f; > diff --git a/fftools/ffmpeg_sched.c b/fftools/ffmpeg_sched.c > index 4fc5a33941..62a40c6057 100644 > --- a/fftools/ffmpeg_sched.c > +++ b/fftools/ffmpeg_sched.c > @@ -218,6 +218,7 @@ typedef struct SchMux { > */ > atomic_int mux_started; > ThreadQueue *queue; > + unsigned queue_size; > > AVPacket *sub_heartbeat_pkt; > } SchMux; > @@ -358,6 +359,8 @@ static int queue_alloc(ThreadQueue **ptq, unsigned nb_streams, unsigned queue_si > ThreadQueue *tq; > ObjPool *op; > > + queue_size = queue_size > 0 ? queue_size : 8; > + > op = (type == QUEUE_PACKETS) ? objpool_alloc_packets() : > objpool_alloc_frames(); > if (!op) > @@ -653,7 +656,7 @@ static const AVClass sch_mux_class = { > }; > > int sch_add_mux(Scheduler *sch, SchThreadFunc func, int (*init)(void *), > - void *arg, int sdp_auto) > + void *arg, int sdp_auto, unsigned thread_queue_size) > { > const unsigned idx = sch->nb_mux; > > @@ -667,6 +670,7 @@ int sch_add_mux(Scheduler *sch, SchThreadFunc func, int (*init)(void *), > mux = &sch->mux[idx]; > mux->class = &sch_mux_class; > mux->init = init; > + mux->queue_size = thread_queue_size; > > task_init(sch, &mux->task, SCH_NODE_TYPE_MUX, idx, func, arg); > > @@ -773,7 +777,7 @@ int sch_add_dec(Scheduler *sch, SchThreadFunc func, void *ctx, > if (!dec->send_frame) > return AVERROR(ENOMEM); > > - ret = queue_alloc(&dec->queue, 1, 1, QUEUE_PACKETS); > + ret = queue_alloc(&dec->queue, 1, 0, QUEUE_PACKETS); > if (ret < 0) > return ret; > > @@ -813,7 +817,7 @@ int sch_add_enc(Scheduler *sch, SchThreadFunc func, void *ctx, > > task_init(sch, &enc->task, SCH_NODE_TYPE_ENC, idx, func, ctx); > > - ret = queue_alloc(&enc->queue, 1, 1, QUEUE_FRAMES); > + ret = queue_alloc(&enc->queue, 1, 0, QUEUE_FRAMES); > if (ret < 0) > return ret; > > @@ -861,7 +865,7 @@ int sch_add_filtergraph(Scheduler *sch, unsigned nb_inputs, unsigned nb_outputs, > if (ret < 0) > return ret; > > - ret = queue_alloc(&fg->queue, fg->nb_inputs + 1, 1, QUEUE_FRAMES); > + ret = queue_alloc(&fg->queue, fg->nb_inputs + 1, 0, QUEUE_FRAMES); > if (ret < 0) > return ret; > > @@ -1313,7 +1317,8 @@ int sch_start(Scheduler *sch) > } > } > > - ret = queue_alloc(&mux->queue, mux->nb_streams, 1, QUEUE_PACKETS); > + ret = queue_alloc(&mux->queue, mux->nb_streams, mux->queue_size, > + QUEUE_PACKETS); > if (ret < 0) > return ret; > > diff --git a/fftools/ffmpeg_sched.h b/fftools/ffmpeg_sched.h > index b167d8d158..d12affa69d 100644 > --- a/fftools/ffmpeg_sched.h > +++ b/fftools/ffmpeg_sched.h > @@ -225,12 +225,14 @@ int sch_add_filtergraph(Scheduler *sch, unsigned nb_inputs, unsigned nb_outputs, > * streams in the muxer. > * @param ctx Muxer state; will be passed to func/init and used for logging. > * @param sdp_auto Determines automatic SDP writing - see sch_sdp_filename(). > + * @param thread_queue_size number of packets that can be buffered before > + * sending to the muxer blocks > * > * @retval ">=0" Index of the newly-created muxer. > * @retval "<0" Error code. > */ > int sch_add_mux(Scheduler *sch, SchThreadFunc func, int (*init)(void *), > - void *ctx, int sdp_auto); > + void *ctx, int sdp_auto, unsigned thread_queue_size); > /** > * Add a muxed stream for a previously added muxer. > * > diff --git a/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat b/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat > index bc9b833799..3a3ec96637 100644 > --- a/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat > +++ b/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat > @@ -33,8 +33,3 @@ > {\an7}( inaudible radio chatter ) > >> Safety remains our numb > > -9 > -00:00:03,704 --> 00:00:04,004 > -{\an7}( inaudible radio chatter ) > ->> Safety remains our number one > - Why does the output of this test change? - Andreas _______________________________________________ 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".