打印

libmad在keil上编译问题,s3c2440平台

[复制链接]
2733|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
戒指320|  楼主 | 2012-5-27 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我手头上有一块tq2440开发板,最近没事就裸奔下,裸奔到iis接口那里,做了wave音频的播放。想想 arm9软解MP3应该没什么问题,于是乎 下载了libmad的源码,加入keil4工程里,有几个文件稍作了一下修改,使用minimad.c里的程序解码(这个例子里是使用操作系统的,从stdin读入数据,把解码后得到的pcm数据通过终端打印) 数组里的数据做实验。发现解码速度慢啊,我总结了下,应该是 我没使用FPM_ARM ,另外没有使用ASO_IMDCT ,
但是使用 后编译出错:
#  define mad_f_mul(x, y)  \
    ({ mad_fixed64hi_t __hi;  \
       mad_fixed64lo_t __lo;  \
       mad_fixed_t __result;  \
       asm ("smull        %0, %1, %3, %4\n\t"  \
            "movs        %0, %0, lsr %5\n\t"  \
            "adc        %2, %0, %1, lsl %6"  \
            : "=&r" (__lo), "=&r" (__hi), "=r" (__result)  \
            : "%r" (x), "r" (y),  \
              "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS)  \
            : "cc");  \
      __result;  \
    })
其中mad_fixed_t、mad_fixed64hi_t均已预定义为signed int,mad_fixed64lo_t预定义为unsigned int。
在别的C文件中使用该定义,如:
……
#  define MUL(x, y)  mad_f_mul((x), (y))
……
t59  = MUL(t16 - t17, costab2);
此处调用该头定义的部分全部报Pe029错误“Expected an Expression”。
另外一部分头定义:
#  define MAD_F_MLX(hi, lo, x, y)  \
    asm ("smull %0, %1, %2, %3"  \
         : "=&r" (lo), "=&r" (hi)  \
         : "%r" (x), "r" (y))
在调用时:
……
#  define MAD_F_ML0(hi, lo, x, y)        MAD_F_MLX((hi), (lo), (x), (y))
……
#  define ML0(hi, lo, x, y)        MAD_F_ML0((hi), (lo), (x), (y))
……
ML0(hi, lo, (*fx)[0], ptr[ 0]);
此种调用的地方全部报Pe018错误“Expected a ')'”,
imdct_l_arm.S文件也报错

找了找百度老师,大约是说 libmad是基于gcc编译的,用keil的编译器 编译有问题。
我按照arm汇编 修改了imdct_l_arm.S文件,然后 imdct_l_arm.S可以顺利编译。但是却不能解码(测试使用 FPM_DEFAULT)。至于那两个其他的编译错误我不知道怎么弄了。
坛子里有谁做过这方面的工作,能否给点意见和参考。
下面附上我的工程,请大家帮看看。

TQ2440-wk.rar

3.79 MB

相关帖子

沙发
sedatefire| | 2012-6-26 17:13 | 只看该作者
libmad是基于gcc编译的,用keil的编译器 编译有问题
这个跨编译器的代码引用,比较悲催,你慢慢研究吧
帮你顶一下

使用特权

评论回复
板凳
chenjiancan| | 2013-4-3 19:49 | 只看该作者
请问楼主  这个问题怎么解决的

使用特权

评论回复
地板
戒指320|  楼主 | 2013-4-18 21:42 | 只看该作者
呵呵,一直 没解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:淘宝小店: http://shop73275611.taobao.com

37

主题

290

帖子

2

粉丝