346793103

346793103

0个粉丝

6

问答

0

专栏

1

资料

346793103  发布于  2019-09-01 12:01:05
采纳率 0%
6个问答
2907

HI_MPI_VENC_SendFrame 帧率控制

 
平台:HI3516EV300
MMP:4.0
问题描述:
通过V4L2方式从USB摄像头中读取YVU420数据然后通过HI_MPI_VENC_SendFrame 函数将数据发送到编码器中生成H264视频文件,但是生成的H264视频文件,在播放的时候,视频内容类似快进播放的样子。

我的配置步骤如下:
1、使用SAMPLE_COMM_VENC_Start函数启动编码器
[code]
        enRcMode = SAMPLE_RC_CBR;
        stGopAttr.enGopMode  = VENC_GOPMODE_NORMALP; //VENC_GOPMODE_SMARTP
            stGopAttr.stNormalP.s32IPQpDelta = 2;

            /***encode h.264 **/
            s32Ret = SAMPLE_COMM_VENC_Start(VencChn[1], enPayLoad[1], enSize[1], enRcMode,u32Profile[1],bRcnRefShareBuf,&stGopAttr);
            if (HI_SUCCESS != s32Ret)
            {
                        SAMPLE_PRT("Venc Start failed for %#x!\n", s32Ret);
                        goto EXIT_VENC_H264_UnBind;
            }               
[/code]

