




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文以Hi3559V100描述为例,未有特殊说明,Hi3556V100与Hi3559V100
数据容量(RAM容0b000、X1例如:00X表示000或001;1XX表示
前 流 Master初始 Slave初始 HAL适 WIFI模块适 ReferenceSample中Flash分 图1-1功能模块层 图1-2模式切换流 图1-3初始化/去初始化流 图1-4设置编码格式流 图1-5基本流 图1-6流程 图1-7基于场景自适应的拍照流 图1-8处理示例流 图1-9参数布局示意 图1-10主要界 图1- 图3-1开机性能统计信息示 图3-2Flash分区对比说 图3-3ReferenceSample内存占用说 DV、DashCam。下面以DV为例,对总体框架和各功能模块做了简介。流局在master端程序,运行在Linux核(A7)上;业务布局在slave端程序,运行在LiteOS核(A17)上。master端程序程序包含参数模块、UI、HTTPServer、 块、工作模式、模块、模块、拍照模块、回放模块、流、文件管理、程。可参考《Hi3559V100/Hi3556V100SDK需要说明参考设计分为普通版本和快速启动版本,两个版本的master端程序是一致common│││││//│//││build│product││├──│││build│││halHAL│││├──init_mastermaster│││├── │││parameters│││rootfs││└──│ ├── ├── ├── vodHttpServer ├──│ //UVC└── 第一种是数据通路变更或参数变更,例如单拍模式切换到模式,这种场景需要去初始化模块,以新模式的参数重新初始化;第二种是参数不变,例如1080P60普通切换到1080P循环,12M的5连拍换到12M的定时拍,这种场景不发生变化,仅对或拍照任务的相YN 模式启停接口封装了和拍照业务的启动和停止处理流程,在不同的场景下,会根另外,在缩时这个特殊模式下,调用模式启动接口会移除流,因为缩时采用的是单帧请求的编码方式,编无法产生连续的帧数据。缩时停止后模块代码位于dv_reference\source\workmode\init\hi_product_workmode_init.c和在开关机流程、模式切换流程和/点播启停流程中使用;第二类是配置项接口,包一个互逆的流程,按照以下顺序调用mapi提供的接口来实现:在快速启动版本中,slave包含了初始化流程,因此这部分代码是 LiteOSAPP和LinuxAPP初始化都通用的代码,因此把它们合二为一,共用一份初始化代码,位于 dv_reference\source\workmode\host和dv_reference\source\workmode\slave 译选项(OS_TYPE:= 用,例如子码流编码既作为小分辨率码流,又作为实时流。和公用同一个编,这样在或启动停止时,为了不互相影响,需要在参考设计增加一组计数的编码启停封装接口(HI_PDT_Media_VencStart和H_PDT_Meda_ec口,重复启动只增加计数;在外部业务停止编码时移除计数,当计数时调用venc化,流程如图1-4所示。
同 的流程如图1-5所示。编
道、文件后缀类型以及录制倍速参数,普通设置倍速为1。参考设计实现的循环方式是采用5个文件为一组的组内循环方式,即开启循环录接口中体现。相比于普通,循环只需要在处理函数中添加组内文件计数 的目标帧率30fps为例,如果缩时间隔时间是2s,那么编 以倍速speed=目标帧率30÷实际帧率0.5=60,实际 与缩时刚好相反,实际的效果是慢动作。慢速的流程与普 相同,只需要在创建主码流任务时设置倍速为需要慢放的速度即可。以录制文件的目标帧率30fps为例,如果编 帧率30÷实际帧率240=1/8,实际 出来的文件就是1/8倍慢放的效果。
任务的同时,启动了间隔拍照的任务,间隔拍照参考“多 拍照模块代码位于dv_reference\source\workmode\src\hi_product_photo.c和模式。的基本流程如图1-6所示,不同模式依赖上下文模块初始化流程和销 步骤1.启动任务步骤2.设置VCap属性,HI_MAPI_VCap_SetSnapAttr,设置当前拍照属性帧率为Sensor帧率,帧数为1。步骤3.启动VCap,HI_MAPI_VCap_Trigger*2隔3秒一张。步骤3.停止时,销毁定时器。HI_Timer_Destroy。步骤1.启动任务步骤2.设置VCap属性,HI_MAPI_VCap_SetSnapAttr,对于10p/1s设置当前拍照属性为NORM模式下对应的拍照属性,其中普通拍照参数对应的帧率为10,总帧数10。步骤3.启动VCap,HI_MAPI_VCap_Trigger连拍模式:触发拍照后,按照一定的速率拍摄连续,例如5帧每s的速率抓步骤1.启动任务步骤2.设置VCap属性,HI_MAPI_VCap_SetSnapAttr,对于10p/1s设置当前拍照属性为NORM模式下对应的拍照属性,其中普通拍照参数对应的帧率为10,总帧数10。步骤3.启动VCap NORMAL:只有在NORMAL模式下,可以手动设置调节值Exposure,快门HDR场景,为普通拍照或者长拍照触发触发设置HDR步骤1.启动任务步骤2.设置VCap属性为HI_MPP_SNAP_MODE_PROTUNE,设置帧数为推荐帧数(一般为3帧),对于每一帧的属性设置,一般为一帧长,一帧正常,一帧3.VProcPHOTO_PROC_TYPE_HDR处理,以及相关算法参步骤4.启动VCap
步骤1.启动任务步骤2.设置VCap属性为HI_MPP_SNAP_MODE_NORMAL,帧数为场景推荐帧数(一般为5帧),调用HI_MAPI_VCap_SetSnapAttr;步骤4.启动VCap步骤1.启动任务步骤2.设置VCap属性为HI_MPP_SNAP_MODE_PROTUNE,帧数为场景推荐帧数(一般为1帧),对每一帧的参数设置为场景推荐参数,调用步骤3.启动VCapHI_MAPI_VCap_Trigger步骤1.启动任务步骤2.设置VCap属性为HI_MPP_SNAP_MODE_PROTUNE,帧数为场景推荐帧数(一般为5帧),设置每一帧的参数为场景推荐参数,调用步骤4.启动VCap产品层在界面设置拍照场景后,仅代表后续拍照采用的场景,并未对VCap以及 文件浏览对应代码为filelist_page.c,filelist_page.xml,以scrollgrid控件为实现主要DATArownum="2"colnum="2"224个单元格;scrollgrid可scrollgridcol表示,cellcolnum="5"5个",field="thumbnail:string:256;grptype:string:8;duration:string:16; 第1列为缩略图路径,缩略图为*.THM,缩略图就用*.JPG,HIGV会从2normmp4,slowmp4loopmp4,single,burstcontinu,lapse;第3列为持续时长或文件数量字符串;colbinddb="yes“col XX_GetTypeIcon(),经 onv="SCROLL_GRID_GetTypeIcon于选中状态则执行勾选操作(勾选的Group索引都会放在链表中,否则回放文件。流文件较大,考虑到性能和效果,回放采用的小码流文件(LRV)进行回pause/resumeseek操作。回放文件时会启动ndk的音频输出dv_reference\source\eventproc,该模块是参考设计各业务模块的消息集散中心。在系统初始化时,向各个模块接收函数,其主要功能是接受消息并将其记录到消息处理队列中,模块内部有一个轮询处理线依次
dv_reference\source\devmng,该模块包含主要外设的初始wifi,按键,LCD屏等。同时对上层提供开关屏幕、wifi开关、自动关机产品层原始的参数保存在ini文件中,位于 sensor配置参数,例如config_product_media_4k2k30_rec.ini,该参数仅在4K2K@30fps的录件中,一个是通用参数config mon.ini(包含音频属性、OSD属性、rotate属性、ldc属性、编码格式等另一个是特定模式的参数config_product_media_xxx.ini(包含分辨率,帧率,通路绑定关系等两部分参体通路绑定关系。具体修改方法参考2.2“ini参数使用和修改方法”。 这部分代码位于dv_reference\product\hi3559\parameters\ini2bin,编译成一个独立的分区或参数文件,这部分代码位于dv_reference\source\param flash中,开机后在uboot下加载paramdef到参数区进行使用,具体方案参考dv_reference\source\storagemngSD卡设备请自行替换格式化工具,比如dosfstools。文件管理模块代码位于dv_reference\source\filemng ,该模块封装了middleware的filemgr接口,包含文件管理初始化流程,同时对组文件列表的操作进行了进一步封流
流模块代码位于dv_reference\source\streamserver,该模块主要功能是提供网络实时流。在模式下可以主码码流,而在拍照模式只能子码 HTTPServerHTTPServer80端口的StreamServer继续处理流程。如果是非流请求,则会当普通的http请求消息处理,这部分的处理流程参考1.3.15“HTTPServer”。├──│ .c├──├──│ //利用*.xml布局,├──│├──higv_cextfile.h利用*.xml,xml2binskin,viewID│ │ │└──├──├──│├──││└──│ │└── └──├──│├──││└── │└── UI └──└──├── ├── ├── SD 户端发送消息,例如{"mode":10,"state":1,"event":2,"pasttime":3}。有四类主工作模式:0Photo,1Multi,2Record,3 10Burst12Continuous20212223+拍24消息中的state表示是否处于工作状态:正在Timelapsehi_key_mng.c中的_key_check()线程定期循环检测,检测到相应的按键定的onkeydown、onkeyup函数。Window或View在显示并激活后才能接收按键在显示时会调用HOME_PAGE_OnShow(),隐藏时调用HOME_PAGE_OnHide(),HOME_PAGE_OnShow()中会启动定时器,定时器到期时,HIGV回调HOME_PAGE_OnTimer(),在此会刷新界面,由于定时器是的,为了定期刷_PAGE的显示在中键(HIGV_KEY_F2)分支中处理;的启停、拍照在右键(HIGV_KEY_F1)HOME_PAGE_OnGestureFling处理,中将其转换成按键。界面刷新由HOME_PAGE_Refresh统一处理,根据当前的工用此刷新函数。HIGVUI管理是单线程操作,在线程中不能直接调用HI_GV_Widget_Show、HI_GV_Widget_Active等函数,所以如果需要异步刷新,可以向HOME_PAGE发送,例如HI_GV_Msg_SendAsync(HOME_PAGE,HIGV_MSG_EVENT,UI_EVENT_REFRESH_HOME_PAGE,0),之后HIGV回调HOME_PAGE_OnEvent,在其中调用刷新函数。后两个参数(HIGV_MSG_EVENT和Master置了USB网卡,但在快速启动版本中,需要手动调用/komod/USB2.0net进行USB驱动加载。启动main_app。mmcAPP中根据启动需要加载mmcko。Slave HI_PDTCustomMsg 如果不需要快速启动,则无需调用录,主要用于接收http消息(其中包含http流消息的分发处理,另一部分位于dv_reference\source\vodhttp报文解析和处理,包含模式切换、HALWIFIWifiHI_HAL_WIFI_Initwifi驱动、HI_HAL_WIFI_Deinit关闭wifi、HI_HAL_WIFI_GetParam功能为获取wifi属性、HI_HAL_WIFI_SetParam功能为设置wifi属性,请根据自身单板所用的wifi组件,将对应的函数实现即可。ini例1.修改主码流的编码格式 4K30模式的小码流属于特定模式的属性,需要修改指定模式对应的配置文件config_product_media_4k2k30_rec.ini,在[venc.x]中找到type类型为Sub 器,修改res_width和res_height,同时bufsize大小需满足修改后的分辨率,具体计算方式请参考《HiMAPIV1.0处理开发参考》文档中4.4节HI_VENC_TYPE_ATTR_S数据类型的注意事项。屏,只需要将config mon.ini中的rotate_type改为0即可以下是CFG_OSD_ON开关说明:LiteOSMMZ以下是 试LiteOS用。说明:此宏开关关闭后,LinuxAPP/LiteOSAPP中的所有DEBUG/WARN在调试期间,如果CFG_DEBUG_LOG_ON开关为yes,可以在 LiteOS端,输入TIME_STAMP标记来进行统计和查看。说明:此功能打开后,会统计启动时间,并且对启动性能无影响。Linux5S在代码中添加“TIME_STAMP;”来添加统计信息。mini-ubootstart.Stimer2_init函数调用开始统记,否则从LiteOSAPP的os_init_debug_timer2函数调用开始统记。− − − − APP− Linuxfunc:TIME_STAMPustype所在的启动阶段打在LiteOS端,也可以通过命令time_stamp来打印启动时间,使在业务运行期间,如果有需要优化运行性能,也可以通过TIME_STAMP标记来进行统计和查数文件。RAW_PARAM方式需要在FLASH分区中有"ra "paramdef"三个分区,每个分区至少占用一个块,在nandFLASH上需要考虑坏块问题,因此一般配置为1+3即至少4个块。在LinuxAPP代码中,每个分区目前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机场地勤设备租赁协议
- 脚手架劳务分包承包合同4篇
- 采购混凝土合同2篇
- 有限公司解散协议范本5篇
- 地砖工程专项施工方案
- 填方砂施工方案
- 诸暨酒店装修施工方案
- 厕所排气扇安装施工方案
- 2026届山西省运城市万荣县英语九年级第一学期期末教学质量检测试题含解析
- 2026届上海市交大二附中化学九上期末监测试题含解析
- 视网膜中央动脉阻塞的急救和护理
- 国际金融学 第一章 国际收支 南京大学商学院
- HY/T 087-2005近岸海洋生态健康评价指南
- GB/T 5563-2013橡胶和塑料软管及软管组合件静液压试验方法
- GB/T 3600-2000肥料中氨态氮含量的测定甲醛法
- GB 2715-2005粮食卫生标准
- OA流程表单案例
- 医师多点执业注册申请表
- 《边坡稳定性分析》课件
- 刮板输送机-课件
- 深信服防火墙技术方案
评论
0/150
提交评论