- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用于创建版本3 AudioUnit的示例代码演示了实现如何需要返回功能块以进行渲染处理。该块都将从前一个
通过pullInputBlock
链中的AxudioUnit并将处理后的样本提供给输出缓冲区。如果位于链下游的设备没有提供,则它还必须提供一些输出缓冲区。这是AudioUnit子类的代码摘录:
- (AUInternalRenderBlock)internalRenderBlock {
/*
Capture in locals to avoid ObjC member lookups.
*/
// Specify captured objects are mutable.
__block FilterDSPKernel *state = &_kernel;
__block BufferedInputBus *input = &_inputBus;
return Block_copy(^AUAudioUnitStatus(
AudioUnitRenderActionFlags *actionFlags,
const AudioTimeStamp *timestamp,
AVAudioFrameCount frameCount,
NSInteger outputBusNumber,
AudioBufferList *outputData,
const AURenderEvent *realtimeEventListHead,
AURenderPullInputBlock pullInputBlock) {
...
});
frameCount
,但是许多应用程序确实需要在此块之前知道
frameCount
以便分配内存,准备处理参数等,这很好。
frameCount
样本,但这仅在已知最小
frameCount
的情况下有效。为了能够正常工作,必须使用大于此帧计数的大小来初始化处理。有没有办法指定或获取
frameCount
的最小值或将其强制为特定值?
最佳答案
在iOS下,音频单元回调必须能够处理可变的frameCounts。您不能强制它为常数。
因此,任何需要固定大小缓冲区的处理都应在音频单元回调之外进行。您可以使用无锁循环缓冲区/ FIFO或类似的结构将数据传递到处理线程,该结构不需要在回调中进行内存管理。
您可以通过使用AVAudioSession API设置缓冲区持续时间来建议frameCount为一定大小。但是OS可以随意忽略它,具体取决于系统中的其他音频需求(省电模式,系统声音等)。以我的经验,音频驱动程序只会增加您建议的大小,而不会减小建议的大小(超过如果重新采样到2的幂,则对采样进行耦合。
关于audio - 版本3 AudioUnits:internalRenderBlock中的最小frameCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448570/
我有汇编代码,由 frameCount 调用,需要返回 frameCount,但不确定如何检索(然后导航)前一帧的指针引用。 getFP.s .globl getFP getFP: movq
我试图让带圆圈的对象随着时间的推移出现——每个对象都是独立的——并在 30 帧后将它们的位置更改为随机选择的新对象。现在——我只能让它们在 30 帧后改变它们的位置,但同时全部在一起……我花了一段时间
我是一名优秀的程序员,十分优秀!