Help - Search - Members - Calendar
Full Version: Optimized Versions of OGGENC RC3
Hydrogenaudio Forums > Lossy Audio Compression > Ogg Vorbis > Ogg Vorbis - General
Alex
Ive uploaded a couple of versions of OggEnc compiled with Intel Compiler 5.

One Named fast should perform about 20% faster than the version available from www.vorbis.com.

The second has some compiler options changed that should increase the internal precision, values should be rounded rather than trucated, in theory this should improve the quality but in reality it may well be less than 0.01% better.
This version however is about 40% slower than the version available from www.vorbis.com.

I would be interested to know anyones results from this, if there is any improvement.

Update:
You can get the files from here now
http://www.inf.ufpr.br/~rja00/
thanks very much Roberto.

Im also trying to enable control over the chanel coupling to experiment with lossy coupling at higher bitrates, I have not been able to enable this yet however.
rjamorim
Humm... no good for me.

"We're sorry, but this page is currently unavailable for viewing. "

Geocities doesn't seem to like me. (It's the second time this day I'm gifted with this message)
Alex
If you go to http://www.geocities.com/alexwolensuk/ first
then add OGGencI.zip too the end, it should hopefully work.
Ill update the page soon to link too the file, But Id be happy if you would like to put these files on youre web site.
layer3maniac
Yeah, I get the same error. I got it on the one with the PsyTEL registration dialog too.
layer3maniac
OK, that worked for me. Geoshitties is such a pain...
rjamorim
QUOTE
Originally posted by Alex
If you go to http://www.geocities.com/alexwolensuk/ first
then add OGGencI.zip too the end, it should hopefully work.
Ill update the page soon to link too the file, But Id be happy if you would like to put these files on youre web site.


I would be more than happy to host them! smile.gif

But that trick you mentioned didn't work for me either. Could you please send the files to rjamorim at yahoo dot com?

Thanks a lot!

Regards;

Roberto.
Alex
Sending an Email now, Ill update the other link too youre web site, geocities do indeed suck.

I did some testing to compare the encoders using -q 6.

The encoder from www.vorbis.com and the faster Intel compiled version produce identical files according to EAQUAL.

The increased precision version produced files virtually identical a very very small amount better according to EAQUAL.
To be honest the diffrence isnt audible, the files compiled with this version also seem to be about 1kbit/s larger.

Im not having much luck enabling channel coupling control, I havent located it in the source yet. Anyone have any ideas?
Speek
Speed on my Celeron 500:
RC3 1.74x
fast 2.07x
quality 1.63x

I also tested quality with EAQUAL, but only on one test file (thewayitis.wav from ff123's samples). The ODG is:
RC3 -0.2838
fast -0.2838
quality -0.2958

So according to EAQUAL the quality of this sample is a little worse with your quality aimed encoder.

The extra speed of your fast encoder is very welcome though smile.gif
Alex
I have done very little testing of these compiles, fast should function as normal ogg rc3 enocoder. The quality one is just an experiment with alternate compiler settings I will experiment further with this.
Any quality gains from compiler settings arent likely to be very big. Im quite interested on the effects this will have on lower bitrates especially, I think there may be some improvements there hopefully.
rjamorim
The files are already at my page.

I'd like to take the opportunity to invine anyone with some cool pieces of software, that have no _decent_ place to host them (translating: have Geocities, Tripod, Angelfire... as host) to drop me a mail.

rjamorim at yahoo dot com

If it's not too big (I still have ~5Mb of space), I can arrange some place for your binaries.

The good part is that we'll have a central dowloading point for our community needs. wink.gif

Regards;

Roberto.
Alex
Thanks a lot Roberto its very helpfull to all of us.
Im still not sure if the Quality version offers any improved quality. If it does its probably only 0.001% Im going to do some extra testing, but It looks like the faster version is the only one thats really usefull. I`ll see what I can do over the next couple of days.

There is an encoder frontend that ive been working on its still very rough now. Hopefully Ill have a version worth releasing within a few weeks. It will require the Microsoft.Net runtime however, Hopefully they will release the final version of that soon Im currently using beta 2.

thanks again Roberto,
Alex
rjamorim
You're welcome! smile.gif
ilikedirtthe2nd
hi alex,

could you compile a fast ogg vorbis dll for cdex? maybe with the quality level modification (from john33, i think). it may be very usefull...

thanks in advance
ilikedirt
Alex
Im attempting to do that, having a few problems though.
I dont appear too have the full source to go with the altered source from Roberto`s web site. I Should figure it out shortly.
john33
Alex
If you have a problem with it, let me know.The original source came from the CDex CVS. All the files for the DLL should be what is at Roberto's site. Otherwise, it just uses the regular libraries.

john33
Alex
Thanks for the help, there were a couple of files that I did not have(bitbuffer.c for one) but they are indeed present in the CDex source. Should hopefully have a dll compiled shortly.
john33
Alex
Bitbuffer won't do it!! It was replaced by bitrate.c as part of the RC3 launch. It is a straight replacement.

john33
Alex
Thanks, Ive havent used bitbuffer.c now.
I really have to rush, Ive emailed the dll to you(hope you dont mind).
I tested it on a single file and it performed as expected, approx 20% faster. Id appreciate it if you could test in and send it too Roberto if there arent any problems, you might want to attach youre readme too.

Ive got to go
thanks a lot
Alex
john33
Checked out fine, Alex. I have uploaded it to Roberto and added the text file. Good team work, eh?

john33
ilikedirtthe2nd
great work guys! may the speed be with you! ;-)
rjamorim
Uploaded!
Alex
Thanks a lot John and Roberto.

