新路程------hi3516a CVBS venc抓取jpeg

来源:互联网 发布:js得到div的高度 编辑:程序博客网 时间:2024/06/07 07:35

今天做sample_venc抓jpeg

首先选了'7'作为修改对象,因为也是jpeg

修改如下:

--- a/sample/venc/sample_venc.c
+++ b/sample/venc/sample_venc.c
@@ -19,7 +19,7 @@ extern "C" {
 
 #include "sample_comm.h"
 
-VIDEO_NORM_E gs_enNorm = VIDEO_ENCODING_MODE_NTSC;
+VIDEO_NORM_E gs_enNorm = VIDEO_ENCODING_MODE_PAL;
 
 /******************************************************************************
 * function : show usage
@@ -413,7 +413,7 @@ END_VENC_1080P_CLASSIC_0: //system exit
 HI_S32 SAMPLE_VENC_1080P_MJPEG_JPEG(HI_VOID)
 {
     PAYLOAD_TYPE_E enPayLoad = PT_MJPEG;
-    PIC_SIZE_E enSize = PIC_HD1080;
+    PIC_SIZE_E enSize = PIC_D1;
     HI_U32 u32Profile = 0;
 
     VB_CONF_S stVbConf;
@@ -465,7 +465,7 @@ HI_S32 SAMPLE_VENC_1080P_MJPEG_JPEG(HI_VOID)
     /******************************************
      step 3: start vi dev & chn to capture
     ******************************************/
-    stViConfig.enViMode   = SENSOR_TYPE;
+    stViConfig.enViMode   = SAMPLE_VI_MODE_1_D1;
     stViConfig.enRotate   = ROTATE_NONE;
     stViConfig.enNorm     = VIDEO_ENCODING_MODE_AUTO;
     stViConfig.enViChnSet = VI_CHN_SET_NORMAL;
@@ -2144,7 +2144,7 @@ END_VENC_1080P_CLASSIC_0: //system exit
 ******************************************************************************/
 HI_S32 SAMPLE_VENC_1080P_JPEG_Thumb(HI_VOID)
 {
-    PIC_SIZE_E enSize = PIC_HD1080;
+    PIC_SIZE_E enSize = PIC_D1;
     ISP_DCF_INFO_S stIspDCF;
 
     VB_CONF_S stVbConf;
@@ -2194,7 +2194,7 @@ HI_S32 SAMPLE_VENC_1080P_JPEG_Thumb(HI_VOID)
     /******************************************
      step 3: start vi dev & chn to capture
     ******************************************/
-    stViConfig.enViMode   = SENSOR_TYPE;
+    stViConfig.enViMode   = SAMPLE_VI_MODE_1_D1;
     stViConfig.enRotate   = ROTATE_NONE;
     stViConfig.enNorm     = VIDEO_ENCODING_MODE_AUTO;
     stViConfig.enViChnSet = VI_CHN_SET_NORMAL;
@@ -2260,7 +2260,7 @@ HI_S32 SAMPLE_VENC_1080P_JPEG_Thumb(HI_VOID)
      step 5: set CDF info
     ******************************************/
     
-    HI_MPI_ISP_GetDCFInfo(&stIspDCF);
+ /*   HI_MPI_ISP_GetDCFInfo(&stIspDCF);  这里要注释掉,反正也没用,或许可以不注释,没试过
     
     //description: Thumbnail test
     memcpy(stIspDCF.au8ImageDescription,"Thumbnail test",strlen("Thumbnail test"));
@@ -2295,7 +2295,7 @@ HI_S32 SAMPLE_VENC_1080P_JPEG_Thumb(HI_VOID)
     stIspDCF.u8WhiteBalance             = 1;
     
     HI_MPI_ISP_SetDCFInfo(&stIspDCF);
-
+*/

遇到的问题,一开始一定要看看venc这个节点的信息,宽和高是否正确

/proc/umap # cat venc


[VENC] Version: [Hi3516A_MPP_V1.0.6.0 B050 Release], Build Time[Mar 28 2016, 19:35:43]


-----MODULE PARAM--------------------------------------------------------------
     VencBufferCache
                   0


-----VENC CHN ATTR 1-------------------------------------------------------------
      ID   Width  Height  Type  ByFrame     Timeout    Sequence   LeftBytes     LeftFrm  CurPacks  prio
       0     720     576    26        1           0           0           0           0         0     0


-----VENC CHN ATTR 2-------------------------------------------------------------
   VeStr  OsdStr   SrcFr   TarFr     Timeref  PixFmt PicAddr
      NO      NO      -1      -1           1      NA  0x       0


-----VENC CHN RECEIVE STAT-------------------------------------------------------------
      ID       Start     StartEx    RecvLeft     EncLeft
       0           0           0           0           0


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


-----VENC SEND1----------------------------------------------------------------
      ID     VpssSnd     VInfErr     OthrSnd     OInfErr        Send        Stop        Full     CropErr    DrectSnd     SizeErr
       0         209           0           0           0           0         209           0           0           0           0


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


-----VENC PIC QUEUE STATE------------------------------------------------------
      ID    Free    Busy     Vgs
       0       6       0       0


-----VENC CHNL INFO------------------------------------------------------------
      ID         Inq       InqOk       Start     StartOk      Config     VencInt  ChaResLost    OverLoad
       0         842           0           0           0           0           0           0           0


-----VENC CROP INFO------------------------------------------------------------
      ID  CropEn  StartX  StartY   Width  Height
       0      NO       0       0       0       0


-----VENC STREAM STATE------------------------------------------------------------
      ID     FreeCnt     BusyCnt     UserCnt     UserGet     UserRls    GetTimes    Interval   FrameRate
       0           0           0           0           0           0           0           0           0

如果上面的x,y不对,则肯定是SAMPLE_COMM_VI_GetSizeBySensor(&enSize);这里的参数不对。