初级会员
- 积分
- 73
- 金钱
- 73
- 注册时间
- 2015-9-11
- 在线时间
- 8 小时
|
5金钱
原子哥你好:
我移植的咱们的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的。还请原子哥帮试试,或者帮分析分析,小弟在此谢谢了! |
|