From patchwork Tue Mar 14 02:53:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 40672 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2244083pzb; Mon, 13 Mar 2023 19:53:22 -0700 (PDT) X-Google-Smtp-Source: AK7set9h5vaNnLY4luyhGX9N+HZHlvJQvf8dNd+z+29jzXGvlvXHuQDk5GeE70VEGWjxzZCZQFFk X-Received: by 2002:aa7:d9c2:0:b0:4aa:aaf6:e6be with SMTP id v2-20020aa7d9c2000000b004aaaaf6e6bemr31734697eds.7.1678762402798; Mon, 13 Mar 2023 19:53:22 -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 m17-20020a056402051100b004bff6dee492si1295417edv.149.2023.03.13.19.53.22; Mon, 13 Mar 2023 19:53:22 -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=bccf7ByV; 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 6058D689CE5; Tue, 14 Mar 2023 04:53:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2083.outbound.protection.outlook.com [40.92.74.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3971268A1D8 for ; Tue, 14 Mar 2023 04:53:12 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eCKHcX17XizfAp6WCLnlT7JnJgIL+cb/9K+FNPRkJ1QbteNteBAxlQpDcyC+5BmvBgUXE8oxbiRvbd/cWyDNTp8/+KIOYCYK7bboINlmEtj7HnYSZq2VEwpXiBX1JVRISmQbL1JwlwNyk4cJ83lUqRDKtsmD/YweprDRISxHYiVAnOiPVT9rnG2mWvSjpQPR+4Yvzh3MQlHqLfX0dmazPOevf5U8SZK7kMN4D+uuuAbiyNHi3LHCiPzWWnSkSaky7fa6oL1v0xISPj+wryi1aJD/anbc6g6cbgb+TuK1LqJUo84Yt7YuX6XUdmdbwbG+f5CSfFn1/SrWYsCo0iPLRw== 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=N7TSSjWExGyXKE5eZ4jic2BjX0IF/ZRDJ7b1/Nn8mls=; b=NLKZ4angUTTXditIqrg/9tngHuVW5pQGIvr+NzaZumU/iF1UYIQBtUnN959JXREueggl+stjVDirTY/lKdA4aExbqbSsTOK7wkUXnVdQgL9Of4PetmXQuQuzQRQhClG5nKHKCR07mYLTl0CAI9/CvAniiXOO1pHWKLV7MQK1fqCT+FMLuMdUhIpDhoHpeSrFKT2YbQCSgT6qiAJltZwwJ43yCgaLnOEUz+NL1w3Ayr1UtxbRqUGwFMi7YfgoeM5dkebfteQ+EcwTrCad6dprQSLd4pcLsJ8QwDTHMgmJhIsoPmfy/cDxbigkmh3KhUvbWRciBQ396HNotnYtNImFIA== 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=N7TSSjWExGyXKE5eZ4jic2BjX0IF/ZRDJ7b1/Nn8mls=; b=bccf7ByVRs5NpUPCswhWyZmDRgSjF9pcJcIuFYr/N6iorK+dg69oo6yexyNJgfQ4JqXEBaQkHfcXrqNmJkBVUIlMTluoT+2QJNNb4PgL8qOjRC+NiTtKAPXfU8NTwaNjoXmu/tEapIasZH5lGOit4LQuqW9gp2pW74/Vn0+xXqNcNwVqegebaUnw3qcvRPb1kt+SovocMA4i+015KTfotR4rLryR7jek8RqMOOlWjOblQPkm5JutTEhy4kIvZqNtlKXc1ZIcfpoUde6brsTlGsj/CUkpNMXsPgqAZQCvqNo2xro50BcsGvR/93vId/J3DAaVW+Kpk8s6WEJ13wxK3A== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAVP250MB1026.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:2f5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Tue, 14 Mar 2023 02:53:10 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b%3]) with mapi id 15.20.6178.015; Tue, 14 Mar 2023 02:53:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Mar 2023 03:53:40 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [1qANOjQf/PG7NfHzfHOVHh5DFHCxFSwTLFu+RYPqLrA=] X-ClientProxiedBy: ZR0P278CA0171.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230314025340.1287587-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAVP250MB1026:EE_ X-MS-Office365-Filtering-Correlation-Id: 8de59fec-4463-487b-11d4-08db24373eda X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmqzsTrfB3bxuSktp+L/yXkiuFNS+M6tzJ8901RN8ej0VLg3iKQZrcF0FTd36xUHCSch5QxXBGYFkhuwBCpnSH4IcGiCKQ7E40knYSYFpbCQn9t0ei73JCTkrmZq6lf6pCjGq2V/6+w8hdUu3ibDeQ57dwY6Hz1N5CdImbZ89C+A16XeX1LbNOfJtWqtKYSjCvjKlyRh3vZwhjSlmt68U48MXhrG6urm1RyCBEZqE3QlK9iNsDreti3C1y6pZJ0qwCdQyy4W1JH9KD4SKeTf5fyIGGIjVgf/gd9L6S5cbCKv+YQUlbibWzb5gi5VD3tNbeb0qnuPlHNm4ma4EIxpjLo+vI7HfOwl42LvnPRbkIeA9YaCVOQ2fJiI5v4VshAL/7p+Z2uJHJyOvbBY4p9uQg3Hc55ADt2ID7SAnB/G5W29kepa4GHBy58NLGBkW8oefDMtA030R5zqCMj/zkPZwi8yjSgR4l+eBFPEGydtSjkFiv0sEc73V1ztT/SbpmK7liC2UID+iUpG2IVNLvvfYGREijfetaxWkzhwHM7+XSP8VAFacWQR07sE5kPJdsSP14znOqwMgJMpzbnf1f+Pwumr9wzfGFwT7CG0CbndwNmoDaCkzLkJHaqEJst5ZyFDQpDGPGTV7dNZH8JQUZOC+Ppvr5Pj9RdV2UwrfpVOlTBVdrXk54x8+fy5cFue57C2pp5+ba+OX2O0B5L++dW5w7xRrlS7fezZLmYCVqudlLFIrcjlfuy6Nhv5FSD/+LXWXq4= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PwbXDuF4Y9OTRwWcDt3in6/budn/Ov7j9xX0YSJL9kCHnQ4zfeCdn0QdpWXRirY7H5MWsXGFNs6Cg3qcMqy6HjsNHNsBNs8vAi04q0VLl+Rtk1tu4Mp2VrFdaZ/ZldOWeJ73ox9dzTyGfPq+h8gA0YPAIZe4zy0O8R8NH2oXyy6mA7NglwOoR4enlOrZccKochAJ78zgAhcMAyKJ1yZBGUMkJRt2Fo//In0TKxk54m3NXScP1Qyd4/Hnq/u4pYKGeQlEFMxxF+6yzkR8JuRmCt9DwqJB4gyTPYPLUJ++/GOZOx7/Hl9PyHgFv61dgUnuZX132V8JKYjHAE5xaPIJmyT8tMuA5sM9ZlYo9Ixmlg9XBMA/z+iLgsm8ar17buSh8zEdhHnQ+UevzzQZ4r4YcrXl2fI8iPZySEB2xDtSdOxA9E9gCwURU+u/4J7qBjLFjR8bMlnpRIEnRP37fbLx5rYsLFngCqZmZEQCO/C1z7N0ha3d1lCz29/BIuVSRsa//g6HAEcM4VJZElika9TV5sNIQIsCtfEQdVMr7LZxfz5dFfbRIsafR5+zZku/3AipQrO76V/2AudkjQ0jbb6rmW4ai9JCDAm5R78uAcWW7swayhi64827PvW9br2Tk/eqHgc9fqWZY6Xaem6TJO9ZRr3ONvMi/JGkNV0zla7FkkQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3Wun7Az+E17XyoeT4lG4I77N86gS8vYHDPb/VwoYISki3vZ1eUSdYqcKgayq4oDFw6zYmZGwY6Xa64GiacqhnCLkSm3v0UXvbn+cz7Q3Eva4/NRPqeeyb80WpMQyFX62h9LCZoq5a75m3hUCz+W9HwEMDBa/Oj3fECidKG8x5yhZRYafL9qIA4EJhCYWalSm+Ig/fv9vYH9BgxnBxYgpkM9SqfVoCOexCe7aQZoXkimcuGETdcuu7Isa5OdqdZCSv2qrqIoAyuJdZwaDtlKDMdvpHC9QwKV/xstLGib+c9juP+C455xG/2WIuqtgePo49OzREHWz/ZpiFVrYg2E935v/KH6sWxb/Nqt0kGOGqGAD+aKTRdMgg1pDN0hnwxbDp65qzf0nhtRWAKC4fb7mrKxyLJ1E8jUKXsJcJYWcU8J0raq0G7u9fyYNes9JJKgpVg4RE11qnMgy6JSpkKVr3Cj2aaE20QMII3y9VcgKmvGW2PsxpMa3dyafzsxizfVnKkZa0UzPtxKTlj0gkmDN/ia8IzX8aJiTFnMSbQftzEmbbc3mZDZ7tzCbpmJPCZa61Hd1UjSs5aYPAcenlyWI7kpIG/5BisY0BXY8lUUKny7g41k60KDp5il32We1So6js8ziY5OGfNkp6Pv2cKHLb/MXd2OHHRpKefcA6YCvECh7UqI6CQJmBOXrAIm5KOPv8OR6kWs5ntYbzg9ucZROr8D/Jjswj8/e/5peQg6FkW/NztQTwDWa7jeXMRogZU9pWIb/53aliGJ6+cJ3p13T9r7h6YDxNkxwuFJsMvnJYlty2c6+W8n4eBtPfywUHd0WkVrWUo+NcpzAGCAulj9XCVBYVTfvo+LupPouwLqSWDqe0fXtgMGJmyRL3dR6/qutugHPXzo+y9QRDeD8b9/s0YPRtfC27lN3hPLdqLv7BmYiwby7BqSEzh7GgflrsUD9+MftmtXfV+Uh6zQfgx4I9qGiI3kI3PTEM4IDJJK5JwVkUE8SsNfv75c9vVvdy6i/WUpXJ3kXS+WjFMaYEMbGKqBOt8cbdJXnFA8PTjwkDv3zlTXRFXyC0CBXr9FvpwoYGzRLjYbET9ox/90mlPQ55uD8UhZDKRVvo0kNY+lSeK5uBBYamhXUEAo5mCrgfiJ5wCTPGOS5YeVilRGLB2Xb+keE9Tm/Zj7FHSxgP8PKHgMi5ojSxuZAA0vxlvU9n/8u8aJZuVAGkDqIfxhzqyVIReri7tiURZXMZkFnjZnXB3I0pix1urPUwLvrmHVIOb+cmoXXHCCnkum+olqmS9GcbYbZ/wIuCKl6FsOYbZux6DBvXroSkXlTvnnQTYC89XqE X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8de59fec-4463-487b-11d4-08db24373eda X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2023 02:53:10.1523 (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: PAVP250MB1026 Subject: [FFmpeg-devel] [PATCH] avcodec/decode: Reset MMX state for receive_frame decoders, too 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: AUEEBTT2k1Ea FFmpeg's assembly code currently does not abide by the plattform-specific ABIs wrt its handling of the X86 MMX flag: Resetting the MMX state is deferred to avoid doing it multiple times instead of ensuring that the CPU is in floating point state upon return from any function. Furthermore, resetting said state is sometimes done generically, namely for all the decoders using the ordinary decode callback; yet this is not done for the decoders using the receive_frame API. This led to problems when MJPEG (and the MJPEG-based decoders) were switched to the receive_frame API in commit e9a2a8777317d91af658f774c68442ac4aa726ec, because ff_mjpeg_decode_sos() only resets the MMX state on success, not on failure. Such issues are probably still possible with SMVJPEG, which still uses the receive_frame API. See issue #10210. This commit therefore also resets the MMX state for the receive_frame API to avoid any more surprises of this sort. Signed-off-by: Andreas Rheinhardt --- Of course, I am in favour of actually abiding by the ABI, even if it would cost performance; notice that there are currently scenarios where emms_c() is called unnecessarily (it is called generically and therefore even for codecs that don't need it; furthermore, for some codecs it depends upon the CPU flags used whether MMX code is in use, so it is unnecessary for newer CPUs). libavcodec/decode.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index d1ba7f167f..22a0f8eb25 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -547,6 +547,7 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) if (codec->cb_type == FF_CODEC_CB_TYPE_RECEIVE_FRAME) { ret = codec->cb.receive_frame(avctx, frame); + emms_c(); } else ret = decode_simple_receive_frame(avctx, frame);