Hi3519使用·记录

为了看懂更多的代码,特意在这里集中各个关键词语的英文。
图像处理英文
亮度——Luma、色度——Chrm( Chroma)、步幅(宽度)——stride、指针类型——pst、配置——CONF
帧内宏块(Intra)帧间宏块(Inter)

海思数据类型定义
公共数据类型 67:表达主要是类型+数据长度
结构体_S
枚举_E

系统控制
  1. 静态属性26 与动态属性 34
  2. 先VB_inti再SYS_init 29,退出时需要消除所有阻塞的MPI进程 30
  3. 绑定和bind结构数据成员 31
  4. 时间戳(3个函数)
    1. 建议1秒后进行一次微调 35
    2. 海思自己已经为音视频同步做了一个时钟,专门设定时间戳的值
  5. mmap映射 38
    1. 等同于linux - mmap的作用,内存映射,共享
  6. mmz内存分配 41
    1. 啥作用呢?
  7. 配置内存参数 45
    1. 通道使用哪个DDR,DDR的名字必须存在(哪里设置DDR的名字?)
  8. 设置MPP视频缓冲区 48 配置规则 
  9. VB_exit 不会清除VB_setconf的配置 51
  10. 创建一个视频缓存池
    1. 返回缓存池ID 52
    2. 创建池-从中获取一个块-获取这个块的物理地址--检错-释放块-销毁池 52
  11. 从缓存池中获取块(帧缓存块),2中情况
    1. 从指定缓存池取缓存块时,参数pcMmzName无效 55
    2. 任意一个公共缓存池中获取一块指定大小的缓存块 55, 第1个参数 Pool 设置为无效 ID 号(VB_INVALID_POOLID)
    3. MPP视频缓存池(1情况)与公共缓存池(2情况)
  12. 用户态获取一个缓存块的物理地址 / 用户态获取一个帧缓存块所在缓存池的 ID
  13. 视频缓存池映射用户态虚拟地址 59 / 获取一个视频缓存池中的缓存块的用户态虚拟地址 60
  14. 模块公共视频缓存池 61
  15. 根据虚拟地址获取对应的内存信息,包括物理地址及 cached 属性67

系统控制概念清理
缓存池概念:22说明+69数据定义
缓存池(==视频缓存池 )47、公共缓存池(==公共视频缓存池)55、模块缓存池60(用Ven图最好了,表达包含于被包含关系)
MMZ内存40:强调用户态内存

视频输入
  1. 离线和在线模式 24 96 (功能上有差别)
  2. 参数 VI_DEV_ATTR_S 主要用来配置指定 VI 设备的视频接口模式,用于与外围 camera、sensor 或 codec 对接。101 也就是需要根据接口来设定参数。VI设备与VI通道的绑定关系 108
  3. VI_CHN_ATTR_S通道属性,连结VI设备与VI通道,设置说明 109
  4. 如果设置了后端模块与 VI 的绑定,在成功调用该接口后,后端模块就会得到视频数据 112 使能VI通道
  5. VI通道响应硬件中断 可节约系统资源 114
  6. 获取该 VI 通道数据 119,获取的是原始图像YUV格式(可动态设置深度 116)
  7. 用户图片(作为无视频信号时的插入图片)122  VI 通道不再需要输出用户图片时,应该调用此接口以恢复输出 AD 的原始视频数据 126
  8. HI_MPI_VI_BindChn 3519不支持
  9. HI_MPI_VI_Query可查询中断计数、通道使能状态、平均帧率、中断丢失数、获取 VB 失败 次数、图像宽高等信息 132
  10. 闪光灯(单闪、频闪两模式) 133 有啥作用?
  11. VI 设备的 CSC 用于图像的亮度、色调、对比度、饱和度的调节 147
  12. 旋转149 注意图像宽高大小的改变
  13. 获取通道亮度和统计,帧的PTS  152 208
  14. VI 设备 dump 属性 157 啥作用?3519不支持
  15. 获取 RAW DATA 159-166 啥作用?
  16. DCI 自动对比度增强 209 
  17. WDR 工作属性 169

对物理地址与用户态虚拟地址的一个解析和一个使用方式:122
可以从 MPP 公共缓冲池中获取一块相应大小的视频缓存块,从缓存块信息中得到存放 YUV 数据的物理地址,然后将物理地址映射到用户空间,即可对这块内存进行 YUV 数据的填充操作

视频编码
  1. 本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同 636 (该说明是否能够证明H.264和H.265同时多路编码呢?)
  2. 通道支持接收 YUV 格式图像输入, 其中 H.264/H.265 只支持 Semi-planar YUV 4:2:0 ; VENC 将按照编码通道尺寸大小,调用 VGS 对源图像进行缩小,然后对缩小之后的图像进行编码。637
  3. CBR与VBR的控制概念 639
  4. 两种编码协议(H.264/H.265),GOP 结构属性;支持彩转灰; 裁剪编码,即 VENC 从图像中裁剪出一部分进行编码 642
  5. P 帧帧内刷新(P 帧刷新 ISlice/Intra 宏块行)
    1. 作用:码流平滑( 刷新 ISlice 可以提供更好的码流兼容性)、IP帧大小接近、降低I帧过大带来的网络冲击,网络延迟、传输容错概率 644
    2. 注意:
  6. 码流帧配置:多包或单包 645 图6-9(646) 讲述:包的类型、图像参数集的问题
  7. 码流buffer配置:仅给出下限 646 (需要防止因码流 buffer 不足而不断重编或者丢帧的情况)
