gpt4 book ai didi

ios - 是否有一种方法比 NSKeyedArchiver 使用更少的内存来归档对象?

转载 作者:行者123 更新时间:2023-11-29 05:30:20 25 4
gpt4 key购买 nike

我创建了一个 ReplayKit 广播扩展,因此我可以使用的最大内存量是 50 MB。

我正在获取广播流的样本,以通过 CFMessagePortSendRequest 调用发送这些图像。由于该函数仅接受 CFData 类型,因此我需要将多平面图像转换为数据。

NSKeyedArchiver.archivedObject() 似乎超过了 50 MB。在调用之前断开线路,我可以看到约 6 MB 的内存消耗。然后,执行 archivedObject 调用时,我的扩展程序崩溃,因为它超出了内存限制。

是否有一种内存消耗更少的方法将 CVPixelBuffer 的 CIImage 转换为 Data?当然,然后又回来了。

最佳答案

我能够通过以下方式将 CMSampleBufferRef 转换为 NSData。此方法使用 1-5~MB 内存。我希望这能解决您的问题。

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBufferType);
UInt8* bap0 = CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0);
CVPixelBufferLockBaseAddress(imageBuffer,0);

int byteperrow = CVPixelBufferGetBytesPerRowOfPlane(imageBuffer, 0);
int height = CVPixelBufferGetHeight(imageBuffer);
NSData *data = [NSData dataWithBytes:bap0 length:byteperrow * height];

关于ios - 是否有一种方法比 NSKeyedArchiver 使用更少的内存来归档对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660662/

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