Sorry I had to rush away yesterday(damned job interviews).

Anyway Ive got another update for the oggenc files with additional optimization for Pentium 4 processors, I dont know if anyone has one, I havent been able to test it but performance should be increased.
Ive also added several experimental compiles with diffrent lossy/lossless coupling settings.
In total there are 5 oggenc.exe`s which Ive compressed into a cab file to save space(its only 203kb), Ive add a readme so hopefully everything should be clear.
I`m emailing too Roberto now.

I dont think there will be any more updates for a while, at least not until theres a reason to do so.

Thanks again
Alex
Speek
Alex' fast compile should be made official!
PatchWorKs
I think a 100% 32-bit assembly (i386) version is needed for both encoder and decoder...

...it could be a pre-hardware optimization :eek:
Alex
It would certainly be nice if someone could manage that, my assembly skills certainly arent upto that.

The file are on Roberto`s site now, thanks to him.

I made a stupid mistake in the readme.

oggencLL.exe (Low Loss) Lower quality lossy coupling than Standard.
oggencHL.exe (High Loss) Higher quality lossy coupling than Standard.

should be:

oggencLL.exe (Low Loss) Higher quality lossy coupling than Standard.
oggencHL.exe (High Loss) Lower quality lossy coupling than Standard.

If anyone with a pentium 4 processor could comment on the performance Id like to know, Ill try to compile a version of the vorbis dll later with the additional optomizations.
Neo Neko
Holy Sh17! A 5 minute 30 second song in 1 minute 24 seconds!? I like! biggrin.gif
Neo Neko
OMFG! :eek: It gets better a 9 minute song in 1 minute 42 seconds.

biggrin.gif ---===bliss===--- biggrin.gif
lithoc
i think there's bug in the Optimized compile....
it always stop at 99.9%
any explaination?
fyi. i'm using P3 450Mhz/ BX Chipset Board + 256MB SDRAM


Opening with wav module: WAV file reader
Encoding "track08.wav" to
"track08.ogg" at quality 5.00
Encoding with VBR
[ 99.9%] [ 0m00s remaining] -

Done encoding file "track08.ogg"

File length: 5m 02.0s
Elapsed time: 2m 22.0s
Rate: 2.1285
Average bitrate: 154.2 kb/s
lithoc
i think there's bug in the Optimized compile....
it always stop at 99.9%
any explaination?
fyi. i'm using P3 450Mhz/ BX Chipset Board + 256MB SDRAM


Opening with wav module: WAV file reader
Encoding "track08.wav" to
"track08.ogg" at quality 5.00
Encoding with VBR
[ 99.9%] [ 0m00s remaining] -

Done encoding file "track08.ogg"

File length: 5m 02.0s
Elapsed time: 2m 22.0s
Rate: 2.1285
Average bitrate: 154.2 kb/s
Alex
I think its a general bug, it happens in the official oggenc too.
In all cases the file is fully encoded(have you found otherwise?). It just appears to be a minor bug that occasionally it displays 99.9% rather than 100%, perhaps its related to the size of file encoding but i have not confirmed that.

Please do let me know if you think there are any problems.

Thanks
Alex
john33
Just for the record, I have the same experience and opinion as Alex.

john33
Neo Neko
I have yet to have a freez with either oggenc or the CDeX DLL. So it would apper that it does not affect everybody.

I am really loving this optimised DLL though. Just got my old computer set up as a network controllable Vorbis jukebox. Getting ready to hook it to my sterio and rock out with XMMS. 30 albums done over night. w00t!
red_one
how about a link to the source, so we can compile it ourselves?
rjamorim
The modifications on the source are already at my page.

All you'll have to do is get the rest of the vorbis sources, and the CDex Vorbis.dll specification. Mix them together skillfully, and you'll get a nifty DLL to play with. wink.gif

Regards;

Roberto.
john33
Actually, the DLL source on Roberto's page is complete. You don't need anything else from the CDex code. In order to compile just the DLL, you will need the ogg and vorbis modules from the CVS. If you want to compile oggenc, you will also need vorbis-tools, and if you want to compile oggdrop, you will need win32-tools. If you wish to compile my modified oggdrop, the code on Roberto's page replaces the source in the official oggdrop directory.

Is that clear? Or, have I confused the issue?

john33
AGS
John:

I am not familiar with the code. Do your sources compile under linux? Of course I am not interested in the dll but in oggenc. I would like to move the 4.99 threshold up and down and make some new graphs. would be interesting to compare them with the official RC3.

AGS.

P.S. BTW, which sources/link are the ones we talk about? Roberto's pages has grown too big and I am not sure what is what. Roberto, hint wink.gif
john33
AGS

The sources used for oggenc are the original sources from the CVS without any changes. So, if the RC3 sources compile under Unix/Linux, which I'm sure they do, then there will be no problem with the latest ones. The main sources are not on Roberto's page, that only has the amended sources.

You can either get them from the CVS at xiph.org or you can get a nightly snapshot which has all oggvorbis modules in it. If you go to vorbis.com, you can follow the links (developers).

Any other Questions? wink.gif

john33
AGS
You mean the cvs version has an option for placing the change from lossy to lossless channel coupling wherever I want? Out of the -q 5 where it is now?

AGS
john33
Sorry, misunderstood!! I think you will need a response from Alex. I don't think his code is on Roberto's page. I can't think why it shouldn't compile under Linux, though.

john33
Alex
Sorry I havent been able to post much recentley, works rather busy.

In response to AGS:

To modify the channel coupling settings go into the vorbislibmodes folder and look for file psych_44.h

Open the file and go down to the bottom, you should see a block of code below /* stereo ****************/

static int _psy_stereo_point_dB_44 is an array of 11 values, corresponding to -q values 0 - 10, in this array 0 will give lossless coupling, 1, 2 and 3 give increasingly lossy coupling.

static double _psy_stereo_point_kHz_44 is also an array controlling the coupling stereo point.

Setting all values to 0 in static int _psy_stereo_point_dB_44 will give lossless coupling at all -q values

If you want to use lossy channel coupling at upto -q 6 then I would suggest you could try this.

/* stereo ****************/
static int _psy_stereo_point_dB_44[11]={3, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0};
static double _psy_stereo_point_kHz_44[2][11]={
{4., 6., 6., 6., 10., 10., 10., 4., 4., 4., 4.},
{6., 6., 6., 10., 10., 10., 10., 4., 4., 4., 4.}
};

you may want to experiment with other settings to test diffrent degrees of lossy coupling.

Im sure Monty could give a much better explanation, but hopefully that good enough, the changes really arent very difficult.

Again Im sorry about the lack of posts just so busy, I know I promised some listening results from various codecs. I shall post these within a week.
AGS
TNX, I am playing already with that (had to overcome some compilation problems). But do you have any clue about what is:

double _psy_stereo_point_kHz_44 ?

That files has very little comments. After reading it I have the feeling that it is selfexplanatory for thouse that have some idea about what is going on, but partially cryptic for newcomers.

Do you know if there is anything written somewhere else that will give me better understanding?

Cheers, AGS.
Alex
I believe double _psy_stereo_point_kHz_44 sets the frequency`s at which lossy coupling is applied.

One value sets the level for high frequency sound and the other sets the value for low frequency. Above and below these values lossy coupling is applied.

Hopefully that makes sense.
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.