API部分:
  1. VENC_CHN_ATTR_S 787
    1. 编码通道宽高差异(编码分辨率) 表6-3 650
    2. 编码器属性的约束 表6-4 651 :码流buffer深度、获取码流方式
    3. 码率控制器属性的约束 表6-5 652
      1. VI输出帧率、VPSS帧率 与VENC的码率控制关系
      2. SrcFrmRate与 DstFrmRate的设置关系
    4. CBR的平均比特率配置 表6-6 652 和 波动等级(码率的波动范围的大小划分) 653


码流包结构图 6-11 676
     码流buffer折回
帧率控制VPSS- VENC_FRAME_RATE_S和VI- VENC_FRAME_RATE_S
颜色格式VI- VENC_FRAME_RATE_S
物理地址与用户虚拟地址, 链接

《基于Hi3510的H_264编解码器的设计与实现_张新安》

工作原理:
  1. 视频输入单元通过 ITU-R BT.601/656 接口接收由 VADC 输出的数字视频信息, 并通过 AHB 总线把接收到的原始图像写入到外存 (SDR SDRAM 或 DDR SDRAM)中;
  2. 视频编解码器 器从外存中读取图像,进行运动估计(帧间预测)、帧 内 预 测 、 DCT 变 换 、 量 化 、 熵 编 码 (CAVLC+Exp-Golomb)、IDCT 变换、反量化、运动 补偿等操作, 最后将符合 H.264 协议的裸码流和编码重 构帧(作为下一帧的参考帧)写入到外存中;
  3. 视频输出 单元从外存中读取图像数据并通过 ITU-R BT.601/656 接口送给 VDAC 进行显示,应用的需求不同,视频输 出单元从外存中读取的图像内容也不同,
  4. 当需要对输入 图像进行预览时,视频输出单元从外存中读取原始图 像,当需要观察视频编码器的编码效果时,视频输出单 元从外存中读取编码重构帧;
  5. ARM 对视频编码器输出 的码流进行协议栈的封装,然后送给网口发送,以实现 视频点播业务。


《基于Hi3516A的H265码流实时传输系统设计_鲁云》


《基于Hi3515数字视频展台的研究_高洁》

输入:
  1. 加载MPP
    1. 最大的视频缓存池个数、最大缓存池中公共缓存块的个数、每个公共缓存块的大小
    2. MPP系统控制属性、控制参数
  2. 设置输入设备与输入通道的属性
    1. 根据VI设备(摄像头),设置VI属性(接口制式、接口时序)
    2. 根据VI通道属性(采集图像的视频分辨率、像素格式),设置VI通道
  3. 启动输入设备及通道
    1. 启动VI通道,设置通道采集帧率

输出:
  1. 定义(设置) 视频输出公共属性的结构体:背景、输出接口类型、接口时序
  2. 定义(设置)视频层属性:设备/显示/图像分辨率(示意图),设备与显示相同,显示与图像最好相同,输入像素格式
  3. 启动VO设备与VO视频层:
  4. 设置输出通道属性并启用输出通道:绑定通道关系


《基于Hi3515的视频传输终端的设计与实现_吴光辉》

SDK包的安装:运行./sdk.unpack
2.4.2:视频编码过程,非常多流程图,参考过程。
下面都在框图中结合3519进一步修改画出相应的
  1. H.264视频编码流程
  2. MPP系统初始化流程
  3. 输入设置与初始化流程
  4. 输出设置与初始化流程
  5. H.264编码配置过程

第三章:视频与数据的TS打包及应用(非常好)
备注:讲述清楚ES PES TS的原理和实现方法,对理解数据对接(操作视频流)有非常大的作用。比方说,以后会有从h.265视频流打包到flv格式,使用rtmp发送,这个流程就需要操作视频流了。

主要讲述:
  1. MPEG-2 TS介绍:语法结构(包的组成,想rtmp用flv格式推流那样子)
  2. H.264编码视频的TS封装
    1. TS封装原理(流程框图)
    2. H.264编码ES的PES打包
      1. H.264编码ES的结构(实际就是NALU):联合Hi3515的码流包结构体
      2. PES包结构:正如flv文件格式中需要的各个数据,FFmpeg-AVPacket使用转flv格式的过程一样
      3. PES打包过程
        1. IPB帧类型对PTS、DTS的影响
        2. PTS、DTS计算公式和插入方式
        3. PES包的TS封装:未看
    3. 多路视频和数据的TS复用
      1. PSI表信息的作用和插入:未看
      2. PCR的计算及插入:
        1. 编码端和解码端的时钟同步,不加以处理,解码端缓冲区的溢出
        2. 解码端的时钟过慢,造成解码端缓冲区的上溢,视频丢帧
        3. 解码端的时钟过快,造成解码端缓冲区的下溢,视频卡顿
      3. 基于Hi3515的多路视频的TS封装
        1. 利用Hi3515进行多通道编码时的多路分时编码而进行的封装复用

第六章:测试(很有作用)
  1. Hi3515的H.264编码ES流测试:NAL单元类型测试,需要寻找一个H.265的测试工具


你可能感兴趣的:(音视频流媒体)