/****************************************************************************** * REPEAT:[ dequeProvider() -> enqueProvider() ] * dequeProvider() returns false immediately if empty. *******************************************************************************/ bool ImgBufQueue:: enqueProvider(ImgBufQueNode const& rNode) { if ( ! rNode ) { MY_LOGW("buffer is NULL"); return false; } // Mutex::Autolock _lock(mDoneImgBufQueMtx); // MY_LOGV_IF( ENABLE_LOG_PER_FRAME, "+ Que.size(%d); (CookieED/CookieDE)=(%p,%p) %s; Buffer[%s@0x%08X@%d@%s@(%d)%dx%d@%d@Timestamp(%lld)]", mDoneImgBufQue.size(), rNode.getCookieED(), rNode.getCookieDE(), ImgBufQueNodeStatus2Name(rNode.getStatus()), rNode->getBufName(), rNode->getVirAddr(), rNode->getBufSize(), rNode->getImgFormat().string(), rNode->getImgWidthStride(), rNode->getImgWidth(), rNode->getImgHeight(), rNode->getBitsPerPixel(), rNode->getTimestamp() ); // mDoneImgBufQue.push_back(rNode); mDoneImgBufQueCond.broadcast(); // return true; }
bool BaseCamAdapter:: sendFrameToObservers(CamFrame*const frame, FrameObservers_t const& rObservers) { MY_LOGV_IF(ENABLE_LOG_PER_FRAME, "+ frameType(0x%x)", frame->mType); // cam_frame_callback callback = NULL; // for (uint_t i = 0; i < rObservers.size(); i++) { { RWLock::AutoRLock _l(mRWLockFrameNotifier); // if ( i >= rObservers.size() ) { MY_LOGW("break loop since i(%d) >= rObservers.size(%d)", i, rObservers.size()); break; } // frame->mCbCookie = rObservers.keyAt(i); callback = rObservers.valueAt(i); } // MY_LOGV_IF(ENABLE_LOG_PER_FRAME, "i(%d), (frameType, cookie, callback)=(0x%x, %p, %p)", i, frame->mType, frame->mCbCookie, callback ); // if ( ! callback ) { MY_LOGW("null callback for frameType(0x%x)", frame->mType); continue; } // frame->incRef(); callback(frame); } // return true; }