madplay 移植

基于 s3c2440 的 madplay 移植

在 mini2440 移植声卡后,赶紧找了移植 madplay 的资料,看上去挺简单的,于是接着移植 madplay。

一、        环境和软件介绍

1、 主机环境:虚拟机下 Fedora9

2、 交叉编译器: arm-linux-gcc-4.3.2

3、 软件包: zlib-1.2.3 、 libid3tag-0.15.1b.tar.gz 、 libmad-0.15.1b.tar.gz 、 madplay-0.15.2b.tar.gz

4、  把以上软件包解压到 /opt/studyarm/madplay-make 目录下,分别改名为 zlib 、 libid3tag 、 libmad 、madplay 。并在 madplay-make 目录下新建 include 和 lib 目录用于存放编译后的头文件和库文件。

二、     移植步骤

1、 编译 zlib-1.2.3

进入 zlib 目录进行如下配置:

./configure –prefix=/opt/studyarm/madplay-make

然后修改生成的 Makefile 文件:

    ...

   CC=arm-linux-gcc

   ...

   LDSHARED=arm-linux-gcc

   CPP=arm-linux-gcc -E

   ...

   AR=arm-linux-arrc

   RANLIB=arm-linux-ranlib

   ...

执行 make

make install

在 /opt/studyarm/madplay-make 目录下的 included 和 lib 目录里生成了编译后的文件。

2、 编译 libid3tag-0.15.1b.tar.gz

进入 libid3tag 目录,执行“ ./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/opt/studyarm/madplay-make ”

    make

make install

在 /opt/studyarm/madplay-make 目录下的 included 和 lib 目录里生成了编译后的文件。

3、 编译 libmad-0.15.1b.tar.gz

进入 libmad 目录,执行“ ./configure --host=arm-linux --enable-static --disable-shared -disable-debugging --prefix=/opt/studyarm/madplay-make ”

因为我使用的是高版本的 arm-linux-gcc-4.3.2 编译器, make 时出现了“ cc1: error: unrecognized command line option "-fforce-mem" ”错误,这是因为这个高版本的 gcc 没有 "-fforce-mem" 参数,解决的办法是在 Makefile 里面查找 "-fforce-mem" ,将其删除即可 make 通过。

make

make install

在 /opt/studyarm/madplay-make 目录下的 included 和 lib 目录里生成了编译后的文件。

4、 madplay-0.15.2b.tar.gz

进入 madplay 目录,执行“ ./configure CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc --host=arm-linux --enable-static --disable-shared CPPFLAGS=-I/opt/studyarm/madplay-make/include LDFLAGS=-L/opt/studyarm/madplay-make/lib ”

make

在目录下生成了 madplay 可执行文件。

三、     测试

将生成的 madplay 可执行文件拷贝到开发板的 /bin 目录下,播放 U 盘或其它地方的歌曲,这里播放的是 U 盘里面的歌曲。

[rootMrFeng]#ls

01.mp3  2.wma   ??      ???     ????    ?????

[rootMrFeng]#madplay 01.mp3

MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.

          Title: 天空之城(木吉他)

         Artist: 久石让

          Album: 天空之城( Laputa The Castle in

10288 frames decoded (0:04:28.7), +0.3 dB peak amplitude, 31 clipped samples

到了这里, madplay 移植成功,声音播放正常。

四、      我的编译命令:

//written by yichi 2010.02.26 14:22:08
//使用源码:libid3tag-0.15.1b.tar.gz, madplay-0.15.2b.tar.gz, libmad-0.15.1b.tar.gz, zlib-1.2.3.tar.gz

//编译zlib-1.2.3
tar -xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/home/yichi/work2010/madplay/target
gvim Makefile
//修改gcc->arm-linux-gcc, ar rc->arm-linux-ar rc, ranlib->arm-linux-ranlib
make
make install

//编译ibid3tag-0.15.1b
tar -xvf libid3tag-0.15.1b.tar.gz
cd libid3tag-0.15.1b
./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/home/yichi/work2010/madplay/target
make
make install

//编译libmad-0.15.1b
tar -xvf libmad-0.15.1b.tar.gz
cd libmad-0.15.1b
./configure --host=arm-linux --enable-static --disable-shared -disable-debugging  --prefix=/home/yichi/work2010/madplay/target
gvim Makefile
//删除-fforce-mem 参数
make
make install

//编译madplay-0.15.2b.tar.gz
tar -xvf madplay-0.15.2b.tar.gz
cd madplay-0.15.2b
./configure CC=/usr/arm/4.3.2/bin/arm-linux-gcc --host=arm-linux --enable-static --disable-shared CPPFLAGS=-I/home/yichi/work2010/madplay/target/include LDFLAGS=-L/home/yichi/work2010/madplay/target/lib
make
//生成静态编译的madplay
cp madplay /tftpboot

 

五、由于我板子声音架构为alsa,直接使用madplay播放会出现audio: /dev/dsp: No such file or directory错误。

   原因是madplay使用oss建构,在网上查找了一些资料,可以用alsa支持oss架构,但是并没有找到比较容易的方法,有待以后学习。

   简单解决方法如下:使用madplay解码再使用aplay播放:)在这里向有此伟大想法的不知名网友致敬。

     madplay -o wav:- 1.mp3 | aplay

posted @ 2014-06-07 22:01  jeffkuang  阅读(1380)  评论(0)    收藏  举报