2、启动一个线程然后不断的往编码器中送YVU420SP格式的数据
[code]
    ......
    u32Stride = ALIGN_UP((u32Width * 8 + 7) >> 3, DEFAULT_ALIGN);
    u32LStride  = u32Stride;
    u32CStride  = u32Stride;
    u32Size = u32Stride * u32Height * 3 / 2;
    u32LumaSize = u32Stride * u32Height;
    u32ChrmSize = u32Stride * u32Height / 4;
       
   memset(&stVbPoolCfg, 0, sizeof(VB_POOL_CONFIG_S));
    stVbPoolCfg.u64BlkSize = u32Size;
    stVbPoolCfg.u32BlkCnt = 2;
    stVbPoolCfg.enRemapMode = VB_REMAP_MODE_NONE;
       
   hPool   = HI_MPI_VB_CreatePool(&stVbPoolCfg);
    if (hPool == VB_INVALID_POOLID)
    {
        SAMPLE_PRT("HI_MPI_VB_CreatePool failed! \n");
        return (void*)HI_FAILURE;
    }
   
   memset(&stFrmInfo.stVFrame, 0, sizeof(VIDEO_FRAME_S));
       
   stFrmInfo.stVFrame.enField = VIDEO_FIELD_FRAME;
    stFrmInfo.stVFrame.enCompressMode = COMPRESS_MODE_NONE;
    stFrmInfo.stVFrame.enPixelFormat = SAMPLE_PIXEL_FORMAT; //PIXEL_FORMAT_YVU_SEMIPLANAR_420
    stFrmInfo.stVFrame.enVideoFormat = VIDEO_FORMAT_LINEAR;
    stFrmInfo.stVFrame.enDynamicRange = DYNAMIC_RANGE_SDR8;
    stFrmInfo.stVFrame.enColorGamut = COLOR_GAMUT_BT709;
    stFrmInfo.stVFrame.u32Width = 1280;
    stFrmInfo.stVFrame.u32Height = 720;
    stFrmInfo.stVFrame.u32Stride[0] =  u32LStride;
    stFrmInfo.stVFrame.u32Stride[1] =  u32CStride;
    stFrmInfo.stVFrame.u32Stride[2] =  u32CStride;
    stFrmInfo.stVFrame.u32TimeRef = 0;
    stFrmInfo.stVFrame.u64PTS = 0;
    stFrmInfo.u32PoolId = hPool;//HI_MPI_VB_Handle2PoolId(vbblk);
       

    HI_PDT_UVC_Init(); //初始化USB摄像头
       
        while(pstPara->bThreadStart == HI_TRUE)
        {
                videofd = HI_PDT_UVC_GetFd(); //获取摄像头文件描述符
               
                if(videofd == -1)
                {
                        SAMPLE_PRT("videofd is unInit\n");
                        break;
                }

                FD_ZERO(&fds);
                FD_SET(videofd,&fds);

                /*Timeout*/
                tv.tv_sec = 2;
                tv.tv_usec = 0;
                u32ret = select(videofd + 1,&fds,NULL,NULL,&tv);
                if(0 > u32ret){
                         if(EINTR == errno)
                                continue;
                        perror("Fail to select \n");
                        break;
                }else if(0 == u32ret){
                        fprintf(stderr,"select Timeout \n");
                        continue;
                }else{

                        if(!FD_ISSET(videofd,&fds))
                                continue;
               
                        //SAMPLE_PRT("start read frame\n");
                        while((vbblk = HI_MPI_VB_GetBlock(hPool,u32Size,HI_NULL))== VB_INVALID_HANDLE);

                        u64PhyAddrs = HI_MPI_VB_Handle2PhysAddr(vbblk);
                        if(u64PhyAddrs == 0x00)
                        {
                                SAMPLE_PRT("HI_MPI_VB_Handle2PhysAddr:%x \n",u64PhyAddrs);
                                HI_MPI_VB_ReleaseBlock(vbblk);
                                continue;
                        }
                       
                        pVirAddrs = (HI_U8 *)HI_MPI_SYS_Mmap(u64PhyAddrs, u32Size);

                        if(pVirAddrs == HI_NULL)
                        {
                                SAMPLE_PRT("HI_MPI_SYS_Mmap:%#x \n",pVirAddrs);
                                HI_MPI_VB_ReleaseBlock(vbblk);
                                continue;
                        }
                       
                        stFrmInfo.stVFrame.u64PhyAddr[0] = u64PhyAddrs;
                        stFrmInfo.stVFrame.u64PhyAddr[1] = stFrmInfo.stVFrame.u64PhyAddr[0] + u32LumaSize;
                        stFrmInfo.stVFrame.u64PhyAddr[2] = stFrmInfo.stVFrame.u64PhyAddr[1] + u32ChrmSize;

                        stFrmInfo.stVFrame.u64VirAddr[0] = (HI_U64)(HI_UL)pVirAddrs;
                        stFrmInfo.stVFrame.u64VirAddr[1] = (HI_UL)(stFrmInfo.stVFrame.u64VirAddr[0]) + u32LumaSize;
                        stFrmInfo.stVFrame.u64VirAddr[2] = (HI_UL)(stFrmInfo.stVFrame.u64VirAddr[1]) + u32ChrmSize;

                        u32Cnt++;
                        stFrmInfo.stVFrame.u64PTS     = (u32Cnt * 40);
                        stFrmInfo.stVFrame.u32TimeRef = (u32Cnt * 2);
                       
                        HI_PDT_read_frame(videofd,pVirAddrs,u32Size);//读取USB摄像头数据并写入到虚拟地址
                       
                        HI_MPI_VENC_SendFrame(1, &stFrmInfo, -1);//发送数据到编码器的通道1
                       
                        HI_MPI_VB_ReleaseBlock(vbblk);    //
                        HI_MPI_SYS_Munmap ((HI_VOID *)(HI_UL)pVirAddrs, u32Size);
                       
                        usleep(50000);
                }
        }
[/code]

RC运行日志:
[code]
~ # cat /proc/umap/rc

[RC] Version: [Hi3516EV200_MPP_V1.0.1.0 B050 Release],Build Time[May  9 2019, 22:51:50]


------BASE PARAMS 1------------------------------------------------------------
  ChnId    Gop  StatTm  ViFr       TrgFr ProType  RcMode  Br(kbps)  FluLev  IQp  PQp  BQp
      0     30       1    30          30      96     CBR       512       1  N/A  N/A  N/A
      1     30       1    12           8      96     CBR      3072       1  N/A  N/A  N/A

