从OMX获取GraphicBuffer并保留它(阻止数据覆盖解码器)

时间:2014-07-22 17:03:48

标签: android c++ multimedia graphic stagefright

有人可以帮我保持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表明不得使用新数据覆盖图形缓冲区?

0 个答案:

没有答案