获取已处理的图像数据
视频数据获取功能的完整接口调用流程请参见
接口调用流程
,本节仅描述该完整流程中的其中一步“获取已处理的图像数据”。
获取YUV数据
VI图像处理完成后,可在对应的VI通道上获取已完成图像并进行相关处理,典型接口调用流程如下:
(可选)通过系统文件句柄+select/epoll等待机制,等待图像处理完成事件,可通过
hi_mpi_vi_get_chn_fd
接口获取指定通道的系统文件句柄,然后获取并处理完一帧图像数据后,会唤醒系统的select/epoll读等待请求。
调用
hi_mpi_vi_get_chn_frame
接口,获取已处理完成的图像数据。此时图像数据对应内存资源会自动被用户占用,用户必须在处理完图像数据后,调用
hi_mpi_vi_release_chn_frame
接口释放对应图像的内存资源。
如果用户通过
hi_mpi_vi_get_chn_frame
接口获取到图像数据后,要再发布给其他进程使用,则可通过返回的hi_video_frame.user_data[0]得到acltdtBuf句柄,再结合acl的共享buf管理接口(如acltdtCopyBufRef)以及共享队列管理接口(如acltdtEnqueue)将对象发布给其他进程使用。
获取RAW数据
VI图像处理完成后,可在对应的VI PIPE上获取已完成图像并进行相关处理,典型接口调用流程如下:
(可选)通过系统文件句柄+select/epoll等待机制,等待图像处理完成事件,可通过
hi_mpi_vi_get_pipe_fd
接口获取指定通道的系统文件句柄,当后台获取并处理完一帧图像数据后,会唤醒系统的select/epoll读等待请求。
调用
hi_mpi_vi_get_pipe_frame
接口,获取已处理完成的图像数据。此时图像数据对应内存资源会自动被用户占用,用户必须在处理完图像数据后,调用
hi_mpi_vi_release_pipe_frame
接口释放对应图像的内存资源。
如果用户通过
hi_mpi_vi_get_pipe_frame
接口获取到图像数据后,要再发布给其他进程使用,则可通过返回的hi_video_frame.user_data[0]得到acltdtBuf句柄,再结合acl的共享buf管理接口(如acltdtCopyBufRef)以及共享队列管理接口(如acltdtEnqueue)将对象发布给其他进程使用。
父主题:
视频数据获取