------BASE PARAMS 2------------------------------------------------------------
  ChnId   MinQp   MaxQp  MinIQp  MaxIQp   EnableIdr    bQpMapEn   QpMapMode
      0      10      51      10      51           Y           N         N/A
      1      10      51      10      51           Y           N         N/A

------BASE PARAMS 3------------------------------------------------------------
  ChnId    LongTermStatTime   ShortTermStatTime  LongTermMaxBitrate  LongTermMinBitrate

-----RUN COMM PARAM 1----------------------------------------------------------
  ChnId  RowQpDelta                       ThrdI(16)
      0           1  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]
      1           1  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]

-----RUN COMM PARAM 2------------------------------------------------------------
  ChnId  FirstFrmStartQP                  ThrdP(16)
      0          -1  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]
      1          -1  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]

-----RUN COMM PARAM 3----------------------------------------------------------
  ChnId  DirectionThrd                       ThrdB(16)
      0           8  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]
      1           8  [   0   0   0   0   3   3   5   5   8   8   8  15  15  20  25  25]

-----RUN COMM PARAM 4----------------------------------------------------------
  ChnId   bLost     LostThr  LostFrmStr    EncGap  RCPriority   SprFrmMod     SprIFrm     SprPFrm     SprBFrm    bClrStat
      0       N    83886080      NORMAl         0     BITRATE        None      500000      500000      500000           1
      1       N    83886080      NORMAl         0     BITRATE        None      500000      500000      500000           1

-----RUN COMM PARAM 5----------------------------------------------------------
  ChnId       bDetectSceneChange        bAdapInsertIFrame
      0                        Y                        N
      1                        Y                        N

-----Foreground INFO 1----------------------------------------------------------
  ChnId     bThrdEn  DirectionThrd                          ThrdP(16)
      0           0           8  [   0   0   0   0   3   3   5   5   8   8   8  15  20  20  25  25]
      1           0           8  [   0   0   0   0   3   3   5   5   8   8   8  15  20  20  25  25]

-----Foreground INFO 2----------------------------------------------------------
  ChnId  ThreshGain   ThreshOffset                          ThrdB(16)
      0           8           8  [   0   0   0   0   3   3   5   5   8   8   8  15  20  20  25  25]
      1           8           8  [   0   0   0   0   3   3   5   5   8   8   8  15  20  20  25  25]

-----GOP MODE ATTR-------------------------------------------------------------
  ChnId   GopMode IpQpDelta  SPInterval SPQpDelta   BFrmNum  BQpDelta  BgInterval ViQpDelta
      0   NormalP         2         N/A       N/A       N/A       N/A         N/A       N/A
      1   NormalP         2         N/A       N/A       N/A       N/A         N/A       N/A

-----RUN CBR PARAM ------------------------------------------------------------
  ChnId  MinIprop  MaxIprop   MaxQp   MinQp  MaxIQp  MinIQp  MaxReEncTimes
      0         1        20      51      10      51      10              0
      1         1        20      51      10      51      10              0

-----RUN VBR COMM PARAM ------------------------------------------------------------
  ChnId   ChgPs  MinIprop  MaxIprop   MaxQp   MinQp  MaxIQp  MinIQp  MaxReEncTimes

-----RUN AVBR PARAM ------------------------------------------------------------
  ChnId     MaxStillQP    MotionSensi     MinPercent   MinStillPSNR     MinQpDelta

-----RUN QVBR PARAM ------------------------------------------------------------
  ChnId   BitPercentLL   BitPercentUL   PsnrFluctuateLL   PsnrFluctuateUL

-----RUN CVBR PARAM ------------------------------------------------------------
  ChnId     MinQpDelta     MaxQpDelta        ExBitPercent     LongTermStatTimeUnit

-----RUN INFO1-----------------------------------------------------------------
  ChnId   InsBr(kbps)   InsFr    WatL   CfgBt(kb)  RealBt(kb)   IPRatio  TarPercent   StartQp   MinQp   MaxQp
      0           589      26    1468          10           6       133         N/A        19      10      51
      1          2562       8     727         358         448         3         N/A        19      10      51

