关于例程中音乐播放器试验的问题

2019-07-20 07:02发布

当文件的数据为24bit是需要填充位32bit,为什么16bit的时候不需要填充?代码如下:/填充buf//buf:数据区//size:填充数据量//bits:位数(16/24)//返回值:读到的数据个数u32 wav_buffill(u8 *buf,u16 size,u8 bits){       u16 readlen=0; u32 bread;       u16 i; u8 *p;       if(bits==24)//24bit音频,需要处理一下       {              readlen=(size/4)*3;                                           //此次要读取的字节数              f_read(audiodev.file,audiodev.tbuf,readlen,(UINT*)&bread);     //读取数据              p=audiodev.tbuf;              for(i=0;i<size;)              {                     buf[i++]=p[1]; buf=p[2];                     i+=2; buf[i++]=p[0];                       p+=3;              }              bread=(bread*4)/3;        //填充后的大小.       }else       {              f_read(audiodev.file,buf,size,(UINT*)&bread);//16bit音频,直接读取数据               if(bread<size) for(i=bread;i<size-bread;i++)buf=0;//不够数据了,补充0       }       return bread;}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。