OpenEdv-开源电子网
标题:
移植MP3有些歌曲播放不了
[打印本页]
作者:
hufanli21
时间:
2015-12-2 19:43
标题:
移植MP3有些歌曲播放不了
原子哥你好:
我移植的咱们的MP3代码,有些歌曲名字是可以显示,但是在选中该歌曲时是播放不了,向下面跟的话问题定位到这个函数:
WCHAR ff_convert ( /* Converted code, 0 means conversion error */
WCHAR src, /* Character code to be converted */
UINT dir /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
)
{
// const WCHAR *p;//u16 *p;
WCHAR c;//u16 c;
int i, n, li, hi;
u8 temp[2];
u16 *t=(u16*)temp;
if (src < 0x80) { /* ASCII */
c = src;
} else {
if (dir) { /* OEMCP to unicode */
// p = oem2uni;
hi = ftinfo.oem2uniaddr / 4 - 1;//这里变更oem2uni.bin文件的大小
} else { /* Unicode to OEMCP */
// p = uni2oem;
hi = ftinfo.uni2oemaddr / 4 - 1;//这里变更uni2oem.bin文件的大小
}
li = 0;
for (n = 16; n; n--) {
i = li + (hi - li) / 2;//文件偏移值
//从flash中获取码表数据
if(dir)SPI_Flash_Read(temp,((i*2*2)+ftinfo.oem2uniaddr),2);//从0开始读出8字节地址数据
else SPI_Flash_Read(temp,((i*2*2)+ftinfo.uni2oemaddr),2);//从0开始读出8字节地址数据
if (src == t[0]) break;
if (src > t[0])
li = i;
else
hi = i;
}
if(dir)SPI_Flash_Read(temp,((i*2*2+2)+ftinfo.oem2uniaddr),2);//从0开始读出8字节地址数据
else SPI_Flash_Read(temp,((i*2*2+2)+ftinfo.uni2oemaddr),2);//从0开始读出8字节地址数据
c = n ? t[0] : 0;
}
return c;
}
当去索引
oem2uni.bin字库时,最炫民族风这首歌曲的“炫”字的汉字编码找不到,所以导致最炫民族风这首歌播放不了,实际测试oem2uni.bin里面是含有“炫”(0xECC5)字码的。感觉是二分查找这样索引是不是索引不完全。我的字库是存在外部flash的。还请原子哥帮试试,或者帮分析分析,小弟在此谢谢了!
作者:
正点原子
时间:
2015-12-2 21:34
我们例程运行良好啊
作者:
hufanli21
时间:
2015-12-4 10:08
回复【2楼】正点原子:
---------------------------------
谢谢原子哥的回复。可以放“最炫名族风这首歌”是吧,这就奇怪了,我用咱们最初的程序也不行,难道给外部硬件flash有关系。或者原子哥能给我下你最新的例程吗,在此先谢谢了
欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/)
Powered by Discuz! X3.4