-----RC DeBreathEffect INFO-----------------------------------------------------------------
  ChnId   bEnable Strength0 Strength1     DeBrthEfctCnt
      0         N       N/A       N/A                 0
      1         N       N/A       N/A                 0

-----RC HierarchicalQp INFO-----------------------------------------------------------------
  ChnId   bEnable FrameNum[0] FrameNum[1] FrameNum[2] FrameNum[3]  QpDelta[0]  QpDelta[1]  QpDelta[2]  QpDelta[3]
      0         N           1           1           0           0          -2          -4           0           0
      1         N           1           1           0           0          -2          -4           0           0

-----RC PERFORMANCE  INFO------------------------------------------------------
  ChnId       StaOfstaTim      TotaOfstaTim       StaOfEndTim      TotaOfEndTim         TotalTime
      0      324523071543             16357      324523097311              2974             19331
      1      324523045621              6919      324522943458              1052              7971
[/code]


VENC运行日志:


[code]~ # cat /proc/umap/venc

[VENC] Version: [Hi3516EV200_MPP_V1.0.1.0 B050 Release], Build Time[May  9 2019, 22:51:50]

-----MODULE PARAM--------------------------------------------------------------
    VencBufferCache   FrameBufRecycle     VencMaxChnNum
                  0                 0                16


-----VENC CHN ATTR 1-----------------------------------------------------------
      ID   Width  Height  Type  ByFrame    Sequence   LeftBytes     LeftFrm  CurPacks   GopMode  Prio
       0    2592    1520    96        Y         528           0           0         1   NormalP     0
       1    1280     720    96        Y         211           0           0         4   NormalP     0

-----VENC CHN ATTR 2-----------------------------------------------------------
      ID   VeStr   SrcFr   TarFr     Timeref  PixFmt PicAddr      WakeUpFrmCnt
       0       Y      -1      -1        1316  YVU420  0x457aa780           1
       1       Y      -1      -1         636  YVU420  0x46f20800           1

-----VENC JPEGE ATTR -----------------------------------------------------------
      ID   RcvMode    MpfCnt      Mpf0Width     Mpf0Height      Mpf1Width     Mpf1Height


-----VENC CHN RECEIVE STAT-----------------------------------------------------
      ID       Start     StartEx    RecvLeft     EncLeft    JpegEncodeMode
       0           1           0           0           0                NA
       1           1           0           0           0                NA

-----VENC VPSS QUERY-----------------------------------------------------------
      ID       Query     QueryOk     QueryFR       Invld        Full      VbFail   QueryFail     InfoErr        Stop
       0           0           0           0           0           0           0           0           0           0
       1           0           0           0           0           0           0           0           0           0

-----VENC SEND1----------------------------------------------------------------
      ID     VpssSnd     VInfErr     OthrSnd     OInfErr        Send        Stop        Full     CropErr    DrectSnd     SizeErr
       0         532           0           0           0         532           0           0           0         532           0
       1           0           0         318           0         318           0           0           0         318           0

-----VENC SEND2----------------------------------------------------------------
      ID     SendVgs     StartOk   StartFail       IntOk     IntFail      SrcAdd      SrcSub     DestAdd     DestSub
       0           0           0           0           0           0           0           0           0           0
       1           0           0           0           0           0           0           0           0           0

-----VENC PIC QUEUE STATE------------------------------------------------------
      ID    Free    Busy     Vgs  BFrame
       0       2       4       0       0
       1       5       1       0       0

-----VENC DCF/MPF QUEUE STATE------------------------------------------------------
      ID   ThumbFree   ThumbBusy    Mpf0Free    Mpf0Busy    Mpf1Free    Mpf1Busy
       0           0           0           6           0           6           0
       1           0           0           6           0           6           0

-----VENC CHNL INFO------------------------------------------------------------
      ID         Inq       InqOk       Start     StartOk      Config     VencInt  ChaResLost    OverLoad    RingSkip      RcSkip
       0        3178        2318         528         528         528         528           0           0           0           0
       1        3508         318         318         212         212         211           0           0           0         106

