zoukankan      html  css  js  c++  java
  • HISI VENC 实际输出帧率控制

     https://blog.csdn.net/spy_007_/article/details/83688287

    平台:HI3516EV100

    SDK : Hi3516CV300_SDK_V1.0.2.0

    系统 : LiteOS

    海思MPP文档里写的我就不多说了,不知道是我理解有问题还是什么,反正很多次都不能准确的控制实际的编码(VENC)输出帧率,就是  cat /proc/venc  能看到的通道输出帧率,今天特地花时间来研究下,发下有如下规律:

    • 海思的帧率控制无非就是如下这些地方涉及到:
    1. ISP  -----------------------------------------> HI_MPI_ISP_SetPubAttr
    2. VI  -----------------------------------------> HI_MPI_VI_SetChnAttr
    3. VPSS  -----------------------------------------> HI_MPI_VPSS_SetChnAttr
    4. VENC  -----------------------------------------> HI_MPI_VENC_SetChnAttr 主要修改RC(码率控制器)

        另外  :

             HI_MPI_VENC_CreateChn 创建通道也会设置帧率。

             HI_MPI_VENC_SetFrameRate 也能控制编码帧率

    重点就在上边的4个步骤里边:

    画了一张草图帮助理解

    如上图: 

    ISP处理为30帧/s   

    VI处帧率不做控制(mpp文档推荐的,影响抓拍) ,其实应该就是ISP处的30帧/s

    VPSS 设置src:30   dst:15 ,理解为VPSS接收到 ( VI ) 的帧,每src帧只处理dst帧

    VENC 设置 src:15  dst : 15  , 理解为VENC 接收到 ( VPSS ) 的帧,每src帧只处理dst帧

    这样理解就能清楚的多了,如此,比如要得到实际输出 12帧的帧率,只需要最后将VENC设置成src:15  dst : 12 就可以了。

    相关接口参数设置:

    • HI_MPI_ISP_SetPubAttr

                   stPubAttr.f32FrameRate = 30; 

    • HI_MPI_VI_SetChnAttr 此处不进行帧率控制:

                  stChnAttr.s32SrcFrameRate = -1;

                  stChnAttr.s32DstFrameRate = -1;

    • HI_MPI_VPSS_SetChnAttr;

                  chnAttr.s32SrcFrameRate = 30;

                  chnAttr.s32DstFrameRate = 15;

    • HI_MPI_VENC_SetChnAttr  主要修改RC(码率控制器)

                 vencAtt0.stRcAttr.stAttrH264Vbr.fr32DstFrmRate = 15;

                vencAtt0.stRcAttr.stAttrH264Vbr.u32SrcFrmRate = 15;

    自测按照该方法去设置能准确的控制实际编码输出帧率,如有问题,希望各位不吝指正,万分感谢。

    结果截图:

    cat /proc/rc

    cat /proc/venc

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/ordinary-world/p/10460001.html
Copyright © 2011-2022 走看看