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 EC06B42995 for ; Wed, 6 Apr 2022 16:30:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 47B6068B159; Wed, 6 Apr 2022 19:30:03 +0300 (EEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam08olkn2027.outbound.protection.outlook.com [40.92.46.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5481F68012C for ; Wed, 6 Apr 2022 19:29:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mc9ghM7yTZxpEK1kQCuq+VLElsa0kZrbOhREzgGctzal5HkJSVqh/1CLd5IBgAudQUkBxS0WAcxPC7EQ+h+YxBjbPPiVXWox2Vc2lq4+IsP30MyDxeRd6JowqZUGX67uK9b1Xo0uLCqpcziuPQ2S03zXQZOP4JuP7q0y3GBB1DKhURFZasw8z8lXrS2fpHet6H1a6sqnx2RSUTw1Fwor/7zi5flOkdRnIEQN1Z6Tma2Lu53NpgCyaAjVq2/J3GDtkDcBHEQ/MVXmcEBG4RZUkxCxoJNaaeKwDagJWS6WKtDLin/ZBKQYM8EH9iHUx20jvs9kAV3OdazG/lP2yaN2jw== 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=OFgYu57w8pO5t/3yXNHOrEGCtkINd6mJHTdEy2jUWRQ=; b=jH2UPx8QPWqp+yoZAeH0dfJbYxAlUsM1rgDMwpQaXLIKEGfcyr1VxbjkIkXqSJ8OG3dcEKB9VnJQOZedO3IHhjfNSgACrA9LFlOWGyqL30cqlxSSVahHlbxDNi48xMnUnaX3bcqktxPlkYuzywAnMD2yMbkLRVoTGXH04OK1UHKF562eAUhr9nFYlx2hsS0i+5QL0NYxn+H3rXgPmrPjRshkgp0UUTYCl7pEmu0lgxXi0WN/05LwkGG+zEx1Ntzg+q04pYcdCB7C7RG/M2SQ/MM9LAxzy3afxt6v99NB4oJQpPuz4jjkVpfPjBwb3b+usDYEWCWGeIjCzCSWSBY4/w== 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=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OFgYu57w8pO5t/3yXNHOrEGCtkINd6mJHTdEy2jUWRQ=; b=P04JiToJAsj9QkTyKigPrn4MMm7avN5DtrJX6/vpTty/tECGF0E179bgZqlNU5c1UDJkeV33WBZParBpJtRQyNmRq1wGKVDJwf1cvhEl3+MOrH4xqbGMOLgiO193Dlsw36QglwzafAo7lypsX2h3ElF4+Ji6knbbWEEt1RccPEHDsgtl/c1/B+CoJTbl3Z4fpu9XYcxvds6EsdjYpPVp48c1+5e1rt9WXv5nveUpEZXErTJtXbcZb9kpJroXZtCmyGjKsOtsYy4SuqC8WcCaYFuLD7UzC2kT//qyQOYfz8AyOXtXZ/ycWMDt82ZTowQ1DDW1K8TIyVkpQsYg/pPoAQ== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by DM8P223MB0008.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Wed, 6 Apr 2022 16:29:53 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::1d14:8778:3a51:ed0]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::1d14:8778:3a51:ed0%5]) with mapi id 15.20.5123.031; Wed, 6 Apr 2022 16:29:53 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [RFC] Switching ffmpeg.c to a threaded architecture Thread-Index: AQHYSBeuHAE+RPuGxESL7bK+MVIG+KzhsuYAgAAIfACAANjoZ4AAdt7w Date: Wed, 6 Apr 2022 16:29:53 +0000 Message-ID: References: <20220404113037.13070-1-anton@khirnov.net> <20220405191542.GV2829255@pb2> <164918796468.24258.6158464741625303482@lain.red.khirnov.net> =?utf-8?q?=3C?= =?utf-8?q?DM8P223MB036517C3185EE467B97EF6B6BAE49=40DM8P223MB0365=2ENAMP223?= =?utf-8?q?=2EPROD=2EOUTLOOK=2ECOM=3E?= <164923451378.24258.12863595879743109558@lain.red.khirnov.net> In-Reply-To: <164923451378.24258.12863595879743109558@lain.red.khirnov.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [/Ddf3bhoYJr9X7WLmfJxL3nh3mEL2y7M] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 428609d4-eeeb-425d-c626-08da17eaadec x-ms-traffictypediagnostic: DM8P223MB0008:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WJBf25X8dgD9fv4wYLF3bArQ4dohyLX6gfQodkhobaSRaV8ZlAiiBullBsmrSMD8cZbKwH7NzfwZ942rnLk2tnRKX9eHMbQxW+qFn0k+yY4T2EdwRC9jaId4rHAxuKDEooBs3l127lY/Q4/TK0ojAZFFStY5Ccfm8erxsLf2EG2SZ5/43rdZPoTtpjikwAcQmr7eLiVje/Tx0BUmj7j2OkDgo6iyqAPH/n0J1aC5K6LWH8gJSSq84dPiJqauqQwlYjkbU8cEFCpQvGcEItVHtdP9cS9qKaxZyWvVrHRznQC7rmty6ffzYLGcdqqMZ0/W8S0bXL200LSoLz8vg77uvoVjIbQI4cKaxL/0JbhfJ2c4XJaQBRCd1WG1fixKBoY8XDpE7xdwDyrZkS+LfC2Jbdd+CIqgfH4yHocClQxhZYeg9j8jHNZ7woUhVLZDvkLJUdSwxjBVu0VO8jKy0ScYg3JLE7IUHYgYPwHuYD0i/HMpnrSyVOGmT7soh2qpoEm0GCSoPNmyEOyo24IzaE/Fm4mDo+6m3laKa0F5lbDjkfaoBKU3AixnJ2t95xl96Ew9knyPDxrFPf0JEw78ME9Psw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OWJBSHU3MWRxMXB6QTB5YkFnRXo1d0gyaGczZFhJSUFxRERubTVERWFIMFFp?= =?utf-8?B?dlVjN2FHTitVMlFOK3FzUWE5MHJudXRnbkdPRzVOcFBGdTB4OFU2c3pqMzB0?= =?utf-8?B?RE85NnVmc2w5anhodjJQbUlXaUVUUlNIdFpLQWxRajJHbGsrS3puaWFpWjFI?= =?utf-8?B?U054eHM2UDlRRzh4eGJFSmZkTmpVeGRjdVJXTTRaUWJTQmQyTXVhNzhkWWdl?= =?utf-8?B?L2sxK1N0ZTdpMGgwVTU0WTY2dGJMZHYvajg4eHVJRjVEUmNCYVVDaVVRUUg1?= =?utf-8?B?T0QveEdGVVd5b2ZqSGs2RHlaWG9jUmJCY3NKU241WWo3TmkvaWt6VEFNVURB?= =?utf-8?B?NVU1ME83NEVSOWFSb2N0cVZhZ0J3Z3FjU2wzdmJLZ1V2cWRCNnRZYjZBMnFp?= =?utf-8?B?bkJJV09qRFloRHR4dlpORCtGTUt6N2w4eENwNTk0WlhvYXVBVGdUWmswZ3hy?= =?utf-8?B?S0hUTldYSEJjaU9MaXJGQ2QxcXB0bWNxUlNLMWZyUWhBcDE1blZJbHRxRVR2?= =?utf-8?B?RUpYS1ZNVXdYbHBOQlZIZVFFeCtyaitGdE9WZUFTRjZ3Smx1OEdMMll2aHFo?= =?utf-8?B?Q1lnR2tZZTlTQjJHRC9SRmhtSTFVcktveXRzZy9EL3JKZDhQRWxaTDYxVE1q?= =?utf-8?B?QnA3R0wwVEt4eGRQd1pvZWR3WHpvN3BjRUlwV2l2Nm1ZYVI2YTVOMjdVYTZN?= =?utf-8?B?TVJYK2xHbzRDZnFuQ29ZSFBWOW5DbzJjVTNGam53ZXNZMXVWc2pZbGNQQVpl?= =?utf-8?B?OXJxM2hTMFYycnZnQy8rYjFlZlQ5MVNzcmVZdCszemVKVUxBZVV4ajJQSW5H?= =?utf-8?B?SzhJanU3OThndkkzWjc2M1B2SE1iNU8wM0FjWml0MEIzbml5WnRWM3U2SDVR?= =?utf-8?B?c3pvMkdwREllcUlLZGoyQmJzS3V0anBQQndFMnJnMFA0a0k1amdRTXA3TEh1?= =?utf-8?B?Z2k4RnU5SWJpTHh2WjdzVnhjaGN4VDVIQWpQdTYxWVJjTzN6cGJyTjBxRDFk?= =?utf-8?B?MmROSlRaWldOUlhCRlowT1BYOXQzeklwVm9ILzJ5R3BmMlU2Wjd4dXQ4dnpy?= =?utf-8?B?RkFUcDN4R2M1am5yQ3VqMzduakk0U3pEQjh3OFRBYXFOVTJURU13QmQwQ3c0?= =?utf-8?B?OE0rUTNjbW1heTcyN2oxSnJ6OUFDWXNCaENxVkltOVFQZ1crQU00VWYxeCtp?= =?utf-8?B?WGxWcnUyZ09yZ3F5RE91UG1pTXNkQ0g1b2tnT0lvRFVKRTZzbStkZTlnT0o4?= =?utf-8?B?L2VWQ1ViaDFMUTE3alcyKzYxZHpZRHROYTdXTHNpNld6T2dqaEZneWJkUXhQ?= =?utf-8?B?RnQ5bWE5NGhjcjl1WDZOYWNaTTA0b0FNZk1SWk1PdHlmeUlRV0k1VC92SVhj?= =?utf-8?B?YnFadkdMUHRNUWprZlpmQ1dpcDZXTlpxZzJZbnZqNjhyVWxsajk0WC9RdDVU?= =?utf-8?B?NVVwZGY3R1Y1WmtSRFZySVE2RXpoYmFQOWQvSVRjb2x5S2V5YkRBZnozeUpw?= =?utf-8?B?Skc1MEdPcjBhNm1zRkZ1Q1pzeGRhcGE5aTY5blM3VU5EVGsxQTAzSWRsTjNl?= =?utf-8?B?YW9VWkpybWtHQkEycXNCREpOY1lSeUlCL2tJVUtOVXQvUTlMVjZKU1h6a2tr?= =?utf-8?B?RVF6UnRzVUpvYi9MS25VckRCMWp5aDJWRUlQdlh1MjJURTAzOEZXZWtjWm84?= =?utf-8?B?QlhMNXhNU0tIQU5JZ2lGdllFdGxBTktQNFZ2QzVPaDd3NUJ1RGF6cGxqOWZ2?= =?utf-8?B?emxKdEJoUmQrbHNLQXdGMUxSUHM2bi92UUszR0Nxb3pPOXpKRHpQbXRmdHBZ?= =?utf-8?B?OG5WMkMyRldIKzNTMTJ0WHZxcEFzbU92T1YydTRVbExFdDVJYmRIbmQ4aXJx?= =?utf-8?B?R1phcnZPY0tSaVJuSXFQbnU3K290SHZmTk5KdDJnYmZYNWI0ODFrWmxhWGI4?= =?utf-8?Q?HwW83k0U400=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 428609d4-eeeb-425d-c626-08da17eaadec X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2022 16:29:53.3483 (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: DM8P223MB0008 Subject: Re: [FFmpeg-devel] [RFC] Switching ffmpeg.c to a threaded architecture 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: > -----Original Message----- > From: ffmpeg-devel On Behalf Of > Anton Khirnov > Sent: Wednesday, April 6, 2022 10:42 AM > To: FFmpeg development discussions and patches devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [RFC] Switching ffmpeg.c to a threaded > architecture > > Quoting Soft Works (2022-04-05 23:05:57) > > do I understand it right that there won't be a single-thread > > operation mode that replicates/corresponds the current behavior? > > Correct, maintaining a single-threaded mode would require massive > amounts of extra effort for questionable gain. The gain is not to be seen in having an alternate run-mode in longer-term term perspective. It is about avoiding a single point-of-no-return change which may have fundamental consequences and impose debt on other developers when it would no longer be possible to compare to the previous mode of operation. > If I understand correctly what you're suggesting then I don't believe > this approach is feasible. The goal is not "add threading to improve > performance", keeping everything else intact as much as possible. The > goal is "improve architecture to make the code easier to > understand/maintain/extend", threads are a means towards that goal. > The > fact that this should also improve throughput is more of a nice side > effect than anything else. > > This patchset already changes behaviour in certain cases, making the > output more predictable and consistent. Reordering it somehow to > separate "semantically neutral" patches would require vast amounts of > extra work. Note that progressing at all without obviously breaking > anything is already quite hard --- I've been working on this since > November and this is just the first step. I really do not want to make > my work 10x harder for the vague benefit of maybe making some > debugging > slightly easier. I understand that, but I'm not talking about re-development. Let me try explain it in a different way: What I mean is to go through your patches one after another but apply only those parts that do not affect the current single-threaded execution flow - effectively separating out those parts. Then, you go through the remaining changes and make corresponding "similar" changes to the working code, making it get as close as possible to your original code. It's an iterative process. At the end you should have just a small set of changes left which make up the difference between the working code (still following the traditional flow) and the threaded execution flow. That last set of differences can be finally applied in a way that it can be activated/deactivated by an option. When you have been working on this for so long already, then this would make up just a small part of the total work. Regards, softworkz _______________________________________________ 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".