LAME: different compilers producing significantly different bitstreams, Split from “LAME 3.99 is out” |
LAME: different compilers producing significantly different bitstreams, Split from “LAME 3.99 is out” |
Jan 28 2012, 15:16
Post
#1
|
|
![]() Group: Members Posts: 1303 Joined: 14-September 05 From: Helsinki, Finland Member No.: 24472 |
The new 32-bit lame.exe seems to work fine for me on XP Pro SP3 (I have an AMD Phenom II CPU that supports SSE2), but it produces entirely different output than LAME 3.99.3 from the previous "main" bundle. I did not expect that. As far as I can see, the change log does not indicate any further "quality tweaking".
In some cases 3.99.4 seems to produce significantly smaller VBR bitrates than 3.99.3. I tested the settings -V1, -V5 and -V8. When the source tracks were quiet and uncompressed (classical, ambient, etc) the bit rates were 3-12% smaller than before. When the source tracks were loud and compressed (hard rock, metal, etc) the bitrates were about the same as before (or just very slightly smaller). This post has been edited by Alex B: Jan 28 2012, 16:08 -------------------- http://listening-tests.freetzi.com
|
|
|
|
![]() |
Jan 31 2012, 17:58
Post
#2
|
|
|
Group: Members Posts: 2 Joined: 4-November 11 Member No.: 94959 |
Is it possible for an executable from one compiler to produce a difference in quality or sound than another executable from different compiler? It seems that a difference in bitrate is possible. I am curious. I am no programmer btw.
This post has been edited by Pretentiousman: Jan 31 2012, 18:00 -------------------- I feel music enriches the soul.
|
|
|
|
Jan 31 2012, 18:12
Post
#3
|
|
|
Group: Members Posts: 318 Joined: 26-November 04 Member No.: 18345 |
Is it possible for an executable from one compiler to produce a difference in quality or sound than another executable from different compiler? It seems that a difference in bitrate is possible. Which, IMO, is no less concerning than if they produced differences in sound quality. The short answer is that I don't believe anyone has claimed to hear any verifiable discernable differences and that is all that matters. It's not all that matters. The whole point of a lossy codec using VBR is to produce the lowest possible bitrate at a given SQ level. Perhaps it's naïve, but I would expect all compiles on all platforms to produce the same encoding results. This post has been edited by JJZolx: Jan 31 2012, 18:19 |
|
|
|
Jan 31 2012, 18:38
Post
#4
|
|
![]() Group: Developer Posts: 2986 Joined: 2-December 07 Member No.: 49183 |
|
|
|
|
Jan 31 2012, 21:52
Post
#5
|
|
|
Group: Members Posts: 37 Joined: 16-November 11 Member No.: 95199 |
Perhaps it's naïve, but I would expect all compiles on all platforms to produce the same encoding results. LAME uses floating point calculations, so it is highly unlikely. Please... Given the same CPU, floating point calculations are quite deterministic. The whole story smells like LAME is too careless about floating overflows and underflows. |
|
|
|
Jan 31 2012, 23:01
Post
#6
|
|
|
Group: Developer Posts: 618 Joined: 6-December 08 From: Erlangen Germany Member No.: 64012 |
Please... Given the same CPU, floating point calculations are quite deterministic. I wish... well, yes, maybe the calculations are deterministic, but the order of calculations (which can vary between compilers according to optimization algorithms) can have a significant influence on the result. But of course the observations discussed here are extreme. Chris -------------------- If I don't reply to your reply, it means I agree with you.
|
|
|
|
Jan 31 2012, 23:36
Post
#7
|
|
|
Group: Members Posts: 37 Joined: 16-November 11 Member No.: 95199 |
Order is defined by precedence and compiler rarely dares to go against left-to-right as specified by the C standard.
I still bet on undeflows of the type that 3.99.4 was trying to paper over with max(x, epsilon). This type of bugfixing is dangerous. This post has been edited by db1989: Feb 7 2012, 14:43
Reason for edit: removing unnecessary full quote of above post
|
|
|
|
Feb 1 2012, 00:44
Post
#8
|
|
|
Group: Members Posts: 4135 Joined: 2-September 02 Member No.: 3264 |
Perhaps it's naïve, but I would expect all compiles on all platforms to produce the same encoding results. LAME uses floating point calculations, so it is highly unlikely. Please... Given the same CPU, floating point calculations are quite deterministic. Given the same CPU and the same binary, they usually are. But across different platforms or different compilers, they are not. Order is defined by precedence and compiler rarely dares to go against left-to-right as specified by the C standard. Its not that simple: http://msdn.microsoft.com/en-us/library/aa...7(v=vs.71).aspx c specifies operator precedence, but that does not strictly define order, only how a statement is parsed. Compilers still (often quite aggressively) reorder floating point calculations depending on the optimization level and compiler flags. You can of course disable this, but the performance penalty can be quite large, particularly with vector extensions. When talking about different instructions sets, pretty much all bets are off. Operations can be done at different precision and in different order. |
|
|
|
Alex B LAME: different compilers producing significantly different bitstreams Jan 28 2012, 15:16
halb27 With my test set 3.99.4 produces an average bitrat... Jan 28 2012, 22:44
Alex B I uploaded a sample: http://www.hydrogenaudio.org/... Jan 28 2012, 23:31
JJZolx QUOTE (Alex B @ Jan 28 2012, 15:31) In so... Jan 29 2012, 00:18
Alex B QUOTE (JJZolx @ Jan 29 2012, 01:18) Some ... Jan 29 2012, 00:43
lvqcl Different compilers/options IMHO. Jan 28 2012, 23:58
Alex B At least John did not change the announced compile... Jan 29 2012, 00:12
lvqcl From RareWares main page: "Compiles are now M... Jan 29 2012, 00:23
bbrabant QUOTE (lvqcl @ Jan 29 2012, 02:23) Also, ... Jan 29 2012, 00:40
JJZolx Ok, then back to lvqcl: Why would a different comp... Jan 29 2012, 00:53
Alex B QUOTE (JJZolx @ Jan 29 2012, 01:53) Why w... Jan 29 2012, 01:06
C.R.Helmrich Indeed. How was the following done, if I may ask?
... Jan 29 2012, 02:10
lvqcl It seems that the relevant changes are somewhere i... Jan 29 2012, 12:00
JJZolx QUOTE (lvqcl @ Jan 29 2012, 04:00) It see... Jan 29 2012, 23:02
john33 Sorry, guys, there was a compiler option error on ... Jan 30 2012, 12:42
halb27 Everything's fine now. Exactly the same averag... Jan 30 2012, 14:54
john33 QUOTE (halb27 @ Jan 30 2012, 13:54) Every... Jan 30 2012, 15:11
godrick Does the nature of the compiler error require user... Jan 30 2012, 15:56
john33 QUOTE (godrick @ Jan 30 2012, 14:56) Does... Jan 30 2012, 16:01
Alex B Thanks John.
The new 32-bit exe compile seems to ... Jan 30 2012, 17:16
john33 QUOTE (Alex B @ Jan 30 2012, 16:16) Thank... Jan 30 2012, 18:01
robert QUOTE (Alex B @ Jan 30 2012, 17:16) Thank... Jan 30 2012, 18:16
Alex B I don't think libsndfile is involved. I used f... Jan 30 2012, 18:36
mixminus1 I can confirm AlexB's findings vis a vis the b... Jan 30 2012, 21:49
DigitalMan Assume 64 bit compile is unaffected? Not at machi... Jan 31 2012, 00:17
mixminus1 No, latest 64-bit version of 3.99.4 (20120125) fro... Jan 31 2012, 00:47
john33 QUOTE (mixminus1 @ Jan 30 2012, 23:47) No... Jan 31 2012, 09:35
john33 OK, done some testing comparing the Rarewares 32 b... Jan 31 2012, 17:43
john33 QUOTE (Pretentiousman @ Jan 31 2012, 16:5... Jan 31 2012, 18:12
nu774 CODEmain()
{
volatile double x = 53, y = ... Feb 1 2012, 02:53
apodtele QUOTE (nu774 @ Jan 31 2012, 20:53) 54 52 ... Feb 1 2012, 04:23
nu774 QUOTE (apodtele @ Feb 1 2012, 12:23) You ... Feb 1 2012, 04:45

nu774 QUOTE (nu774 @ Feb 1 2012, 12:45) QUOTE (... Feb 1 2012, 11:42
timcupery QUOTE (apodtele @ Jan 31 2012, 22:23) We ... Feb 2 2012, 03:56
lvqcl 2 seconds of Liszt.wav (LAME -V1):
original track... Jan 31 2012, 18:05
JJZolx But to what degree in terms of overall bitrate? Th... Jan 31 2012, 18:45
Alex B Here's how EncSpot Pro sees the differences in... Jan 31 2012, 18:58
JJZolx Here's some more data at different VBR quality... Feb 1 2012, 00:21
lvqcl Test signal: sine (-12 dBFS) + white noise (-N dBF... Feb 2 2012, 16:56
halb27 Looks like your MSVC10 compile behaves more reason... Feb 2 2012, 17:46
lvqcl Spectrograms of sine+noise (3 seconds from an mp3 ... Feb 2 2012, 18:13
apodtele QUOTE (lvqcl @ Feb 2 2012, 12:13) Spectro... Feb 2 2012, 19:53
halb27 Looks like it's the decision process for decid... Feb 2 2012, 20:27
john33 Just for the record, Robert is looking at this iss... Feb 2 2012, 20:35
lvqcl QUOTE (john33 @ Feb 2 2012, 23:35) Just f... Feb 2 2012, 21:10
john33 QUOTE (lvqcl @ Feb 2 2012, 20:10) ...
It... Feb 2 2012, 23:09
Destroid From the sidelines, I found this discussion of the... Feb 5 2012, 11:49
antman Agreed Destroid. This has been an interesting rea... Feb 7 2012, 04:08
JJZolx I'm surprised this thread wasn't split a l... Feb 7 2012, 04:28
DARcode The "minutiae" in this thread are actual... Feb 7 2012, 14:15
john33 Robert is currently working on a solution that wou... Feb 7 2012, 14:27
apodtele QUOTE (john33 @ Feb 7 2012, 08:27) Robert... Feb 7 2012, 16:24
john33 QUOTE (apodtele @ Feb 7 2012, 15:24) This... Feb 7 2012, 17:21
robert QUOTE (apodtele @ Feb 7 2012, 16:24) This... Feb 7 2012, 17:38
apodtele QUOTE (robert @ Feb 7 2012, 11:38) The co... Feb 7 2012, 21:48
john33 There is a test compile (32 bit) now available at:... Feb 7 2012, 17:13
JJZolx Here's that set of files again, encoded using ... Feb 8 2012, 00:24
halb27 I checked Alex B's Liszt sample, and 3.99.5 be... Feb 9 2012, 10:56
Kilu This thread was an interesting read.
So just to b... Feb 10 2012, 17:46
john33 QUOTE (Kilu @ Feb 10 2012, 16:46) This th... Feb 10 2012, 18:27
antman Kilu, in summary, the encoding speed differences w... Feb 11 2012, 02:37
Kilu Alrighty, thanks guys.
I think I'll wait for t... Feb 11 2012, 03:25
john33 3.99.5 test 2 on the link below fixes the decoding... Feb 13 2012, 10:21
psycho 3.99.5 is out, compiles anyone? Feb 15 2012, 21:54
john33 QUOTE (psycho @ Feb 15 2012, 20:54) 3.99.... Feb 15 2012, 23:28
lvqcl There's still no mention of 3.99.5 at http://s... Feb 15 2012, 22:06![]() ![]() |
|
Lo-Fi Version | Time is now: 25th May 2013 - 03:05 |