📄 video_md.c
字号:
#include <stdio.h>#include <time.h>#include "hi_common_api.h"#include "video_comm.h"/*config system parameter*/HI_U16 mode = CIF;HI_U16 normal = PAL;VENC_FORMAT_E format = VENC_FORMAT_H264;HI_S32 main (HI_VOID){ HI_S8 filename[255]; HI_S32 hiRet = HI_SUCCESS; HI_S32 venc_chn; HI_S32 vi_chn = 0; VENC_INIT_S venc_init; FILE * pfileMd; VENC_STREAM_S venc_stream; MD_STATUS_S status; HI_S32 i, j; time_t t0, t1; HI_S32 wBlock; HI_S32 hBlock; HI_S32 scale; /*config A/D device*/ hiRet = ADconfig(mode, normal); if (HI_SUCCESS != hiRet) { printf ("ADconfig failed\n"); HI_VENC_Close(); return hiRet; } /*config VI public attribute*/ hiRet = ViPubConfig(mode, normal, format); if (HI_SUCCESS != hiRet) { printf ("vi public atr config failed\n"); HI_VENC_Close(); return hiRet; } hiRet = ViChnConfig(mode, normal, vi_chn); if (HI_SUCCESS != hiRet) { printf ("vi chn atr config failed\n"); HI_VENC_Close(); return hiRet; } /*create video encode channel*/ hiRet = HI_VENC_CreateCH(vi_chn, &venc_chn); if ( hiRet != HI_SUCCESS ) { HI_VENC_Close(); return hiRet; } /* start video encode */ hiRet = HI_VENC_StartCH(venc_chn, 0); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); return hiRet; } /*start MD*/ hiRet = HI_MD_Enable (venc_chn); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); return hiRet; } sprintf(filename, "venc_md_chn%d.xls", venc_chn); pfileMd = fopen (filename, "wb"); if (HI_NULL_PTR == pfileMd) { fclose(pfileMd); HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); return HI_FAILURE; } hiRet = HI_VENC_GetSingleAttr(venc_chn, VENC_PICHEIGHT, &hBlock); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); return hiRet; } hiRet = HI_VENC_GetSingleAttr(venc_chn, VENC_PICWIDTH, &wBlock); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); return hiRet; } /*calculate the macro number*/ hBlock = hBlock/16; wBlock = wBlock/16; t0 = time(0); do { /*get stream*/ HI_VENC_GetStream(venc_chn, &venc_stream, HI_TRUE); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); fclose(pfileMd); return hiRet; } if (venc_stream.struUbuff.bIsField) { scale = 2; } else { scale = 1; } /*get MD data*/ hiRet = HI_MD_GetStatus( venc_chn, &status); /*save MD in file*/ if (hiRet == HI_SUCCESS) { for (i = 0; i < hBlock*scale; i++) { for (j = 0; j < wBlock; j++) { fprintf (pfileMd,"%d\t", status.u8MDValue[i * wBlock + j]); } fprintf (pfileMd,"\n"); } fprintf (pfileMd,"\n"); } hiRet = HI_VENC_ReleaseStream(venc_chn, &venc_stream); if ( hiRet != HI_SUCCESS ) { HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); fclose(pfileMd); return hiRet; } t1 = time(0); }while (t0 + 120 > t1); HI_VENC_StopCH(venc_chn); HI_VENC_DestroyCH(venc_chn, HI_TRUE); HI_VENC_Close(); fclose(pfileMd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -