正点原子的音乐播放器例程中的wav_buffill函数

2019-07-20 12:01发布

u32 wav_buffill(u8 *buf,u16 size,u8 bits){        u16 readlen=0;        u32 bread;        u16 i;        u8 *p;                if(bits==24)        {                        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;                //ì&#238;3&#228;oóμ&#196;′óD&#161;.        }        else         {                        f_read(audiodev.file,buf,size,(UINT*)&bread);//16bitò&#244;&#198;μ,&#214;±&#189;ó&#182;áè&#161;êy&#190;Y                          if(bread<size)//2&#187;1&#187;êy&#190;Yá&#203;,213&#228;0                        {                                for(i=bread;i<size-bread;i++)                                buf=0;                         }        }                return bread;}  


上面这个函数中,readlen=(size/4)*3;  这一句,为什莫要取填充数据量大小的3/4大小?如果这样算的话,加入想填充12字节的数据,那就要预先使设定值+9变为21,这样填充值才是12,是这样么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。