ywl5320 / SoundTouch_OpenSL_Android

Android中用OpenSL ES来播放SoundTouch转换后的PCM数据
31 stars 14 forks source link

8bit转16bit错误导致,杂音非常多 #1

Closed bylijian closed 5 years ago

bylijian commented 5 years ago

sd_buffer[i] = (pcm_buffer[i 2] | (pcm_buffer[i 2 + 1] << 8)); 这个代码有问题,pcm_buffer[i*2+1]的数据是byte的,对它进行左移八位,结果是全0!!!

ywl5320 commented 5 years ago

这个转换是可以的哈,我再我的项目里面和课程里面都用到了的。还有这是处理ffmepg重采样后正确的PCM数据!!!

bylijian commented 5 years ago

可能是场景不一样,如果是这样,sd_buffer[i] = (pcm_buffer[i 2] | (pcm_buffer[i 2 + 1] << 8)); 和sd_buffer[i] = pcm_buffer[i * 2]<<8;的意义应该是一样的。。。

ywl5320 commented 5 years ago

对 这种要根据自己的使用场景灵活变化