void DisplayClient:: enquePrvOps(sp<StreamImgBuf>const& rpImgBuf) { mProfile_enquePrvOps.pulse(); if ( mProfile_enquePrvOps.getDuration() >= ::s2ns(2) ) { mProfile_enquePrvOps.updateFps(); mProfile_enquePrvOps.showFps(); mProfile_enquePrvOps.reset(); } // status_t err = 0; // CamProfile profile(__FUNCTION__, "DisplayClient"); profile.print_overtime( ((1<=miLogLevel) ? 0 : 1000), "+ locked buffer count(%d), rpImgBuf(%p,%p), Timestamp(%lld)", mStreamBufList.size(), rpImgBuf.get(), rpImgBuf->getVirAddr(), rpImgBuf->getTimestamp() ); // // [1] unlock buffer before sending to display GraphicBufferMapper::get().unlock(rpImgBuf->getBufHndl()); profile.print_overtime(1, "GraphicBufferMapper::unlock"); // // [2] Dump image if wanted. dumpImgBuf_If(rpImgBuf); // // [3] set timestamp. err = mpStreamOps->set_timestamp(mpStreamOps, rpImgBuf->getTimestamp()); profile.print_overtime(2, "mpStreamOps->set_timestamp, Timestamp(%lld)", rpImgBuf->getTimestamp()); if ( err ) { MY_LOGE( "mpStreamOps->set_timestamp failed: status[%s(%d)], rpImgBuf(%p), Timestamp(%lld)", ::strerror(-err), -err, rpImgBuf.get(), rpImgBuf->getTimestamp() ); } // // [4] set gralloc buffer type & dirty #if ('1'==MTKCAM_HAVE_GRALLOC_EXTRA) ::gralloc_extra_setBufParameter( rpImgBuf->getBufHndl(), GRALLOC_EXTRA_MASK_TYPE | GRALLOC_EXTRA_MASK_DIRTY, GRALLOC_EXTRA_BIT_TYPE_CAMERA | GRALLOC_EXTRA_BIT_DIRTY ); #endif // // [5] unlocks and post the buffer to display. err = mpStreamOps->enqueue_buffer(mpStreamOps, rpImgBuf->getBufHndlPtr()); profile.print_overtime(10, "mpStreamOps->enqueue_buffer, Timestamp(%lld)", rpImgBuf->getTimestamp()); if ( err ) { MY_LOGE( "mpStreamOps->enqueue_buffer failed: status[%s(%d)], rpImgBuf(%p,%p)", ::strerror(-err), -err, rpImgBuf.get(), rpImgBuf->getVirAddr() ); } }
void DisplayClient:: cancelPrvOps(sp<StreamImgBuf>const& rpImgBuf) { // status_t err = 0; // CamProfile profile(__FUNCTION__, "DisplayClient"); profile.print_overtime( ((1<=miLogLevel) ? 0 :1000), "+ locked buffer count(%d), rpImgBuf(%p,%p)", mStreamBufList.size(), rpImgBuf.get(), rpImgBuf->getVirAddr() ); // // [1] unlock buffer before canceling GraphicBufferMapper::get().unlock(rpImgBuf->getBufHndl()); // profile.print_overtime(1, "GraphicBufferMapper::unlock"); // // [2] unlocks and cancel buffer. err = mpStreamOps->cancel_buffer(mpStreamOps, rpImgBuf->getBufHndlPtr()); if ( err ) { MY_LOGE( "mpStreamOps->cancel_buffer failed: status[%s(%d)], rpImgBuf(%p,%p)", ::strerror(-err), -err, rpImgBuf.get(), rpImgBuf->getVirAddr() ); } // // profile.print_overtime( ((1<=miLogLevel) ? 0 :10), "mpStreamOps->cancel_buffer, rpImgBuf(%p,%p)", rpImgBuf.get(), rpImgBuf->getVirAddr() ); }