Search code examples
c++windowsmp3decode

windows mp3 decode library c c++


I've spent all day on this and its driving me nuts

Does someone know a simple way to decode an mp3 to a simple 16 bit pcm (wave) file? i need something i can ship with my commercial program so i prefer a .lib

I found libmpg123.dll but i can't figure out how to get my program to link with a dll in msvc 2010. i know i need to add a reference but when i click 'add new reference' all i get is a empty dialog with Project Name and Project directory heading and nothing to click. I tried converting .dll to .lib using the lib tool but that keeps complaining the .def file format is bad.

I tried to build madplayer but i can't fine id3tag.h and there is no documentation or examples about using libmad that i can find

Lame looks too huge

Any ideas for a quick solution for a .lib i can link with and be done with it

Thanks, steve


Solution

  • mpg123 is fine. I can see you have troubles with getting static library (.lib).

    There are 2 ways to get the lib:

    1. Build the source code. It's much more flexible, but it's a bit tricky. If you download the sources, you can find a port to VS2010 by the path: ports\MSVC++\2010. But in this case you will face with issues of installing YASM and playing around with build configurations (seems the configurations are not properly adjusted in the source code package).
    2. Use the lib tool by converting the .def file. You don't need sources as the binary packages already contain the .h and the .def files. I will explain in details:

      1. Download the binaries (win32 or win64) and extract let's say to D:\mpg123 folder.
      2. Run from Start -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010).
      3. Go to your folder cd D:\mpg123, D: and run the line: lib /def:libmpg123-0.dll.def (or however the def file is called).
      4. Now you have the desired .lib file libmpg123-0.dll.lib in your folder.

    But notice, that the 'Framework and References' property page is used to set references to .NET Framework assemblies, COM components, or external projects (MSDN), in your case you should specify additional linker dependency in your project [Configuration Properties => Linker => Input => Additional Dependencies].