Ios 将音频CMSampleBuffer转换为MTLBuffer

Ios 将音频CMSampleBuffer转换为MTLBuffer,ios,swift,metal,cmsamplebuffer,mtlbuffer,Ios,Swift,Metal,Cmsamplebuffer,Mtlbuffer,将音频CMSampleBuffer缓冲区转换为MTLBuffer缓冲区最有效的方法是什么?我还希望尽可能高效地将MTLBufferbuffers转换回CMSampleBufferbuffers 我是否需要首先将音频CMSampleBuffer转换为NSData,然后使用makeBuffer(字节nocopy指针:UnsafeMutableRawPointer,长度:Int,…)?还是有更直接的方法?您是在音频或视频采样缓冲区上操作?无论哪种方式,您都不需要查看NSData;您可以向示例缓冲区请求

将音频
CMSampleBuffer
缓冲区转换为
MTLBuffer
缓冲区最有效的方法是什么?我还希望尽可能高效地将
MTLBuffer
buffers转换回
CMSampleBuffer
buffers


我是否需要首先将音频
CMSampleBuffer
转换为NSData,然后使用
makeBuffer(字节nocopy指针:UnsafeMutableRawPointer,长度:Int,…)
?还是有更直接的方法?

您是在音频或视频采样缓冲区上操作?无论哪种方式,您都不需要查看NSData;您可以向示例缓冲区请求相应的块缓冲区或图像缓冲区,从中可以获得指向数据的原始指针。如果你打算用金属加工,你可能会想在每个方向都复制一份;否则,您将保留可能位于受严格限制的池(例如
CVPixelBufferPool
)中的资源,其保留时间将超过它们严格保持活动的时间。多亏了您的帮助,我已经有了像素缓冲区。现在我尝试添加一些音频处理。谢谢你的建议。你是在操作音频或视频样本缓冲区吗?无论哪种方式,您都不需要查看NSData;您可以向示例缓冲区请求相应的块缓冲区或图像缓冲区,从中可以获得指向数据的原始指针。如果你打算用金属加工,你可能会想在每个方向都复制一份;否则,您将保留可能位于受严格限制的池(例如
CVPixelBufferPool
)中的资源,其保留时间将超过它们严格保持活动的时间。多亏了您的帮助,我已经有了像素缓冲区。现在我尝试添加一些音频处理。谢谢你的建议。