Help - Search - Members - Calendar
Full Version: recommended builds not encoding equal?
Hydrogenaudio Forums > Lossy Audio Compression > Ogg Vorbis > Ogg Vorbis - General
TobWen
Hi there,

I've just tried the recommended builds.

I've converted some of my own songs using these encoders (-q6):
1. Vorbis Tools (includes oggenc 1.0.1) Xiph.Org's Vorbis 1.1 (MSVC compile)
2. oggenc23.exe Xiph.Org's Vorbis 1.1 (ICL 7.1 compile for P4) With impulse_trigger_profile
3. OggDropXPd Xiph.Org's Vorbis 1.1 (ICL Compile for P4)

Then I've compared the OGGs with a byte-comparer.
Normally, there shouldn't be much differences because they're using "Xiph.Org's Vorbis 1.1".
But this is wrong :-((

1. vs. 2. => more than 7.000.000 different bytes
1. vs. 3. => more than 7.000.000 different bytes
2. vs. 3. => more than 7.000.000 different bytes

That means, the tested encoders doesn't encode equal :-(

I've encoded my WAV with "1." again. Target named "4.".
1. vs. 4. => 10.506 differnt bytes ... seems to encode equal!

Does anybody understand, what I mean?

Best,
Tobias
QuantumKnot
The reason that the encoded files don't match byte-for-byte is because they were compiled using different compilers. ICL tends to use more optimisations than MSVC, hence they tend to produce different files. Whether these differences are audible is an interesting question, though the usual answer is, no, they are not audible. smile.gif

The second source of difference is perhaps the serial number in the vorbis comments. Each time you encode a file, it generates a random serial number. Also, some encoders generate a 4 digit serial while others generate an 8 digit (??) serial. The best way is to decode them to wav and compare the wav. If they are from the same compiler, then you'd expect the encoded files to be quite similar....I hope smile.gif
TobWen
QUOTE
ICL tends to use more optimisations than MSVC, hence they tend to produce different files.

Wow, I did not know that compilers have any effect on the result.
But I agree: The differences SHOULD not be audible.

QUOTE
he second source of difference is perhaps the serial number in the vorbis comments.

Yep, I thought the same!
cabbagerat
Try encoding a file with each of the different Vorbis encoders, then decode it back to .wav. Open the set of waves in a sound editor, make sure they are time synced then subtract them. The frequency and amplitude of the resulting residue should give you a pretty good idea about whether the differences will be audible. I wrote some code to do this while wondering if there was an audible difference with MMX enabled in the Lame compile. I could dig it out for you if you want.

The reason for the differences is the relative inaccuracy of floating point calculations on a computer. If you change the order of floating point operations to one that is mathematically equivalent, you might get a slightyly different answer. For example (2/3)*(1/6) might not come out bit identical to 2/18. The reason that the compiler matters is different compilers use different orders of operations - some even take technically non standard compliant shortcuts (like GCC with -ffast-math enabled).


On a related note - for some reason I thought oggenc was fixed point only. Maybe somebody who has looked inside can tell me if it is.
TobWen
subtraction-methode only works, if the two files have EXACTLY the same gain.
kjoonlee
QUOTE(cabbagerat @ Dec 31 2004, 02:00 AM)
On a related note - for some reason I thought oggenc was fixed point only. Maybe somebody who has looked inside can tell me if it is.
*

I thought Vorbis was floating point only. There was some talk on the Vorbis-dev or Vorbis mailing list about creating a fixed point encoder, so I guess oggenc is floating point at the moment.
cabbagerat
QUOTE(kjoonlee @ Dec 30 2004, 06:38 PM)
QUOTE(cabbagerat @ Dec 31 2004, 02:00 AM)
On a related note - for some reason I thought oggenc was fixed point only. Maybe somebody who has looked inside can tell me if it is.
*

I thought Vorbis was floating point only. There was some talk on the Vorbis-dev or Vorbis mailing list about creating a fixed point encoder, so I guess oggenc is floating point at the moment.
*

Thanks - don't know where I got that idea from.
QUOTE
subtraction-methode only works, if the two files have EXACTLY the same gain.

True enough. You could either normalize the volumes before comparing, or consider that if the gains are different by more than 1dB then you have proven the encoder versions are audibly different without comparison. smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.