From patchwork Fri Sep 2 14:20:26 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: 34801 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp980198pzh; Fri, 2 Sep 2022 07:20:59 -0700 (PDT) X-Google-Smtp-Source: AA6agR7XluTpx8MBt7rgEi46Ke3SVYe6lYb9dYQCwbbiu2H90sXtLzDGbuY4lMPEnM5RPBxBqkwK X-Received: by 2002:a17:907:94c2:b0:73d:c534:1ac0 with SMTP id dn2-20020a17090794c200b0073dc5341ac0mr28255604ejc.461.1662128458935; Fri, 02 Sep 2022 07:20:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662128458; cv=none; d=google.com; s=arc-20160816; b=HRxectOKzCymveaKUVFIO3QIykVkRCL+tT5QQYkSh5/yHG8w0E8R3tv3K1OJqSDvAc pA/BPvp3ThQckIm9SLVLg9wP89aTcINZkbSTE6m3+sE8Mr5pvjKgUe9sAJcE0MqF5gc8 DJ6R4C1LunyL8IlsZ/TtP3XNF68IGC6Q4mkyP5M0z0eyfPqT6Ni/8Iw0GyKIHhy/zrl2 2V0RJ77rVh9wz63hOoWj8E55GT5umi6N6oHgB6qlCdzQtJ1HKPj/wKnPeESh4mbn6a7s Lc9zJjgtMRuf0f3pVV4BmnFfev7iyYYlMztiMFcieAoH+pheuvaPu0ISuZvU0zkQrqyy z0WQ== 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=8pT7VwcPsNGLGiGTZtusHGnPmKXMPhoXQQIW4kHoIKI=; b=Z/QDiijUsPDYAVou+n3ifnCK4wWHKA19GJzdnyio3/5fOcZ/tgKaDN4slLGdViI2Ni OSbc6wriEfNzrscI4VNuJ4vfECovxL0vtnvsMVh9JQFMGVy2xzJnkkprdPLx8HgiAMte ltSlpRBA0UbhrS+KKIRCJhrF9lsAp3rWhR+hkzUPslD8aI/khFYcdoQKt/aFjHjwHxAC SMCt05adt/lETF+9/KodiBqN1A6xuHSnW+XlSLdvDT9+3umzDIFLkvqsyp22yKTUFcMz SekG0FHWkLvsKZ7liY8VZ85/GRMyvz/K3/ABJQlPBS9cjtwMD+uG38VlWaKpVO5/2tOu o6Zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=TPeGqWwZ; 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 h3-20020a17090791c300b0073121897f6esi1523340ejz.222.2022.09.02.07.20.58; Fri, 02 Sep 2022 07:20:58 -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=TPeGqWwZ; 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 29DF768B903; Fri, 2 Sep 2022 17:20:55 +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 0351D68B7DF for ; Fri, 2 Sep 2022 17:20:48 +0300 (EEST) Received: by mail-ed1-f43.google.com with SMTP id b16so2912905edd.4 for ; Fri, 02 Sep 2022 07:20:48 -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:subject:date; bh=RJ22a1TJwOgAmBlx38kXCiKVQpyFF1c5eaptXTsrrmI=; b=TPeGqWwZ+Pq5T0sDYCpIUAOveW7okZKm3Ew8nINxYhKUts2jthc9utSR2hA1JXEzWj fpVuLYzWwlhgCAOFSti7MKaK1ciYAXka2QQ9ArpeOfSGEkb+AVI8UKCo+3RQANPuxoce egOhXXDbq7Qgk3gDcZknF572aRVWVWQDSa057tW7/bw47vh2281hvoBOU/3lUxuajq3D ds/CXHAXd3CGDYqYuSx+lE2EEEewGd2AIVcrXnt4HosaXlyldGxyAu6SfvJMs4DTcXFW KgD3Mkexid0RjuwQV+OGV6w2VkXz5WL44YQJKDBSk/9Xx8Zoz8+jUn76q6Sq557Cw/iD Ih1A== 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:subject:date; bh=RJ22a1TJwOgAmBlx38kXCiKVQpyFF1c5eaptXTsrrmI=; b=yafwrY3Q3DO4bHw9rLp7ge6dIBbqQnnkH/NLPH2gQrLsxHeA52VSyNiLw5OXceaok3 BtH0BWQ249hPHyOGx1Khu0IPygThQJ3VH/yaHRzp+kS3BnVYFlKjGbYCFtGi77iLTJ9r GNVPPr8+flEhMT6wTiFtuyNdJfOeRdN2f5fvR3/6pEYTcESQzqC3Mk++ka4gBrLdH/sA ZQPgXyvHt/2iCx+xz1xbtv5VfQHpnV+fXXEbZgNLRYk605lxsFNgb8Q0rT1egUsn+OZd PeuCkKFkGDGa2xkix1bSU+l5EwknPqCowtzJ4NpvCqMI08uQ0jnteLhAZ4mvb6YGfl8s Pp8A== X-Gm-Message-State: ACgBeo009lAv/+IFKOZFxZ1zQM/IBfcjueuLh1ALcaES9zQj3Bh3/sXI 1BXmo5qc+sQuvjzh55Q1LyoPte4269HHaw== X-Received: by 2002:aa7:ca46:0:b0:447:af0a:be68 with SMTP id j6-20020aa7ca46000000b00447af0abe68mr32784952edt.327.1662128448200; Fri, 02 Sep 2022 07:20:48 -0700 (PDT) Received: from localhost.localdomain (92-64-99-37.biz.kpn.net. [92.64.99.37]) by smtp.googlemail.com with ESMTPSA id d20-20020a17090694d400b007417c5dbfeesm1328814ejy.70.2022.09.02.07.20.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Sep 2022 07:20:47 -0700 (PDT) From: Martijn van Beurden To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Sep 2022 16:20:26 +0200 Message-Id: <20220902142028.261480-1-mvanb1@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: HEFnUI3aHpDe 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 Changes since v2: Rebased decoder part as it didn't apply anymore 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(-)