cuetools.net icon indicating copy to clipboard operation
cuetools.net copied to clipboard

CUETools.Flake --vbr encodes wrong

Open H2Swine opened this issue 3 years ago • 3 comments

Running the encoder with --vbr 1 to --vbr 4 sometimes yields lossy results. Examples given at https://hydrogenaud.io/index.php/topic,123016 - with a file as well.

H2Swine avatar Sep 23 '22 20:09 H2Swine

@H2Swine Thanks for reporting this issue also here at the CUETools github repo. The issue can be reproduced using the given example from https://hydrogenaud.io/index.php/topic,123016.msg1016175.html#msg1016175 the following way:

CUETools.Flake.exe -q -8 --verify --vbr 0 "foo.flac" -o "foo_vbr_0.flac"
CUETools.Flake.exe -q -8 --verify --vbr 1 "foo.flac" -o "foo_vbr_1.flac"
CUETools.Flake.exe -q -8 --verify --vbr 2 "foo.flac" -o "foo_vbr_2.flac"
CUETools.Flake.exe -q -8 --verify --vbr 3 "foo.flac" -o "foo_vbr_3.flac"
CUETools.Flake.exe -q -8 --verify --vbr 4 "foo.flac" -o "foo_vbr_4.flac"

metaflac --show-md5sum *.flac
foo_vbr_0.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_1.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_2.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_3.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_4.flac:7293d3b213a1281d6ab96ee800aade56

flac -t foo_vbr_*.flac

flac 1.4.1
Copyright (C) 2000-2009  Josh Coalson, 2011-2022  Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

foo_vbr_0.flac: ok
foo_vbr_1.flac: ERROR, MD5 signature mismatch
foo_vbr_2.flac: ERROR, MD5 signature mismatch
foo_vbr_3.flac: ERROR, MD5 signature mismatch
foo_vbr_4.flac: ERROR, MD5 signature mismatch

c72578 avatar Sep 24 '22 06:09 c72578

Tests with older versions of CUETools show the following. The issue is not immediately obvious down to CUETools 2.0.8. In version 2.0.7 and earlier, an Exception is thrown during encoding of the affected example file:

  • CUETools 2.0.8
CUETools.Flake.exe -q -8 --verify -v 0 "foo.flac" -o "foo_vbr_0_2.0.8.flac"
CUETools.Flake.exe -q -8 --verify -v 1 "foo.flac" -o "foo_vbr_1_2.0.8.flac"
CUETools.Flake.exe -q -8 --verify -v 2 "foo.flac" -o "foo_vbr_2_2.0.8.flac"
CUETools.Flake.exe -q -8 --verify -v 3 "foo.flac" -o "foo_vbr_3_2.0.8.flac"
CUETools.Flake.exe -q -8 --verify -v 4 "foo.flac" -o "foo_vbr_4_2.0.8.flac"

metaflac --show-md5sum foo_vbr_*2.0.8.flac
foo_vbr_0_2.0.8.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_1_2.0.8.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_2_2.0.8.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_3_2.0.8.flac:7293d3b213a1281d6ab96ee800aade56
foo_vbr_4_2.0.8.flac:7293d3b213a1281d6ab96ee800aade56

flac -t foo_vbr_*2.0.8.flac

flac 1.4.1
Copyright (C) 2000-2009  Josh Coalson, 2011-2022  Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

foo_vbr_0_2.0.8.flac: ok
foo_vbr_1_2.0.8.flac: ERROR, MD5 signature mismatch
foo_vbr_2_2.0.8.flac: ERROR, MD5 signature mismatch
foo_vbr_3_2.0.8.flac: ERROR, MD5 signature mismatch
foo_vbr_4_2.0.8.flac: ERROR, MD5 signature mismatch
  • CUETools 2.0.7
CUETools.Flake.exe -q -8 --verify -v 0 "foo.flac" -o "foo_vbr_0_2.0.7.flac"

CUETools.Flake.exe -q -8 --verify -v 1 "foo.flac" -o "foo_vbr_1_2.0.7.flac"

Unhandled Exception: System.Exception: validation failed!
   at CUETools.Codecs.FLAKE.FlakeWriter.output_frame()
   at CUETools.Codecs.FLAKE.FlakeWriter.Write(AudioBuffer buff)
   at CUETools.FlakeExe.Program.Main(String[] args)

CUETools.Flake.exe -q -8 --verify -v 2 "foo.flac" -o "foo_vbr_2_2.0.7.flac"

Unhandled Exception: System.Exception: validation failed!
   at CUETools.Codecs.FLAKE.FlakeWriter.output_frame()
   at CUETools.Codecs.FLAKE.FlakeWriter.Write(AudioBuffer buff)
   at CUETools.FlakeExe.Program.Main(String[] args)

CUETools.Flake.exe -q -8 --verify -v 3 "foo.flac" -o "foo_vbr_3_2.0.7.flac"

Unhandled Exception: System.Exception: validation failed!
   at CUETools.Codecs.FLAKE.FlakeWriter.output_frame()
   at CUETools.Codecs.FLAKE.FlakeWriter.Write(AudioBuffer buff)
   at CUETools.FlakeExe.Program.Main(String[] args)

CUETools.Flake.exe -q -8 --verify -v 4 "foo.flac" -o "foo_vbr_4_2.0.7.flac"

Unhandled Exception: System.Exception: validation failed!
   at CUETools.Codecs.FLAKE.FlakeWriter.output_frame()
   at CUETools.Codecs.FLAKE.FlakeWriter.Write(AudioBuffer buff)
   at CUETools.FlakeExe.Program.Main(String[] args)

metaflac --show-md5sum foo_vbr_0_2.0.7.flac
foo_vbr_0_2.0.7.flac:7293d3b213a1281d6ab96ee800aade56

flac -t foo_vbr_0_2.0.7.flac

flac 1.4.1
Copyright (C) 2000-2009  Josh Coalson, 2011-2022  Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

foo_vbr_0_2.0.7.flac: ok

c72578 avatar Sep 24 '22 07:09 c72578

How does it verify, really? Does it actually decode? If so, would it be possible then to reverse it and get the PCM back?

H2Swine avatar Sep 25 '22 16:09 H2Swine