【问题标题】:portaudio/libsndfile framesperbuffer variableportaudio/libsndfile framesperbuffer 变量
【发布时间】:2014-08-06 17:39:42
【问题描述】:

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

同样在lsbsndfilelibrary 中,读取波形文件的函数需要提供名为frame的变量。 即

samples=sf_readf_float(file,fptr,frames);

如果我输入 frames=256,那么 fptr 中总是返回 64 个样本,其余的都是垃圾,而 read 函数的返回值是 256。 我已经检查了以下代码

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

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

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

【问题讨论】:

    标签: c++ visual-c++ portaudio libsndfile


    【解决方案1】:

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

    【讨论】:

    • 能否请您提供“...强烈推荐...”建议的链接,以便我了解这方面的详细信息。 (我已经阅读了这里的差异,但没有阅读建议。)
    猜你喜欢
    • 2015-02-08
    • 2014-05-29
    • 2016-11-15
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2021-07-23
    • 2016-03-12
    • 1970-01-01
    相关资源
    最近更新 更多