⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video_md.c

📁 sample on embedded linux
💻 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 + -