标签:CAMERA SprdCamera3Stream addr buffer Camera uint cpp handle cmr
展锐平台hal下的SprdCamera3Stream.cpp文件路径如下:
vendor\sprd\modules\libcamera\hal3_2v6\SprdCamera3Stream.cpp
该文件内容不多,主要是维护如下几个成员变量
camera_stream_type_t mStreamType;
int32_t mWidth;
int32_t mHeight;
Vector<hal_buff_list_t *> mBufferList;
mMemory = new SprdCamera3GrallocMemory();
其中streamType为枚举类型:
typedef enum {
CAMERA_STREAM_TYPE_DEFAULT,
CAMERA_STREAM_TYPE_PREVIEW,
CAMERA_STREAM_TYPE_VIDEO,
CAMERA_STREAM_TYPE_CALLBACK,
CAMERA_STREAM_TYPE_YUV2,
CAMERA_STREAM_TYPE_ZSL_PREVIEW,
CAMERA_STREAM_TYPE_PICTURE_SNAPSHOT,
CAMERA_STREAM_TYPE_MAX,
} camera_stream_type_t;
从名字看很容易理解,有预览、拍照、录像等类型。
SprdCamera3Stream.cpp有如下buffer系列函数:
buffDoneQ2(uint32_t frameNumber,buffer_handle_t *buffer)
buffDoneQ(uint32_t frameNumber,buffer_handle_t *buffer)
buffDoneDQ(uint32_t frameNumber,buffer_handle_t **buffer)
buffFirstDoneDQ(uint32_t *frameNumber,buffer_handle_t **buffer)
前两个是向 mBufferList 中push 对象
后两个是向 mBufferList 中pop对象
还有一个系列方法:从mBufferList中获取特定数据,主要内容都是在遍历mBufferList集合,从中选出需要的数据。
getQBuffFirstVir(cmr_uint *addr_vir)
getQBuffFirstPhy(cmr_uint *addr_phy)
getQBuffFirstFd(cmr_s32 *fd)
getQBuffFirstNum(uint32_t *frameNumber)
getQBufAddrForNum(uint32_t frameNumber,cmr_uint *addr_vir, cmr_uint *addr_phy,cmr_s32 *fd)
getBufAddrForDualVideo(hal_mem_info_t *buf_mem_info,cmr_uint *addr_vir,cmr_uint *addr_phy, cmr_s32 *fd)
getQBufHandleForNum(uint32_t frameNumber,buffer_handle_t **buff)
getQBufHandle(cmr_uint addr_vir, cmr_uint addr_phy,cmr_s32 fd, buffer_handle_t **buff,void **prevGraphBuffer)
getQBufNumForVir(cmr_uint addr_vir,uint32_t *frameNumber)
getQBufForHandle(buffer_handle_t *buff,cmr_uint *addr_vir, cmr_uint *addr_phy,cmr_s32 *fd)
getQBufInfoForHandle(buffer_handle_t *buff,cam_buffer_info_t *bufInfo)
getQBufFirstBuf(cam_buffer_info_t *bufInfo)
以上就是SPrdCamera3Stream.cpp文件的主要内容,本身代码量和逻辑都不复杂。主要是封装并维护一些数据,提供对数据访问的接口供外界调用。
标签:CAMERA,SprdCamera3Stream,addr,buffer,Camera,uint,cpp,handle,cmr 来源: https://blog.csdn.net/u010869159/article/details/120135382
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。