ios - 使用 AVAudioPCMBuffer 将浮点值写入 C# 中的浮点指针数组(不安全或安全)

标签 ios .net c#-4.0 mono xamarin.ios

虽然我不太习惯在 C# 中使用不安全的上下文,但我知道有时我可能不得不使用它。

为了正确处理它,为了将字节值写入 IntPtr,我可以从安全的上下文中编写以下内容:

for (int i = 0; i < counter; i++) 
{
    System.Runtime.InteropServices.Marshal.WriteByte (data, i, 0);
}

我如何在不安全的上下文中执行相同的操作?

更具体地说,我实际上是在尝试将浮点值写入一个实际上是 float 组指针的 Intptr 变量。我没有看到任何重载能够在安全的上下文中使用 System.Runtime.InteropServices 处理写入 float 据。

我尝试了以下但得到了错误:

malloc:对象 0x17e9eca4 的 *** 错误:释放对象的校验和不正确 - 对象可能在释放后被修改。

var data = (float*)buffer.FloatChannelData;

for (int i = 0; i < buffer.FrameLength; i++) 
{
    data [i] = 0.0f;
    *data++ = 0.0f; // also tried this but got the same error
}

非常感谢您的帮助。

其他详细信息:

我正在尝试将数据写入 Xamarin.IOS 中的 AudioPCMBuffers。我认为缓冲区包含一个 float 数组,但正如@Passant 在评论中指出的那样,它实际上包含一个指向 framelength float 数组的指针数组。同样的前提适用,无论是从安全还是不安全的上下文,我都希望能够将数据写入缓冲区。一个例子会很有帮助。感谢并为造成的困惑道歉

最佳答案

Rolf's问题的答案在这里:

Try this: https://gist.github.com/rolfbjarne/dc947383a6c9172bc664

It will mix mic input with a sine wave.

关于ios - 使用 AVAudioPCMBuffer 将浮点值写入 C# 中的浮点指针数组(不安全或安全),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324641/

相关文章:

c# - 根据以前的 XML 组合框选择填充组合框

c#-4.0 - C# for 循环增加 2 麻烦

ios - UISearchBar 不会在 UISplitviewController Master 中响应

ios - 我如何处理我已经接管的项目的分配?

.net - azure 搜索 search.ismatch 忽略末尾的 "1"

c# - 如何在 C# 中创建 EPS 文件?

c# - 如何创建没有选项卡标题的 TabControl?

c# - 如何在钢笔绘制的形状中填充颜色

iphone - iPad 自定义键盘样式?

ios - 自定义 UIScrollView 的 subview 未获取点击事件