From patchwork Mon Aug 1 12:02:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martijn van Beurden X-Patchwork-Id: 34779 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp2456788pzb; Mon, 1 Aug 2022 05:03:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR5681TkCttyx3lT+kuFwjhbCuqrIRIZbDiu6qgDRQix40YeWli+EFmQv3lWt8+hraU4fpyo X-Received: by 2002:a17:907:7f21:b0:730:996d:c5fe with SMTP id qf33-20020a1709077f2100b00730996dc5femr522318ejc.8.1659355432106; Mon, 01 Aug 2022 05:03:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659355432; cv=none; d=google.com; s=arc-20160816; b=jM7YShtXxRL9fdSAdW1MSynAk4T2HdYHtYN9SC/mr8Itpis4K/MUoTDp8ksO/2bFcj w0PvPvWvKY86XEh3DxIXN2OC2ybrp/fMehas5NpipH/nwQX/vGWlFY9qSgd7o/VFUSzj rupb8DOHJBIQMuS71fNxw3EM17SwCVb6B8rzyBxQmcXIkZ8s6JDS7Ka6rD+V4+tzbxnL UsxU3p6PonRJsGiG53ZPZs0Gy4tgCIXQFYhC2BaCx/9czl/rS4S5deJoATnDBWIujcif TlgoYrrZpM2+FzTg/Bs9LRCygnPAzrqGHwWw3qh5jSzqzdhmLzQng53Ut4WJLK6LRNre pclw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=MRCbG8NBCKZ4JFRkcMSjaN0UmcEw05pKDiyL50vFBbk=; b=RXImGXUwzd8QqWheHdGVDs0rnAQTLazXkM54ekwism8il13iBAofqjqmXFEB/Yj0hF DPJRfArNrE6awvMTfWG6FLMdT6rpj1uEjrpK9P7Ql0m1H2IOzeokygMHi/TnN5FBHW2i Fr/oFBZBe8aa9TyDES3/ed6P7vmoM0Y2M66oXWinGI0VoANzjr3tcP2aVfhmpCNvCzJo 1FVKuxMGRtgGEaEu1w0+kq0X2R4VYbJI5nXNVJVLwDKx3xos7+4ID8IrUSR7O8ZoNpiq 20k74HX4dwcROh04QQKIqTgbBG/DVjrig2t09ORnWpaMXQJgQNOuGzS/jDlhuuQPpnPh jHpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=JDZgGmle; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f11-20020a056402328b00b0043d4a5ea78csi5615927eda.441.2022.08.01.05.03.42; Mon, 01 Aug 2022 05:03:52 -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=@gmail.com header.s=20210112 header.b=JDZgGmle; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1BFC468B3EC; Mon, 1 Aug 2022 15:03:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0A22568B7B3 for ; Mon, 1 Aug 2022 15:03:32 +0300 (EEST) Received: by mail-ed1-f43.google.com with SMTP id a89so13431181edf.5 for ; Mon, 01 Aug 2022 05:03:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=MU7x/RHD30491dBL0N3P98PpvF5TRVK2l6k0NvN67bI=; b=JDZgGmleTzLjxCfVTkjixweJeNPEecBBDU/7UAr7fgQF/xVQ3pUcRAngE2O9ltimXS y6gZasaWUuHqXcL+6pz1MX9eANaqPJAmkwKiT4hrCRgQsQ2fE9RioISX3O7EZBp6LIQr /YU//++Bl/TBjj/GzxXhBb36jnPLKD8F6ciKwAnvWTUur3tKyqqqVLOZIxRRFvfFxnth IIRxKjJgWrRsQ38IInASU0hxJBtISEnQX74t8XUJFo0jsckH5zfmO2MZUZraZEyuz5Ev fzCmYhDW7EHvn0wJIfBiGislYWQ7xXYMDP8rzG5FwgJqtWoce/xJNV/9vS2vQtiF0PlE YQaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=MU7x/RHD30491dBL0N3P98PpvF5TRVK2l6k0NvN67bI=; b=BkmBLKESBH9Kw9VOqgb9GZmPY3jj1VbNW6rVVl35FD1ZBla+Y0WzytVC56P+uaQZDP qTUn5iJQrcJBKqfnDJVyXWjsFUHbJW15oS12dRiNh15QeLIM4v/oPQu7A/xrICFt/JAl /yVQGEirlATyyAOW2Oq7ykaqr4C91iYIpxT4iEyd/xAY9PoXc8kVjUyM8sLlQN3iiu8V eqJd8n/j+WGk7gyXOIyHXf5gEpbgQG43yGjQAVGQgUJNmEFnhsjJhAQXIIk2A+BrlJ8O axlHvyCrW7TE2dIOOdwHHpdP1mBVg5ENWiEa2U4z/xWiovwxVAftu2wkvsUOaztd3A5M 1xzg== X-Gm-Message-State: ACgBeo3TH4S0EDPlOyLPPUauhcWz6l9mOo5lWOgxp7Hs1uO83acLW3gu uYAVN/A0p1BdRuX2khoBDg/JPK1raLkegQ== X-Received: by 2002:a50:fc85:0:b0:43d:2284:1ea5 with SMTP id f5-20020a50fc85000000b0043d22841ea5mr14335852edq.105.1659355411964; Mon, 01 Aug 2022 05:03:31 -0700 (PDT) Received: from localhost.localdomain (92-64-99-37.biz.kpn.net. [92.64.99.37]) by smtp.googlemail.com with ESMTPSA id v2-20020a170906292200b0072b51fb36f7sm5101845ejd.196.2022.08.01.05.03.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Aug 2022 05:03:30 -0700 (PDT) From: Martijn van Beurden To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Aug 2022 14:02:12 +0200 Message-Id: <20220801120214.665471-1-mvanb1@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 0/2] 32bps FLAC patches 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: Martijn van Beurden Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: u+DFJFRBsUfT Recently libFLAC gained the ability (not in any released version yet though) to create FLAC files containing 32-bit int PCM samples. To keep complexity reasonable, the choice was made to limit residuals to 32-bit integers, which the encoder must make sure of. In case the encoder cannot find any predictor of which the residuals fit this limit, it must default to using a verbatim subframe. Tests have shown that this does not happen often (<0.1% of subframes on a music corpus of various styles). See also discussion here: https://github.com/ietf-wg-cellar/flac-specification/pull/148 These two patches implement decoding and encoding following this format. The decoding patch has been send in for review earlier, but didn't get any feedback yet, so I'm sending it in again, unchanged, this time with a patch for encoding too. Changes since v1: fix copy-paste error in encoder, several invocations of lpc_encode_choose_datapath used wrong parameters, making FATE fail as compression was less than it should be Martijn van Beurden (2): libavcodec/flacdec: Implement decoding of 32 bit-per-sample PCM libavcodec/flacenc: Implement encoding of 32 bit-per-sample PCM libavcodec/flac.c | 4 +- libavcodec/flacdec.c | 248 ++++++++++++++++++-- libavcodec/flacenc.c | 499 ++++++++++++++++++++++++++++++++-------- libavcodec/get_bits.h | 12 + libavcodec/mathops.h | 9 + libavcodec/put_bits.h | 7 + libavcodec/put_golomb.h | 19 +- 7 files changed, 668 insertions(+), 130 deletions(-)