当前位置: 技术问答>linux和unix
怪问题(音频解码)
来源: 互联网 发布时间:2015-09-25
本文导语: 我移植一个MP3的解压算法时,在PC机上用gcc编译后,执行正确且速度快.但是,我用arm-linux-gcc编译后烧到板子(EP7312)上的时候,执行程序也能正常运行,可是速度非常的慢,几乎两个小时才能完成PC上几秒钟的...
我移植一个MP3的解压算法时,在PC机上用gcc编译后,执行正确且速度快.但是,我用arm-linux-gcc编译后烧到板子(EP7312)上的时候,执行程序也能正常运行,可是速度非常的慢,几乎两个小时才能完成PC上几秒钟的解码,但是最后解码后的结果是正确的.
困惑了很长时间也找不到原因.也试了对所有自己能想到的问题(当然由于我菜鸟的考虑范围也比较狭窄)修改后去试,每次都是一样的.由于解码要用到标准数学库,会不是是这个方面的原因??可是两者速度上不该有这么大的差别吧.
由于我也找不到真正的症结,所以也不知道如何明白清晰而又简捷的向各位高手提出问题,所以麻烦大家看这么多字了,还希望能给些有益的提示,在此感谢先.
困惑了很长时间也找不到原因.也试了对所有自己能想到的问题(当然由于我菜鸟的考虑范围也比较狭窄)修改后去试,每次都是一样的.由于解码要用到标准数学库,会不是是这个方面的原因??可是两者速度上不该有这么大的差别吧.
由于我也找不到真正的症结,所以也不知道如何明白清晰而又简捷的向各位高手提出问题,所以麻烦大家看这么多字了,还希望能给些有益的提示,在此感谢先.
|
对ARM不太熟
但应该和单片机类似
适合于定点运算
你直接把浮点程序考到ARM上运行当然不行
你要把浮点程序改成定点程序
然后再移植到ARM上运行
多数数学库都是针对PC开发的
效率低
但应该和单片机类似
适合于定点运算
你直接把浮点程序考到ARM上运行当然不行
你要把浮点程序改成定点程序
然后再移植到ARM上运行
多数数学库都是针对PC开发的
效率低
|
坦率的讲, 我觉得跨平台移植MP3的解压算法, 而且要速度很快的话, 需要非常高的水平. 按你目前讲的情况来看, 就是因为ARM处理器在处理浮点运算消耗了大量的时间(因为结果是正确的). 你在网上找找还有没有其他的算法能够提供足够速度,或者仔细看看你的ARM CPU到底有没有浮点协处理器, 怎样使用协处理器. 否则的话,我建议你放弃吧, 因为你得使用定点数字自己重新实现MP3的解压算法,别的, 恐怕没什么好方法.
我曾经接触过一个水平很高的博士, 他在Palm(龙珠68K)上实现JPEG解码算法, 花了好几个月呢, 就是因为CPU慢, 他基本上把JPEG解码算法字节自己写了一遍. 我想, MP3的解码算法不会比JPEG解码算法简单的吧?
我曾经接触过一个水平很高的博士, 他在Palm(龙珠68K)上实现JPEG解码算法, 花了好几个月呢, 就是因为CPU慢, 他基本上把JPEG解码算法字节自己写了一遍. 我想, MP3的解码算法不会比JPEG解码算法简单的吧?
|
和库应该没什么关系吧?两小时 VS 几秒?这么夸张?目标平台什么环境?
|
建议你尽量不要用数学库, 因为里面的基本上都是浮点运算, 而如果你的目标CPU不含有数字协处理器的话, 结果你想想也就明白了.....
建议你尽可能修改代码, 使用整数运算代替浮点运算(无论是数学函数还是加减乘除).
祝你好运!
建议你尽可能修改代码, 使用整数运算代替浮点运算(无论是数学函数还是加减乘除).
祝你好运!