mbox series

[FFmpeg-devel,v2,0/2] 32bps FLAC patches

Message ID 20220801120214.665471-1-mvanb1@gmail.com
Headers show
Series 32bps FLAC patches | expand

Message

Martijn van Beurden Aug. 1, 2022, 12:02 p.m. UTC
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(-)

Comments

Martijn van Beurden Aug. 15, 2022, 8:39 p.m. UTC | #1
Op ma 1 aug. 2022 om 14:03 schreef Martijn van Beurden <mvanb1@gmail.com>:

> 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(-)
>

I'd like to bring these patches to the attention of the mailing list again.