From patchwork Sat Jun 11 22:25:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36167 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp510913pzj; Sat, 11 Jun 2022 15:25:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUSfBwh95PxMYC61alewSFy+G0KbYrOqJPZF6ScNiEuQKYesrVaUOpPoF47zR94qIY0YfL X-Received: by 2002:a05:6402:1d4a:b0:42e:93de:17f4 with SMTP id dz10-20020a0564021d4a00b0042e93de17f4mr49885518edb.8.1654986334062; Sat, 11 Jun 2022 15:25:34 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b26-20020a170906d11a00b0070790bfa9a2si2650782ejz.154.2022.06.11.15.25.33; Sat, 11 Jun 2022 15:25:34 -0700 (PDT) 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=KvCJpzfM; 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 7268168B3DB; Sun, 12 Jun 2022 01:25:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075044.outbound.protection.outlook.com [40.92.75.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 95A0468B1DD for ; Sun, 12 Jun 2022 01:25:22 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJ74DKO+nPeym7cjPYpAlAt2NPYZ5b1KoB6zI8A6wjEzSdrn50WZhwn957efQbGi7KvAP1LxaAXoB3YSCowZgBluNhC6qpI4YW3Ii7vD0iBrUFMbjoJ3BR4WWNZOFLdCxXluDL8059P/niBEfrHva+D069bAPrEmmGeBHDb7ndEzIfnJDdlia/sK8p2sd0SKKWUwEE7u9ALnLQiA21Rw9HYn7fyXPpLOXK0icWjbcDztL7bKGULaNy7gjYUjZDU7Y8SxVRWDR4ztstVLIuaEhdkuKrvgRBvEmpgCl27MV3B1gMuZv8XoDtIp0O4N6Ra4wIu4ouh/J+rbAbh6MG/Kbw== 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=bLRYM9DLXRf72Fd2i6kp+FFQh/sjrwuMrrz5PtBaAgM=; b=QfjVNg258AyOMT+Wdl4L+JuR7aeHKYvVbKrTtxxiZNeuhJ0JAd3GceR0aTdsCtvlj54sTiZN+EDCFHoJiBfjDU4Y32Qbm6nUAfSoC6bj4QWtFsujBPzv/zb+xhLuTSpKGV4JwO6njWV8AGDuQH4vPU+IXJqq2Cc41GPu2zRfjZqWAcYJkkhz8adSi7n3HzK01smhzm3KzEIxEGDMjhm/ioHrnSPBzdgCbDj0EJrlf0hDI6iJAWAav2WJ2ULOLXJSUna0M8yrQsSFwUwGXKRg4Z5Ax0zfhUaT3Vn4hqcFO3CAPMRVRKhfXBogdnYUh7UISWxRB+lGMiHcYVDvjzqMEA== 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=bLRYM9DLXRf72Fd2i6kp+FFQh/sjrwuMrrz5PtBaAgM=; b=KvCJpzfMOj/DdOgK6+ngNzltQmZS7sNqJS2YiGPJpVSes8/CvXV+p0+oKvAnFaND1Do7a87hKlAZk+bmcsxCtreUfFrnjqCAVkc1+7Tca6SupDWH8ZPzgKs6ARAVizZAyM7dGcvh4krTeHBS5PcYESIIa0qsGOQmXsnIa4teHmq+Gxa2Usb2pKVDk9Qm7ES9GCdZp8iuq7rb6SeBBkaHcRd3FA3XOzRQpuV6Si0G2i6jJedZLKS5wZBi8eiwaDyJ1XF07SwXeKv2T4HyaENpxXgJDw1pS2X7Dd7RONEi+50vx0fTG8GRdUo/0SEFfH/7P2S+1P7ZJ0ys6sfy4b+7DA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR0102MB3267.eurprd01.prod.exchangelabs.com (2603:10a6:208:22::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Sat, 11 Jun 2022 22:25:20 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.016; Sat, 11 Jun 2022 22:25:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 12 Jun 2022 00:25:02 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [GKDHgFalKog/1K/Vt/QxX/l9JXOn9i1b] X-ClientProxiedBy: ZR0P278CA0163.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::10) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220611222502.3754378-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6b715ab6-a730-490d-560b-08da4bf94174 X-MS-Exchange-SLBlob-MailProps: f36zkjAOy3UK2i+0mlfdxnJIRCWJWOE9kYZcUsReS1FANwYlA86q7/5bQAz4c7s5FlTq1iRQ/NUbrg1M3GOn0xJzaSBM0kV9NlEUh1oZLJd3cVowUPr1j7bl97Cod7KEEddJcAXjdHJAy15h+1qO3DYg7gwalMlFTKRw+F9ehGfdefI5bQMr0wEznoC0RnrtVXflXgBNw/YGva/UCujIBFAu+HP7G4/0KcWVvFhzNL7RTmK6+fVvDGXlrkZ1FMSht7952uZ0V23IJigDxi9D154saENNCGNVDMXqw2tamnp/F6w7dXp+iq2ckK+4GPN3RLa9cvuRQ0K9+diE+1ZNa0C+BYNNlEIBtlglnBOjFDdw3uUTDkFvtj3HhvhzVBekfKajxSYACvgmmDw+vsQ+hJWyaXKrwfQ+f7eZXinsrkhjeIaymkEpgvtQK7PkNyEva9FL0r1/8yIu0YH29GiwC9w0vL0yJs9LKRPRXLVmhjYUIjwijgXGOOJ+whVRI6gmpipoRRBfn441Sr60JNfq82QKhLn6kVUUf2KhxsFIWmUNFgqwBuApi0uLMbSdNPgW2p6IK6pYssfHXcvzi6hW4Xk4TGhNtlNhMQFJLCG4NIfUKoseObcRXV8uugXxFtaE8Twg82ds8qLpP/nwk4H6ktuBme2rgmElgIcv2JsgNBFl7+8YjefxN7IwcF6sg40hFu+IBVaO6h6IonRsh8FoD+lENYtCjXrwPdGFuZg3Znc= X-MS-TrafficTypeDiagnostic: AM0PR0102MB3267:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Hyn8lPCT9qAhTjige6tSQYqZL/4ZOHfIMxKE8jtT26YNTo1oE3wZv4DwJJdqe/jbH/eD0whG63GWtN8QN6JFn1L4MCe4GFegZyNHkpon28/cueQ6UqbgxZb7xggcK1kpjM1ndt07cj4UGLQqV9HECHHSwJzvOUPIiU7IhgHBP91zSUmYa+E9eqYTEXVQx2/BjLWdn9FKQ7RvPHdrzoA+nj3+YTFLaO/CtwOOaSK4O/8N9QQ9smJtf3Oxl6Lx/URY/99j15Yu//nFLrEZP0TPPG6J1SiJpHanNVlY/8ihH6CgJ6XyQlT1/5mxOrddzqua4douWN7EK3VXCPvVxb0qasUd8JyzwXVmCVQg5lh1ygZ3hv/M9Tba+nY2N3YTjojbi88b1uAJZLmS+b+y9K4KdwgdPYf6iztWa9RFWXSGbWCilywRPG3fBTDGTG92TasOSHreBivzyVi+u1uPYOc3r9zEAgQWXkNgJP/75RTUCg6c1tZNlHyUVlf9jU00xG31VD0vL59AHDCnATt490rIz9K3phdXJH3ZmwtJhADJouPu/KrWrPnqD9fQwgejtzbxTxR3SlG+epP129SccciXA8O0NVSQm7C8iEAswkJVVfsMuizF0EGvEZWDkyPogBZA X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KptNeWZ5x2YYbmvltXeZ6Rzd/PC4gnbFwsLyp6yBQhjvPY2QDHKLtjy7Rpp/hyCqtUQO0B+kJB31EnR1cpPiO4kVuE0gmTgh1qWc0eNhqzS1rpq0AyfYijOfAMLDYhHim9taMgPjD9m1uNt6Vziqi0DBbVFFrWaS7QeMg86ILch/yKne/8/tFJ/dMksxslb1WJbxNGcpMPxMQmN7oulp1zd4pAAFP4K3caT1gVvg0Irvl1N7bAsz+3XBWScoxgzvaT5n/1vMdKt0kuDJdEhIcZAYv7JMfuF8qDYlBOdu9Z2jSeKhFaMOq/715l34I81aREm+W6/1WRidx9nhuCa5E/rvdNxzZTVwSH/+EOh9YhBlt4e6CiSeWQGhzsG7Z9ltT0Hcq6rmdPPzZ7/pT641m9qrgo2zXU6I8YbK4zW/QArUj7ZQWQLWy/vwFr+001y8TIFYHodzxFs7bm9+VaqTdhhHJtHqgPMQlHCZ2MP4BV2VizNdG3sM44XhB5MryimPLcM1oCkRhLETCmjGntzPTAyNipA8P8tckREoV46/k+ZcnytVyAvS5aQ12z8t/ArKJtmNE9I+McUwy4V/heS0htDM2BwGrWcIY2yYNMl19uqPX8tgmNs/+xmVBHf9TaAiPKthSvz+lAnOqT3Wp+R757VpqhZPkgBf/lznevchTVqyI08m5QRatemsdakm00MbpvZdMEE6NuWFrMhfE5d6kcrORHPDudqPhURReRGktce6Q2ieRCgL7mcG77JYvoN+2Meh7EIyAnG514L8iRVdGyxwoOebXTB/V4NBc/o7pQYcdrZ+oX1f2q41UFVYN6jUzEUuT239SXz8/ri56KRML+9FWLy3e0B/F9LURm0ypORh6a7pAEemOevUrwDldQZilHyzdMXHhMsxsYWF1TPgc3vFu0kE96NDbNS0h1WdvTXtiqlJe9XWIGr0ZZN60n+oQJOIIpNYtOqy7+lciRydR9XNOgaF3Zs6sm9IYr3uqTWiYNDlUdiB9dxBir88YZtuBGLeSLxrmXAz+X+IySY+aBZMqIZBLcsS07AWi7qUHI9RNGnlUaPm/m/6cZAMURotS0+CSyq2i+I5+zKVvtT8S+dIKdj/UoB+tDQQ9QTMD8G4UQetyS31ynOKaSOSQL8OiVHO/v0W7rAg6Wlq63fSWr0LomWUCSl37SX+TqnD2PzcIUyeURqLwjTwMGhKo/6zovLMrIs20W175oh2BBcEkxWaC62aswzD0xjJooRsGAlYXdn28jm7qIZYOJ5MqEZfBajlsta7ohAezbrvDELUsI+JBP1Zfd1EqPd6Ql18MRwuLbpUA5wAcb4u4rEESZ1gYsvvD+Tk3NGYkeWVwrWW6HQKZc+8IHGwDRtCzwhCq23XJuSgghlaEs2BnIFT0ewTTn5gBUP7o2JiF+1dHLsnGPssXxOhx/jxpnxyjgUOdOONDvyTeVArvpHWdMA7AhFBvs02Kg/ZZnIfDE9ddc7Pdg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b715ab6-a730-490d-560b-08da4bf94174 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2022 22:25:14.7179 (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: AM0PR0102MB3267 Subject: [FFmpeg-devel] [PATCH] swresample/resample: Properly empty MMX state 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: hiUzbg4UJ6mG There is a x86-32 MMXEXT implementation for resampling planar 16bit data. multiple_resample() therefore calls emms_c() if it thinks that this needed. And this is bad: 1. It is a maintenance nightmare because changes to the x86 resample DSP code would necessitate changes to the check whether to call emms_c(). 2. The return value of av_get_cpu_flags() does not tell whether the MMX DSP functions are in use, as they could have been overridden by av_force_cpu_flags(). 3. The MMX DSP functions will never be overridden in case of an x86-32 build with --disable-sse2. In this scenario lots of resampling tests (like swr-resample_exact_lin_async-s16p-8000-48000) fail because the cpuflags indicate that SSE2 is available (presuming that the test is run on a CPU with SSE2). 4. The check includes a call to av_get_cpu_flags(). This is not optimized away for arches other than x86-32. 5. The check takes about as much time as emms_c() itself, making it pointless. This commit therefore removes the check and calls emms_c() unconditionally (it is a no-op for non-x86). Signed-off-by: Andreas Rheinhardt --- The reason I don't add an ARCH_X86_32 check is that I intend to remove this emms_c() again shortly. I have just updated my branch [1] that removes obsolete MMX(EXT) by a commit that removes the MMXEXT resampling functions that are the cause of this issue. A follow-up commit then removes the emms_c() completely. [1]: https://github.com/mkver/FFmpeg/commits/mmx2 libswresample/resample.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libswresample/resample.c b/libswresample/resample.c index f1ec77f54b..9c5b7fee72 100644 --- a/libswresample/resample.c +++ b/libswresample/resample.c @@ -452,9 +452,6 @@ static int set_compensation(ResampleContext *c, int sample_delta, int compensati static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, AudioData *src, int src_size, int *consumed){ int i; - int av_unused mm_flags = av_get_cpu_flags(); - int need_emms = c->format == AV_SAMPLE_FMT_S16P && ARCH_X86_32 && - (mm_flags & (AV_CPU_FLAG_MMX2 | AV_CPU_FLAG_SSE2)) == AV_CPU_FLAG_MMX2; int64_t max_src_size = (INT64_MAX/2 / c->phase_count) / c->src_incr; if (c->compensation_distance) @@ -500,8 +497,7 @@ static int multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, A } } - if(need_emms) - emms_c(); + emms_c(); if (c->compensation_distance) { c->compensation_distance -= dst_size;