Android — получить GraphicBuffer из OMX и сохранить его (заблокировать переопределение данных из декодера)

Может ли кто-нибудь помочь мне сохранить графический буфер от OMX без копирования, пожалуйста?

Я извлекаю графический буфер из Android OMX, используя stagefright (в медиа-буфере), и я хотел бы сохранить его и отобразить позже, пока я все еще декодирую новые данные.

Для этого я могу сделать memcpy для графического буфера (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);

==> Это довольно быстро, потому что здесь я просто храню указатель. Обычно графический буфер будет доступен, пока я сохраняю ссылку на него (принцип умного указателя). К сожалению, это решение не работает, потому что я продолжаю декодировать данные, и кажется, что декодер записывает в gborg новые данные. Вы знаете, как я могу хранить старые данные без копирования столько, сколько я хочу, пожалуйста? Можем ли мы указать OMX, что графический буфер не должен быть переопределен новыми данными?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]