{"id":2227373,"url":"http://patchwork.ozlabs.org/api/covers/2227373/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20260423-audio-v1-0-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260423-audio-v1-0-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp>","list_archive_url":null,"date":"2026-04-23T13:55:20","name":"[0/3] audio: Fix unsigned PCM conversion edge cases","submitter":{"id":90980,"url":"http://patchwork.ozlabs.org/api/people/90980/?format=json","name":"Akihiko Odaki","email":"odaki@rsg.ci.i.u-tokyo.ac.jp"},"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20260423-audio-v1-0-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp/mbox/","series":[{"id":501200,"url":"http://patchwork.ozlabs.org/api/series/501200/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501200","date":"2026-04-23T13:55:20","name":"audio: Fix unsigned PCM conversion edge cases","version":1,"mbox":"http://patchwork.ozlabs.org/series/501200/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2227373/comments/","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" header.d=rsg.ci.i.u-tokyo.ac.jp\n header.i=@rsg.ci.i.u-tokyo.ac.jp header.a=rsa-sha256 header.s=rs20250326\n header.b=c+XAhzex;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1d1w3vRmz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 23:57:08 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFuY3-0005eR-Ui; Thu, 23 Apr 2026 09:56:55 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wFuX6-0005Wg-G3\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 09:56:06 -0400","from www3579.sakura.ne.jp ([49.212.243.89])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wFuWu-0000cB-IQ\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 09:55:49 -0400","from h205.csg.ci.i.u-tokyo.ac.jp (h205.csg.ci.i.u-tokyo.ac.jp\n [133.11.54.205]) (authenticated bits=0)\n by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 63NDtV0L080520\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);\n Thu, 23 Apr 2026 22:55:32 +0900 (JST)\n (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp)"],"DKIM-Signature":"a=rsa-sha256; bh=IXLPhMVbP01PLG2+dRp/eAaFEn9u1APxip+wQX8V2lE=;\n c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp;\n h=From:Message-Id:To:Subject:Date;\n s=rs20250326; t=1776952532; v=1;\n b=c+XAhzexG0VY45iQOL9rIj0nnrU60dHLW9EpezDRIWC78onY2WUPhzr+NJTEikLJ\n u8QbO4JRjlstXAuF9U3lnzxG4OUgwpTfzXvfmcBsNz0eP2S6Leje7GTVUCcuc2oS\n 3S45/HEcAHjwF39HAm/9AGtexzh+qq24fLpsJunjtcHJj5SrTR/vxkDeFazwfgnv\n H8u3QroCI/7J3mMAFonKUr0eo7YJpyxm5GN6P5T+GPzHrtfpl8VoopQ/fST9/WWh\n C2s2G51AxFomWNWWRnKDM7cJV+S/CfoKsrAF+mX0bcpLI2AI2NUsnMsbD0dqPYpR\n KfXz4GIwL4IOczqcukAa+A==","From":"Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>","Subject":"[PATCH 0/3] audio: Fix unsigned PCM conversion edge cases","Date":"Thu, 23 Apr 2026 22:55:20 +0900","Message-Id":"<20260423-audio-v1-0-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","X-B4-Tracking":"v=1; b=H4sIAAAAAAAC/yXMQQ5AMBSE4as0b61JW42Eq4hFMXgWSKsiEXdXL\n L/kn7kowDMCVeIij4MDr0uCzgR1k1tGSO6TyShTKGty6WLPq7SFhUapcmVBqd08Bj6/n7r5HWI\n 7o9vfMd33A+6g6wRpAAAA","X-Change-ID":"20260423-audio-464e1e90304e","To":"qemu-devel@nongnu.org","Cc":"Gerd Hoffmann <kraxel@redhat.com>,\n =?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>","X-Mailer":"b4 0.16-dev-16047","Received-SPF":"pass client-ip=49.212.243.89;\n envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp","X-Spam_score_int":"-16","X-Spam_score":"-1.7","X-Spam_bar":"-","X-Spam_report":"(-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,\n DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"Building QEMU with recent Clang from Xcode reports warnings in the\nunsigned 32-bit PCM clipping helper. The warning points at a real\nconversion issue: the current code mixes unsigned arithmetic,\nfloating-point rounding, and the wrong midpoint for unsigned PCM\nsamples.\n\nUnsigned PCM uses a bias at the upper middle value of the sample range,\nsuch as 0x80, 0x8000, or 0x80000000. The existing HALF value names the\nlower middle value instead. Around that boundary, the conversion code\ncan also wrap before promotion, and the uint32_t clipping helper can\ncompute a value one past the representable range.\n\nFix the unsigned conversion paths by:\n\n- converting before subtracting the bias, so samples below the midpoint\n  do not wrap;\n- clamping the floating-point clipping result to the integer endpoint;\n- replacing HALF with an explicit BIAS value matching unsigned PCM.\n\nSigned-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>\n---\nAkihiko Odaki (3):\n      audio: Avoid unsigned sample wraparound\n      audio: Clamp unsigned sample conversion\n      audio: Use unsigned PCM bias\n\n audio/mixeng_template.h | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)\n---\nbase-commit: 98b060da3a4f92b2a994ead5b16a87e783baf77c\nchange-id: 20260423-audio-464e1e90304e\n\nBest regards,\n--  \nAkihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>"}