-----VENC CROP INFO------------------------------------------------------------
      ID  CropEn  StartX  StartY   Width  Height
       0       N       0       0       0       0
       1       N       0       0       0       0


-----ROI INFO------------------------------------------------------------------
     ID      Type     Index    bRoiEn    bAbsQp    Qp     Width    Height    StartX    StartY


-----VENC STREAM STATE---------------------------------------------------------
      ID     FreeCnt     BusyCnt     UserCnt     UserGet     UserRls    GetTimes    Interval   FrameRate
       0           7           0           0         582         582         528       33232          16
       1           2           0           0         235         235         211       98529           6


-----VENC PTS STATE---------------------------------------------------------
      ID RcvFirstFrmPts    RcvFrmPts
       0  324502092587  324534626104
       1  324502706618  324534637474[/code]

H264E运行日志:
[code]~ # cat /proc/umap/h264e

[H264E] Version: [Hi3516EV200_MPP_V1.0.1.0 B050 Release], Build Time[May  9 2019, 22:51:50]

-----MODULE PARAM--------------------------------------------------------------
      OnePack   H264eVBSource      PowerSaveEn     MiniBufMode     bQpHstgrmEn
            0               2                1               0               0
-----CHN ATTR------------------------------------------------------------------
     ID  MaxWidth MaxHeight     Width    Height   profile   C2GEn   BufSize   ByFrame   GopMode   MaxStrCnt
      0      2592      1520      2592      1520      base       N   2954880         Y   NormalP         200
      1      1280       720      1280       720      base       N    691200         Y   NormalP         200

-----PICTURE INFO--------------------------------------------------------------
     ID     EncdStart   EncdSucceed        Lost        Disc       Pskip      Recode      RlsStr     UnrdStr
      0           896           896           0           0           0           0         896           0
      1           366           366           0           0           0           0         366           0

-----STREAM BUFFER-------------------------------------------------------------
     ID     Base                  RdTail      RdHead      WrTail      WrHead      DataLen     BufFree     
      0     0xc5c00000            0x236f40    0x236f40    0x236f40    0x236f40    0           2957248     

      1     0xc5900000            0x48f80     0x48f80     0x48f80     0x48f80     0           692160      

-----RefParam INFO--------------------------------------------------------------
     ID      EnPred        Base     Enhance    RcnRefShareBuf
      0           Y           1           0                 Y
      1           Y           1           0                 Y

-----ROIBG INFO------------------------------------------------------------------
     ID   BgSrcFr   BgTarFr
      0        -1        -1
      1        -1        -1

-----Syntax INFO1--------------------------------------------------------------
     ID SlcspltEn   Slcsize   IntraRefresh    RefreshMode     RefreshNum   QpOfIDR
      0         N       N/A              N            N/A            N/A       N/A
      1         N       N/A              N            N/A            N/A       N/A

-----Syntax INFO2--------------------------------------------------------------
     ID   profile   EntrpyI   EntrpyP   EntrpyB  Itrans  Ptrans QMatrix   POC   DblkIdc   alpha    beta
      0      base     cavlc     cavlc     cavlc     4x4     4x4       N     0         0       0       0
      1      base     cavlc     cavlc     cavlc     4x4     4x4       N     0         0       0       0

-----Foreground && Scene INFO-------------------------------------------------------------
     ID  ForegroundSkipCoef  BackgroundSkipCoef SceneMode
      0                   8                   8   Scene_0
      1                   8                   8   Scene_0

-----CuPrediction-------------------------------------------------------------------
     ID  PredMode     Inter8Cost    Inter16Cost     Intra4Cost     Intra8Cost    Intra16Cost
      0      AUTO              8              8              8              8              8
      1      AUTO              8              8              8              8              8

-----SkipBias-------------------------------------------------------------------
     ID     SkipBiasEn      Gain    Offset      ForegroundCost      BackgroundCost
      0              N         8         8                   0                   0
      1              N         8         8                   0                   0

~ # [/code]
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区