gpt4 book ai didi

c++ - portaudio/libsndfile framesperbuffer 变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:22 26 4
gpt4 key购买 nike

谁能告诉我 portaudio 回调函数变量 framesperbuffer 是什么?如果我想通过 PA_WriteStream() 每次迭代以 64 字节数据播放音频流,那么我应该在 framesperbuffer 中输入什么值?

此外,在 lsbsndfile 库中,读取波形文件的函数需要提供名称为 frame 的变量。即

samples=sf_readf_float(file,fptr,frames);

如果我设置 frames=256,那么在 fptr 中总是返回 64 个样本,其余的是垃圾,而读取函数的返回值为 256。我已经检查了以下代码

memcpy(array,fptr,samples); //samples returned are 256 always but first 64 contain data

现在 array[0] 到 array[63] 包含值,array[64] 到 array[255] 在文件读取的每次迭代中包含空值。现在我必须将读取的数据写入 portaudio 音频播放功能,然后 framesperbuffer 应该填充什么。

此外,在某些情况下,我需要处理数据并将样本减少到 32(当我消耗两个样本以形成一个输出样本时),那么我应该在 framesperbuffer 变量中输入什么值?

最佳答案

framesPerBuffer 传递给流回调函数的帧数,或阻塞读/写流的首选 block 粒度。特殊值 paFramesPerBufferUnspecified (0) 可用于请求流回调将根据主机要求和请求的延迟设置接收最佳(并且可能变化)的帧数。注意:对于某些主机 API,将非零 framesPerBuffer 用于回调流可能会引入额外的缓冲层,从而导致额外的延迟。 PortAudio 保证额外的延迟将保持在理论上的最小值,但是,强烈建议仅当您的算法需要每个流回调的固定帧数时才使用非零 framesPerBuffer 值。

关于c++ - portaudio/libsndfile framesperbuffer 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com