我在一个应用程序中处理PCM数据,使用PCM_Strm_Open(event_callback, pcm_format)这样处理。
因为从来没用过这个接口,目前问题很多,想请教下有没达人会用的,指点下。
1. 填充缓冲区是不是一定要在event_callback里收到MEDIA_DATA_REQUEST后异步处理?
我之前有用过在程序中采集到PCM数据后,就直接调用GetWriteBuffer, WriteDataDone等来填
缓冲区,但是这样做声音会有明显的断续。是不是因为填数据的时候,上一段PCM数据还没播放完?
2. PCM缓冲区(就是GetWriteBuffer得到的那个指针指向的内存区)中的音频数据是不是会重复播放?
比如该缓冲区为16*1024Bytes,然后我填4KB,然后我填下一个4KB数据前,之前填的会循环播放?
然后填入该4KB数据后,就循环播放这8KB数据?如果是这样的话,我只想播放一次,是不是每次
在event_callback里收到MEDIA_DATA_REQUEST后都要按如下流程处理?
a. 调用GetWriteBuffer;
b. 填数据;
c. 调用WriteDataDone;
d. 调用FinishWriteData;
e. 调用DataFinished.
最好能给个示例,谢谢!