有人可以帮我保持OMX的图像缓冲区没有复制吗?
我使用stagefright(在mediabuffer中)从Android OMX中检索图形缓冲区,我希望将其存储并稍后显示,而我仍在解码新数据。
要做到这一点,我可以按如下方式记录图形缓冲区(gborg):
gborg->lock(GRALLOC_USAGE_SW_READ_OFTEN, (void**)(&imgorg));
gb->lock(GRALLOC_USAGE_SW_WRITE_OFTEN, (void**)(&img));
memcpy(img,imgorg,sizeToCopy);
gb->unlock();
gborg->unlock();
问题是副本太长了!
所以我尝试创建一个新的图形缓冲区,如下所示: MediaBuffer * buffBis = nex MediaBuffer(gborg);
==>这是非常快的,因为在这里我只存储指针。通常只要我保留一个参考(智能指针的原理),图形缓冲区就可用。不幸的是,这个解决方案不起作用,因为我一直在解码数据,似乎解码器写入了新的数据。只要我想要,你知道如何保存旧数据而无需复制吗?我们是否可以向OMX表明不得使用新数据覆盖图形缓冲区?