virtual void onFrameAvailable() { BufferQueue::BufferItem item; item.mBuf = -1; //DEBUG("Create Item Slot %d item %p\n", item.mBuf, &item); int err = (int) m_consumer->acquireBuffer(&item, 0); if (err == BufferQueue::NO_BUFFER_AVAILABLE) { // shouldn't happen DEBUG("fillCodecBuffer_l: frame was not available\n"); return ; } else if (err != 0) { // now what? fake end-of-stream? DEBUG("fillCodecBuffer_l: acquireBuffer returned err=%d\n", err); return; }else{ DEBUG("Get BufferSlot %d item %p\n", item.mBuf, &item); } sp<GraphicBuffer> buffer = item.mGraphicBuffer; if (buffer.get()){ m_GBufslot[item.mBuf].graphicBuffer = buffer; }else{ buffer = m_GBufslot[item.mBuf].graphicBuffer; } DEBUG("Get a openGlES colorformat %#x usage %#x slot %d\n", (int) buffer->getPixelFormat(),buffer->getUsage(), item.mBuf); m_consumer->releaseBuffer(item.mBuf, item.mFrameNumber, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, Fence::NO_FENCE); //DEBUG("releaseBuffer idx: %#x status_t : %d\n", item.mFrameNumber, ret_s); DEBUG("Release Buffer slot %d\n", item.mBuf); }
virtual void onFrameAvailable(const android::BufferItem& /*item*/) { #if ANDROID_SDK_VERSION == 22 IGraphicBufferConsumer::BufferItem item; #elif ANDROID_SDK_VERSION == 23 android::BufferItem item; #endif int err = (int) m_consumer->acquireBuffer(&item, static_cast<nsecs_t>(0)); if (err != 0) { printf("acquireBuffer failed!\n"); return; } m_consumer->releaseBuffer(item.mBuf, item.mFrameNumber, \ EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, Fence::NO_FENCE); }