联系qq 1923962282@qq.com
由上一篇文件介绍hal 架构在v4l2上面进行了封装那么hal中如何去拿到拍照数据流尼
QCameraPostProc.cpp doReprocess()//拍照
QCamera2HWICallbacks.cpp synchronous_stream_cb_routine//预览
QCamera2HWICallbacks.cpp video_stream_cb_routine//录像
下面讲述一下简单的获取yuv拍照数据流算法处理过程在原来的doReprocess()函数增加下面加粗的代码
在这里添加我们自己的算法
memcpy(dataz,(unsigned char *)pReprocFrame->buffer,768*512*3/2);
/这里添加我们的算法对dataz buf处理/
memcpy((unsigned char *)pReprocFrame->buffer,dataz,768*512*3/2);//拷贝回去
if (mPPChannels[mCurChannelIdx] != NULL) {
ppreq_job->reprocCount = (int8_t) (mCurReprocCount + 1);
if ((m_parent->isRegularCapture()) || (ppreq_job->offline_buffer)) {
m_bufCountPPQ++;
if (m_ongoingPPQ.enqueue((void *)ppreq_job)) {
pthread_mutex_lock(&m_reprocess_lock);
ret = mPPChannels[mCurChannelIdx]->doReprocessOffline(ppInputFrame,
meta_buf, m_parent->mParameters);
if (ret != NO_ERROR) {
pthread_mutex_unlock(&m_reprocess_lock);
goto end;
}
if ((ppreq_job->offline_buffer) &&
(ppreq_job->offline_reproc_buf)) {
mPPChannels[mCurChannelIdx]->doReprocessOffline(
ppreq_job->offline_reproc_buf, meta_buf);
}
pthread_mutex_unlock(&m_reprocess_lock);
} else {
LOGW("m_ongoingPPQ is not active!!!");
ret