Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2 (Read 114150 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #50
Very good work!
I would like to try it out, but so far the compiled version from Roberto has crashed on me every time I tried to use it   
I think the problem is my CPU, as I have an AMD Phenom2, which doesn't support the SSE4 instruction set. 

So, is there any possibility of getting a non-SSE4 binary?

I have been trying to compile it myself, but I have pretty much no idea what I'm doing, I just wanted to try this really badly ^^

Thank you very much in advance!


/me is off to uninstall MSVC++ Express Edition...

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #51
So, is there any possibility of getting a non-SSE4 binary?

I have been trying to compile it myself, but I have pretty much no idea what I'm doing, I just wanted to try this really badly ^^

I must admit that building the binaries from version 17 is a bit difficult since some 3rd party files are missing. I will add them in the next release.

I will also add a text file with step-by-step instructions for non-programmers that will help to build the project - starting with the MSVC++ download 

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #52
I must admit that building the binaries from version 17 is a bit difficult since some 3rd party files are missing. I will add them in the next release.

I will also add a text file with step-by-step instructions for non-programmers that will help to build the project - starting with the MSVC++ download 


Thank you very much for the quick reply!

It is very nice of you to include instructions on how to compile, I just hope the next release is soon, I can't wait to try it out


So, thanks again, looking forward to the next release 

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #53
It is very nice of you to include instructions on how to compile, I just hope the next release is soon, I can't wait to try it out

Bad news: The Visual C++ 2008 Express Edition does not accept the solution file that was created by the Professional Edition

But it's possible to download a trial version of the Professional Edition. I will try it the next days.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #54
Bad news: The Visual C++ 2008 Express Edition does not accept the solution file that was created by the Professional Edition

But it's possible to download a trial version of the Professional Edition. I will try it the next days.


Thanks for keeping us updated! Even bad news is news, and that you've already found an alternative is great to hear too!

I hope the trial isn't as restricted as the Express Edition, as in "dear god I hope it will compile on that" 

Good luck!

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #55
I asked Roberto from RareWares if he can put the binaries on his site.

Good news. The binaries will be available for download soon.

With the initial version of the FLAC plugin it's possible to batch-convert FLAC files (44.1kHz/2ch/16bit) directly to MP3.

The command-line for FLAC to MP3 VBR is:

FPSTREAM filemask *.flac ( readfile flac*i -f "*fp" + flacdec fdec*i -s flac*i + fpmp3enc menc*i -s fdec*i --vbr-new + fpwritemp3file mp3*i -s menc*i -f "*n.mp3" )

You can also add another MP3 encoding task by extending the command line before the ')':

+ fpmp3enc <an ID1>*i -s fdec*i [MP3 options] + fpwritemp3file <an ID2>*i -s <an ID1>*i -f <file name>

Performance is quite good...


Could you provide a screenshot to configure foobar to use fpMP3Enc?

See my other request also:
http://www.hydrogenaudio.org/forums/index....st&p=671021

Thanks.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #56
Thanks a lot for this utility. I am very happy to see my Core i7 / 6GB machine used to it's max

How do I get this tool to recursively go into folders, find the *.flac files and convert them to mp3 in the same folder?

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #57
How do I get this tool to recursively go into folders, find the *.flac files and convert them to mp3 in the same folder?

The command-line has to be extended for that. I've added it to my list.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #58
Any chance someone could give a foobar2000 command line for this?  I can never work out the whole pipeline thing!

I want to go from FLAC to MP3 as fast as possible!

Thanks.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #59
Any chance someone could give a foobar2000 command line for this?  I can never work out the whole pipeline thing!

I want to go from FLAC to MP3 as fast as possible!

Thanks.

The tool 'fpFLAC2MP3' is the one you need. AFAIK you cannot use it with foobar2000.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #60
how can i use them with winamp?

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #61
Will you add mp3 transcoding (mp3 to mp3) support?


 

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #63
Sorry if that've been asked already, but is there any objective tests of produced MP3s quality? As I understand - the process is touching a very low levels of encoder. Is it safe to use it for usual purposes and not testing - only?

Thanks.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #64
Sorry if that've been asked already, but is there any objective tests of produced MP3s quality? As I understand - the process is touching a very low levels of encoder. Is it safe to use it for usual purposes and not testing - only?

The quality should be exactly the same as LAME since I didn't modify the algorithm. I just split the serial code into asynchronous parts and let them execute in parallel. All encoding features including bit reservoir are still present.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #65
Sorry if that've been asked already, but is there any objective tests of produced MP3s quality? As I understand - the process is touching a very low levels of encoder. Is it safe to use it for usual purposes and not testing - only?

The quality should be exactly the same as LAME since I didn't modify the algorithm. I just split the serial code into asynchronous parts and let them execute in parallel. All encoding features including bit reservoir are still present.


So, in theory, I shall get bitwise-equal output from your version and the original one? If that's true, it's indeed safe to use it without any quality tests

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #66
So, in theory, I shall get bitwise-equal output from your version and the original one?

Yes, if you compare the floats (with a small error) instead of the bits.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #67
Doesn't foobar2000 already do this if you have more than one core in your computer?  I was getting similar numbers on quad core machine when I had to do some coding for my dad.  My core duo goes about 43x if its not running warm.

I cannot confirm this on my quad core. Converting the test set with foobar2000 took me about 6 minutes which gave a 47.4x speed.  (BTW, the test was encoding to CBR 128.)

Running two encodes in parallel results in essentially perfect parallelization.  The only overhead comes from disk contention, which is still a problem for the multithreaded single process case anyway.

This is not a problem in "fpMP3Enc". I/O processing is a separate task and is controlled by a file I/O scheduler that sorts and serializes I/O operations on the same drive. The encoder tasks work only on memory.

That's the reason why foobar2000 has a 47.4x performance while "fpMP3Enc" has 80.2x. I think, on an i7 it's possible to get 150x and above... unfortunately I don't have such a system to test it.

Quote
Running one process will encounter additional overhead due to thread synchronization, lack of granularity in parallelism, overhead for inter-thread communication, etc.  In order to make up for this, there would have to be additional work saved by running in one process and I don't see what that would be for MP3.

As you mentioned above, concurrent disk access is a problem when you execute multiple encoder processes in parallel. If you run them as tasks in one process you can use a file I/O scheduler that takes care of it, as I did.


I think fb2k's relative poor performance is somehow due to Windows's poor pipe performance.
Try to write a fb2k compatible version and compare it with lame ?

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #68
I think fb2k's relative poor performance is somehow due to Windows's poor pipe performance.

I don't know how foobar2000 handles concurrent file access, but it seems that I've found a better way by using an I/O scheduler.
Quote
Try to write a fb2k compatible version and compare it with lame ?

In the test, I compared fpMP3Enc with foobar2000+LAME.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #69
Hi,
could you explain me why it runs single threaded on a single encoding (ie. one files only)?
Is it related to how LAME works?

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #70
By design, the encoder will run with at least three threads (1 CPU, 2 I/O). If you don't set the number of CPU threads in the command-line, the number of threads will be <number of processors> + 2.

If the encoding speed feels like being single-threaded, then either you're using CBR or ABR, or the number of threads is too high. Currently, using more than three CPU threads would slow down the encoding.

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #71
Any thoughts to updating this to make it based on LAME 3.99.5?

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #72
Any thoughts to updating this to make it based on LAME 3.99.5?

Ha, coincidentally two days ago I've started porting LAME 3.99.5 to C++ using my new multicore framework. It will take some time...

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #73
Any thoughts to updating this to make it based on LAME 3.99.5?

Ha, coincidentally two days ago I've started porting LAME 3.99.5 to C++ using my new multicore framework. It will take some time...


Interesting.  Will it be able to compile using the latest VS2012?
Really looking forward to this.
Any idea how it does on newer cpus (Like my FX CPU)

Thx

fpMP3Enc: a multi-core MP3 encoder based upon LAME 3.98.2

Reply #74
Interesting.  Will it be able to compile using the latest VS2012?
Really looking forward to this.
Any idea how it does on newer cpus (Like my FX CPU)


Currently, I'm working with VS2010 but I will switch to VS2012 when it's available.

At the moment I cannot say anything about the performance but the plan is to get a 4x speedup on an Intel 2600K.