Freeamp-v6 2.1.1
Freeamp was a great MP3 player, now replaced by Zinf. ZINF share the same code base of Freeamp, but it is a new project.
The goal
of this work was to make Freeamp 2.1.1 working with IPv6. There is a Freeamp-v6 version for Windows and Linux. We have no plans to extend our work to Zinf because of the lack of interest of that community with respect of IPv6.
This porting is a "proof of concept" and must not be considered an
affordable product. So, please don't expect that Freeamp-v6 will work perfectly
on all the machines, that the features of Freeamp are entirely supported, and
that the author we'll be ready to fix every bug.
You can:
Installation notes
Freeamp is able to work with both IPv4 and IPv6 streams: it will detect the
protocol automatically. Obviously, an IPv6 stack is required in order to make Freeamp-v6 running.
Windows
Freeamp-v6 has been tested on several Windows XP and Windows2000 machines with IPv6 stack installed. We didn't test it on the MSR stack.
You have just to decompress the Freeamp-v6.zip into the destination folder, then run
freeamp.exe by double clicking on it.
Linux
Freeamp-v6 has been tested on Linux Red Hat 7.2 with kernel version 2.4.7. If you don't have an IPv6-ready kernel, you can find a lot of information in the Linux IPv6 Page of Peter Bieringer.
To install Freeamp-v6, decompress the Freeamp-v6.tar.gz into the destination folder, go into the bin directory and run freeamp:
- gunzip freeamp-v6.tar.gz
- tar -xf freeamp-v6.tar
- cd FreeAmp-v6/bin
- Run freeamp
Known issues:
- Some features are not supported (for example proxies could not work in IPv6)
- Not all the features have been tested; only http and rtp streaming has
been tested
Developer's notes - Windows
We do not provide a diff against the original source files.
However we provide both the original and the resulting source files, so that you
can (1) generate the diff, (2) build freeamp-v6 from scratch.
Original source code has been retained and it is still present in the modified
sources. However that code is not active because of a new #ifdef HAVE_IPV6 that
selects the new code. If you take the new #define off the the project files, you
should be able to compile Freeamp-v6 with the old code.
Compilation Requirements
IPv6 Stack
If you are about to build Freeamp-v6 you will need to have installed the last SDK (November 2001).
SGI STL
In order to build the binaries you will need to download and install the Win32 port of the SGI STL from: http://www.freeamp.org/~robert/stl.html
Project files
We didn't make too may changes:
- Added the #define HAVE_IPV6 in the project settings (Project -
Settings - C/C++ - General). This has been added to all projects, even if
they do not make use of sockets code (we tend to keep things simple)
- Added library ws2_32.lib instead of wsock32.lib as
the default socket library file (Project - Settings - Link - General)
- Modified one include directory (it seems to be a bug of the original
configuration files) in the Freeamp Project (Release):
../../../../lib/musicbrainz ==> ../../../lib/musicbrainz (Project - Settings - Link - Input)
- Modified the files freeamp.mak and freeamp.dsp in the project folder (it seems to be another bug here...):
it has been removed musicrainz.lib. It seems that this library does not exist.
- Added the theme files EMusic.fat, FreeampClassic.fat, Relatable.fat, Tommy.fat and Aquatica.fat that are required in the compilation and are not present in the source distribution for windows (?). We have take them from the source distribution for Linux even though we could just remove them from the configuration files...
Developer's notes - Linux
We provide, also for Linux, the source code of Freeamp-v6 and original Freeamp, in the case you want to generate the diff. Like in the Windows case, original source code is still present but it is not active because of the HAVE_IPV6 definition.
Building the binary
In order to build Freeamp-v6 you have to:
- Download and install the MusicBrainz client library
- In the folder you have decompressed Freeamp-v6, run ./configure
- In the Makefile.header file that have been created by the configure script, you have to define the HAVE_IPV6 macro in the CFLAGS statement like this: CFLAGS=...-DHAVE_IPV6. We did not modified the configure script so if you run ./configure again, a new Makefile.header file will be created and you will have to add the HAVE_IPV6 macro again. You should be able to compile Freeamp-v6 with the old code if you don't add the HAVE_IPV6 definition.
- Run make. This will build the binary
- Run make install. This will install the binaries and plugins into /usr/local, or into the directory you specified by running ./configure --prefix=foo
- Run freeamp
Freeamp-v6 and NASM
We didn't use NASM, although Freeamp developers says that Freeamp should work
better if compiled with that tool. We believe that the best way is to keep
things simple, so we tend to avoid external tools.
Source files
The files that have been modified in order to support IPv6 are the following:
- base\aps\comhttpsocket.cpp
- base\aps\comsocket.cpp/h (used only by Linux version)
- base\aps\wincomsocket.cpp/h
- base\src\downloadmanager.cpp
- base\src\playlist.cpp
- lib\http\src\http.cpp
- io\include\tstream.h (for multicast)
- io\src\tstream.cpp (for multicast)
- io\obs\obsinput.cpp/h (for multicast)
- io\http\httpinput.cpp
- ui\lcd\src\sockets.c (used only by Linux version)
For more information please contact:
Fulvio Risso, risso@polito.it
Ernesto Escalona, escalona@netgroup-serv.polito.it
Politecnico di Torino, Italy.