- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有渲染回调的 RemoteIO 音频单元。我已经有一个渲染音频缓冲区,出于性能原因,我想避免使用 memcpy
。
OSStatus FMixerPlatformAudioUnit::AudioRenderCallback(void* RefCon, AudioUnitRenderActionFlags* ActionFlags,
const AudioTimeStamp* TimeStamp, UInt32 BusNumber,
UInt32 NumFrames, AudioBufferList* IOData)
{
IOData->mBuffers[0].mData = RenderedBufferPtr;
RefreshRenderedBufferPtr();
}
这有效而且听起来不错。但是,我担心通过覆盖 IOData->mBuffers[0].mData
,我可能会离开 mData
指向悬空的原始缓冲区,因此可能导致内存泄漏。在 InputCallback 过程中重写 IOData->mBuffers[0].mData
是否有问题?
最佳答案
在任何当前的 Apple arm64 CPU 上,每个样本的 memcpy 时间大约比采样率周期快 10,000 倍,因此不太可能是音频单元回调率的可测量百分比。因此交换缓冲区的执行速度不会明显加快。
但更大的问题是 NumFrames 不能保证在 iOS 中的每个连续音频单元回调之间保持相同,因此仅交换缓冲区指针与复制请求的样本或音频帧的确切数量不同。根据 iOS 设备上的其他事件(省电模式、通知、电话、按键等),您的音频会出现故障
此外,如果你没有分配它,你就不知道你换出的 IOData 缓冲区的内存分配大小,如果音频单元采用不同的大小,这可能是内存损坏的另一个可能来源。
关于c++ - 覆盖 AudioBufferList.mBuffers[0].mData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578439/
我有一个带有渲染回调的 RemoteIO 音频单元。我已经有一个渲染音频缓冲区,出于性能原因,我想避免使用 memcpy。 OSStatus FMixerPlatformAudioUnit::Audi
当 mbuffer 在接收端完成时,它会打印时间和速度,我想将其放入 $time 和 $speed . 尝试实现 this回答 #!/bin/bash exec 3>&1 4>&2 #set up e
我有一个备份脚本,它正在运行中生成一个 tar 并且将其管道传输到 mbuffer。然后将数据写入磁带驱动器 (LTO3) 我发现 mbuffer 会减慢带宽,我不明白为什么。 这里是 2 个命令和它
我们正在使用 AudioUnits 输入回调来处理传入缓冲区。音频单元设置主要取自 https://github.com/robovm/apple-ios-samples/blob/master/au
我是一名优秀的程序员,十分优秀!