11. 海思 MPP 平台的系统架构是什么VI、VPSS、VENC 三者之间的关系和数据流向是怎 样的答MPP 是海思提供的媒体软件处理平台屏蔽芯片底层硬件细节向应用提供 MPI媒体处理接口API。系统架构分四层硬件层Hi35xx 芯片外围器件、OS 层Linux、MPP层VI/VPSS/VENC 等模块、应用层用户开发的软件系统。数据流向VI视频输入通过 MIPI CSI 接口从 IMX586 采集 RAW Bayer 图像进入 VPSS视频处理子系统进行预处理去噪、缩放、锐化、畸变校正再送入 VENC视频编码输出 H.264/H.265 码流。12. MPP 系统中视频缓存池VB Pool的作用是什么在 Hi3516 上如何合理配置 VB 块大小和数量答VB Pool 是内存池提供大块物理连续内存供 VI、VPSS 等模块使用避免频繁分配释放导致内存碎片。配置 VB 块大小和数量需要平衡内存占用和帧率稳定性。之前遇到编码延迟从 200ms 降到 80ms就是调整 VB 块大小与编码图像尺寸匹配和缓存块数量保证流水线不阻塞实现的。【补充】VB PoolVideo Buffer Pool是海思 MPP预先申请的一组连续物理内存用来存放 VI、VPSS、VENC之间传递的图像帧。作用主要是避免视频运行过程中频繁申请和释放大块内存让 VI、VPSS、VENC共享图像缓冲区减少内存复制保证高分辨率、多路视频处理时的实时性。典型流程VB Pool分配图像块 ↓ VI采集一帧并写入VB ↓ VPSS读取并处理 ↓ VENC读取并编码 ↓ 所有模块释放后VB块回到池中复用VB块大小如何配置块大小由以下参数决定分辨率像素格式如 YUV420、RAW10位宽stride和内存对齐是否使用压缩格式。例如1920×1080的 YUV420图像理论大小为1920 × 1080 × 1.5 ≈ 3 MB但实际配置还要考虑宽高对齐、stride和压缩头不能直接写死。应调用海思 SDK提供的图像缓冲区大小计算接口再把结果配置给blk_size。概念示例vb_cfg.common_pool[0].blk_sizeget_pic_buffer_size(1920,1080,PIXEL_FORMAT_YUV420,...);vb_cfg.common_pool[0].blk_cnt8;不同 SDK版本的计算函数名称可能不同应以 Hi3516CV610 SDK头文件和 sample代码为准。VB块数量如何配置数量要覆盖各模块同时占用的帧数VI缓存 VPSS处理缓存 VENC编码缓存 安全余量例如单路1080P编码可以先配置约810块再根据运行情况调整块数太少可能出现获取 VB失败、丢帧、卡顿或无图。块数太多占用过多连续物理内存导致系统可用内存减少。多分辨率时通常建立多个 PoolPool 01080P主码流约3 MB/块 Pool 1640×360子码流约0.35 MB/块 Pool 2抓图或其他专用缓存面试总结VB Pool是 VI、VPSS和 VENC之间共享的视频帧缓存池通过预分配连续物理内存实现帧复用和少拷贝。块大小根据最大分辨率、像素格式、位宽、对齐和压缩方式使用厂家接口计算块数量根据流水线上同时占用的帧数并留出一定余量配置。实际运行中再根据 VB不足、丢帧情况和内存占用进行调整。13. VI 模块的“在线模式”和“离线模式”有什么区别项目中用哪种为什么答在线模式VI 不写 DDR直接把数据流送给 VPSS延迟极低但灵活性差离线模式VI 先写数据到 DDRVPSS 从 DDR 读取灵活性高但延迟增加。执法仪需要视频同步编码和网络传输通常用离线模式因为需要 VPSS 将同一路图像缩放成多路不同分辨率主码流存储子码流网传。【补充】VI的在线、离线模式核心区别是VI输出的图像是否先写入 DDR。在线模式Sensor → VI/ISP → VPSS → VENC 不经过DDR中转VI生成图像后直接交给 VPSS延迟低DDR带宽和内存占用小适合单路实时预览、编码和低延迟推流灵活性较低不方便应用直接获取 VI原始帧。离线模式Sensor → VI/ISP → DDR中的VB缓存 → VPSS → VENCVI先把图像写入 VB缓存再由 VPSS读取可以获取、保存或分析 VI输出帧方便多模块复用和调试支持更灵活的处理流程会增加 DDR读写带宽、缓存占用和处理延迟。14. VPSS 支持哪些图像处理功能在项目中你用了哪些答VPSS主要承担图像缩放、裁剪、格式转换、帧率控制和多通道分流。项目中我用它将 VI的一路图像转换为不同分辨率和帧率分别送给主码流、子码流和抓图通道从而避免 Sensor重复采集。【补充】VPSS视频处理子系统位于 VI和 VENC之间主要负责对 VI输出的图像进行处理和多通道分发。常见功能包括图像缩放裁剪多通道输出帧率控制像素格式转换降噪和图像增强镜像、翻转等处理将同一输入转换成不同分辨率分别用于主码流、子码流和抓图。具体是否支持旋转、畸变校正等功能需要以 Hi3516CV610的 MPP接口为准部分功能可能由 VI、VGS或 GDC模块完成而不是 VPSS。项目中可以这样回答项目中主要使用了 VPSS的缩放、多通道输出和帧率控制。VI输入一路高分辨率图像后VPSS主通道保持较高分辨率送给 VENC生成主码流子通道将图像缩小并降低帧率生成低码率子码流用于远程预览另外保留一个通道用于抓图或算法处理。例如VI输出1920×108030 fps ↓ VPSS ├─ 通道01920×108030 fps → H.265主码流 ├─ 通道1640×36015 fps → H.264子码流 └─ 通道2指定分辨率 → 抓图或算法面试总结VPSS主要承担图像缩放、裁剪、格式转换、帧率控制和多通道分流。项目中我用它将 VI的一路图像转换为不同分辨率和帧率分别送给主码流、子码流和抓图通道从而避免 Sensor重复采集。15. VENC 编码通道如何接收 VPSS 输入的图像如何配置编码参数码率、帧率、GOP项目中先创建 VENC通道并启动接收再通过SYS_Bind将 VPSS输出通道绑定到 VENC输入MPP会自动完成图像传递。编码参数在创建 VENC通道时配置包括 H.264/H.265、分辨率、CBR或VBR、目标码率、源帧率、目标帧率和 GOP。比如1080P、25帧的 H.265主码流配置约24 MbpsGOP设为50即约2秒一个关键帧。最后应用程序从 VENC通道循环获取并释放编码码流。【补充】VENC接收 VPSS图像通常有两种方式。1. 系统绑定——项目常用先创建 VPSS和 VENC通道然后通过 MPP绑定接口连接VPSS通道 → VENC编码通道概念代码ot_mpp_chn src;ot_mpp_chn dst;src.mod_idOT_ID_VPSS;src.dev_idvpss_grp;src.chn_idvpss_chn;dst.mod_idOT_ID_VENC;dst.dev_id0;dst.chn_idvenc_chn;ss_mpi_sys_bind(src,dst);绑定后VPSS输出的图像由 MPP内部自动送给 VENC不需要应用层逐帧复制。应用程序只需从 VENC获取编码码流。2. 手动送帧应用程序先从 VPSS获取图像再调用 VENC送帧接口VPSS_GetChnFrame() ↓ VENC_SendFrame() ↓ VPSS_ReleaseChnFrame()这种方式适合需要在编码前进行算法处理或修改图像的场景但处理流程和资源管理更复杂。编码参数配置创建 VENC通道时需要配置编码类型H.264、H.265或 JPEG分辨率必须与 VPSS输出分辨率匹配码率控制CBR、VBR或 AVBR目标码率源帧率和目标帧率GOP长度Profile、码流缓冲区等参数。例如1080P实时编码可以配置编码格式H.265 分辨率1920×1080 源帧率25 fps 目标帧率25 fps 码率模式CBR 目标码率20484096 kbit/s GOP5025 fps、GOP为50表示每50帧产生一个关键帧也就是大约每2秒一个 I帧关键帧间隔 GOP ÷ 帧率 50 ÷ 25 2秒参数选择原则码率越高画质越好但网络和存储压力越大GOP越小关键帧越频繁起播和错误恢复更快但码率更高GOP越大压缩效率更高但拖动、起播和丢包恢复较慢目标帧率不能高于 VPSS实际输出帧率。面试回答项目中先创建 VENC通道并启动接收再通过SYS_Bind将 VPSS输出通道绑定到 VENC输入MPP会自动完成图像传递。编码参数在创建 VENC通道时配置包括 H.264/H.265、分辨率、CBR或VBR、目标码率、源帧率、目标帧率和 GOP。比如1080P、25帧的 H.265主码流配置约24 MbpsGOP设为50即约2秒一个关键帧。最后应用程序从 VENC通道循环获取并释放编码码流。16. 视频编码过程中遇到花屏、卡顿或编码延迟突然增大如何排查答按顺序排查第一确认摄像头输出正常v4l2-ctl --stream-mmap --stream-count1000测试观察dmesg有无buffer queue underrun第二步检查 VPSS 通道绑定关系用memdump分析编码器输入帧第三步用tcpdump抓 RTP 封包看序列号是否连续。17. MPP 系统初始化需要做哪些工作为什么必须先初始化 VB Pool 才能启动 VI参数准备VI-VPSS-VENC基础参数初始化分配VBVI初始化VI必须在 VB初始化之后启动因为采集到的每帧图像都需要从 VB Pool取得连续物理缓冲区没有 VBVI就无法保存和传递图像。18. 如何通过调试节点查看 VI 的工作状态帧率异常时如何调整 settle time答在/sys/kernel/debug/mpp/vi节点查看当前或上次工作状态CSI_TOP 和 CSI_ISP 对应工作频率input行显示 CSI 接收到的图像尺寸和格式output行显示输出尺寸和格式最后一行显示平均帧间隔、最大帧间隔、最小帧间隔可以计算帧率。调 整 settle time 可 以 通 过 MIPI 子 设 备 的settle_time节 点 在 线 修 改 路 径 类 似/sys/devices/platform/soc/5800800.vind/5810100.mipiecho增大值直到不出图再取略低于最大值的数值即可调整范围 0x00-0xff。19. MPP 的音频处理模块AI/AENC如何与视频流同步音频卡顿或杂音怎么排查答音频通过 AI音频输入采集后经 AENC音频编码得到 AAC/MP3 码流与视频共用时间基准实现同步每帧 PTS 时间戳对齐。音频问题排查用示波器抓 I2S 时钟信号看是否被 WiFi 模块干扰调整音频采样率48kHz→44.1kHz匹配设备能力检查 I2S 时钟相位和位时钟BCLK频率是否正常用aplay -l确认声卡设备是否正确。20. VPSS 通道绑定关系和缩放配置如何修改主码流分辨率切换时需要重建所有通道吗答VPSS 支持HI_MPI_VPSS_GetChnAttr和SetChnAttr接口动态调整通道属性。切换主码流分辨率时不需要完全销毁重建整个 Group——可以通过动态调整 VPSS 通道的缩放参数实现平滑切换同时保持子码流通道固定避免频繁重建导致远程预览中断。
企业数字化 ERP 产品动态
相关推荐
指纹浏览器里的环境是什么意思? 平时我们用普通 Chrome 开多个窗口,哪怕开 10 个,网站看到的还是同一台电脑。很多人刚上手指纹浏览器,第一眼就被 “环境” 这个词卡住,不知道它和普通浏览器窗口、无痕模式差别在哪。简单类比:一个环境 一台独立的虚… · 2026/11/4 16:33:19
智能外呼系统哪家强?2026大模型语音交互与高可用架构排行榜 本文目录:一、从传统规则树到大模型外呼:技术排行榜核心评估维度的代际变化二、大模型智能外呼系统5大代表性厂商技术盘点三、企业级大模型外呼系统的底层架构能力矩阵四、标杆工程实践:某商业银行远程外呼与广医一院智能随访五、技术团队选型… · 2026/11/4 16:33:19
Java for-each 删除元素实测:删倒数第二个不抛异常,因为 hasNext 判的是 != Java for-each 删除元素实测:删倒数第二个不抛异常,因为 hasNext 判的是 !
16:37,控制台第一行出来:3 个元素,删第一个,抛了 ConcurrentModificationException。
这题我压根没打算跑。for 循环里删元素会抛… · 2026/11/4 16:33:19
图片撤回功能的技术实现与优化方案 1. 项目背景与核心价值去年在做一个图片社交项目时,我们团队遇到了一个典型的产品需求:用户发送图片后经常手滑发错,需要实现类似聊天软件的"消息撤回"功能。但深入研究后发现,图片撤回远比文字撤回复杂得多——它不仅要… · 2026/11/4 17:28:22
轨迹预测评估新思路:用场景驱动替代平均误差指标 做轨迹预测评估这些年,我越发觉得,leaderboard 上那个光鲜的 ADE 数字,有时候更像一种安慰剂。模型报到 0.3、0.4,名次好看,但一跑到高架出口、交叉口左转、大车切入这类场景,行为就像刚拿驾照的新手——该… · 2026/11/4 17:28:22
V100上vLLM FP8与llama.cpp Q4_K_M量化部署实测对比 站在2024年底回头看,V100这代卡在AI部署圈子里依然有庞大的存量用户群,尤其是各种实验室和二手平台上淘来的双路卡。我手上正好有一台双V100 16GB的机器,平时拿来跑各种量化模型的测试。最近社区里对vLLM的FP8支持讨论得很热,也有… · 2026/11/4 17:28:22
面试八股文本质是原理翻译:Redis/MySQL/算法/线程/数据结构五维响应系统 简介:这是一份专为Java后端及全栈开发者面试冲刺打造的「八股文」高频题库,覆盖Redis、MySQL、算法、多线程、数据结构及Java核心基础(OOP、JDK/JRE、B/S与C/S架构、类型转换、instanceof、装箱拆箱等)共19类典型问题,… · 2026/11/4 17:28:22
YouTube与Spotify论文深度解读:压缩实验周期与优化长尾重排 先说个结论:能把多任务排序实验压到 11 天,比把这个模型本身的 AUC 再抬 0.1 个点难得多。前者是系统工程能力,后者只是算法迭代能力。今天论文速递里,YouTube 和 Spotify 这两篇恰好踩在同一个主线上——一个是把实验周期从“月级… · 2026/11/4 17:28:22
用Kubernetes控制论闭环重构晶圆厂调度:C9S Agent实践 1. 一开始我以为这是个强行拼凑的概念第一次看到“用 Kubernetes 的控制论思想做晶圆厂调度”这个说法,我的第一反应是——这八成又是把两个热词硬凑在一起。毕竟半导体制造这个行当,调度系统已经卷了三十多年,从早期的规则派工,到… · 2026/11/4 17:27:22
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38