rv1108-evb-v12 sdk的视频拍照的流程 (2)

这篇博客详细解析了rv1108-evb-v12 SDK在接收到拍照指令后的处理流程,包括内存分配、摄像头硬件调用、图片存储在SD卡以及向地面端发送应答消息的机制。分析了关键函数如NV12_MJPG::processFrame和video_record_getfilename,以及系统初始化和回调函数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇分析了当飞机空中端接收用户地面端发送的拍照命令后,软件回调的执行。但是还没有说明图片的存储和传送这块还没有分析到。所以接下来就是分析图片的存储和发送流程。


通过终端的调试打印信息来看,当接收到地面端的拍照指令后,执行文件app\video\process\nv12_process.cpp中的类NV12_MJPG中的公有成员方法StreamPUBase中的函数processFrame。主要是获取拍照的分辨率然后根据分辨率分配ion内存的大小。
 

bool processFrame(shared_ptr<BufferBase> inBuf,  shared_ptr<BufferBase> outBuf)

    video_rga_photo_process(video, inBuf->getFd(), inBuf->getWidth(), inBuf->getHeight(), inBuf->getVirtAddr());
        video_ion_alloc(&video->photo.rga_photo, width, height)
            video_ion_alloc_rational(video_ion, width, height, 3, 2);
                video_ion_alloc_buf(video_ion);
        vpu_nv12_encode_jpeg_doing(&video->photo.encode[video->photo.num],
                               buffer, fd, size_ext);

分配了ion内存后,调用vpu_nv12_encode_jpeg_doing(&video->photo.encode_ext[video->photo.num], buffer_ext, fd_ext, size_ext);就开始执行驱动部分的代码 kernel/arch/arm/mach-rockchip/vcodec_service.c。这里应该就是调用了底层的摄像头硬件作出牌照操作。

pr_info("%s: power on\n", dev_name(pservice->dev));对应的log信息:vcodec_service: 30000000.vpu_service: power on


 

rk1108\app\video\process\video.cpp

video_record_addvideo(int id,struct ui_frame* front,struct ui_frame* back,struct ui_frame* cif,char rec_immediately,char check_record_init)
    pthread_create(&video->record_id, &attr, video_record, video)
        static void* video_record(void* arg)
            {
                ...
                 while (video-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值