gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:53 25 4
gpt4 key购买 nike

虽然我不太习惯在 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/

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