sth else

love starts with a smile , grows with a kiss , and ends with a tear.  
don''t cry over anyone who won''t cry over you.  
good friends are hard to find, harder to leave, and impossible to forget.  
you can only go as far as you push.  
actions speak louder than words.  
the hardest thing to do is watch the one you love, love somebody else.  
don''t let the past hold you back, you''re missing the good stuff.  
life''s short. if you don''t look around once in a while you might miss it.  
a best friend is like a four leaf clover, hard to find and lucky to have.  
some people make the world special just by being in it.  
best friends are the siblings god forgot to give us.  
when it hurts to look back, and you''re scared to look ahead, you can look beside you and your best friend will be there.  
true friendship "never" ends. friends are forever.  
good friends are like stars you don''t always see them, but you know they are always there.  
don''t frown. you never know who is falling in love with your smile.  
what do you do when the only person who can make you stop crying is the person who made you cry?  
nobody is perfect until you fall in love with them.  
everything is okay in the end. if it''s not okay, then it''s not the end.  
most people walk in and out of your life, but only friends leave footprints in your heart.  
send this on to everyone special in your life, even the people who really make you mad sometimes and to the people whose lives you want to be in!!! Sample Text

int CONFIG_VENC_CHN_ATTR(int VencChn, ENCODERCONFIG *compess) { HI_U8 flag = 0; HI_S32 s32Ret; VENC_CHN_ATTR_S stVencChnAttr; VENC_RECV_PIC_PARAM_S stRecvParam; HI_U32 u32StatTime = 1; //编码类型 PAYLOAD_TYPE_E enType; PAYLOAD_TYPE_E curenType; if(compess->encoderType==1) { enType =PT_H264; } // else if(compess->encoderType==8) // { // enType =PT_H265; // } SIZE_S stPicSize; stPicSize.u32Height=compess->height; stPicSize.u32Width=compess->width; //码率类型 unsigned int enRcMode =compess->bitType; HI_FR32 u32FrameRate = compess->videoEncoder.videoFrameRate; HI_U16 u32Gop = compess->videoEncoder.intervalFrameI; HI_U32 u32BitRate = compess->videoEncoder.maxVideoBitrate; printf("enType=%d\n",enType); printf("enRcMode=%d\n",enRcMode); printf("u32BitRate=%d\n",u32BitRate); #if 1 printf("config_chn_attr is enType=%u\n\ stPicSize.u32Width=%u\n\ stPicSize.u32Height=%u\n\ enRcMode=%u\n\ u32FrameRateFZ=%u\n\ u32FrameRateFM=%u\n\ u32Gop=%u\n \ u32BitRate=%u\n",enType,stPicSize.u32Width,stPicSize.u32Height,enRcMode,(u32FrameRate & (HI_U32)65535),((u32FrameRate >> 16) & (HI_U32)65535),u32Gop,u32BitRate); #endif #if 1 s32Ret = HI_MPI_VENC_GetChnAttr(VencChn,&stVencChnAttr); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_VENC_GetChnATTR[%d] failed with %#x!\n", \ VencChn, s32Ret); return s32Ret; } printf("iiiiiiiiiiii %d %d\n", stVencChnAttr.stVencAttr.u32MaxPicWidth, stVencChnAttr.stVencAttr.u32MaxPicHeight); printf("chn_attr is stVencChnAttr.stVencAttr.u32PicWidth=%u\n\ stVencChnAttr.stVencAttr.u32PicHeight=%u\n\ stVencChnAttr.stVencAttr.enType=%u\n\ stVencChnAttr.stVencAttr.u32Profile=%u\n\ stVencChnAttr.stRcAttr.enRcMode=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32Gop=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFZ=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFM=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime=%u\n\ stVencChnAttr.stGopAttr.enGopMode=%u\n",\ stVencChnAttr.stVencAttr.u32PicWidth,stVencChnAttr.stVencAttr.u32PicHeight,stVencChnAttr.stVencAttr.enType,\ stVencChnAttr.stVencAttr.u32Profile,stVencChnAttr.stRcAttr.enRcMode,stVencChnAttr.stRcAttr.stH264Vbr.u32Gop,\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate,(stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate & (HI_U32)65535),\ ((stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate >> 16) & (HI_U32)65535),stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime,stVencChnAttr.stGopAttr.enGopMode); #endif MPP_CHN_S stSrcChn; stSrcChn.enModId = HI_ID_VPSS; stSrcChn.s32DevId = 0; stSrcChn.s32ChnId = 0; curenType=stVencChnAttr.stVencAttr.enType; printf("----curenType=%d enType=%d\n",curenType,enType); if(stVencChnAttr.stVencAttr.enType!=enType) { printf("1111111111111111111111 enType\n"); memset(&stVencChnAttr,0,sizeof(VENC_CHN_ATTR_S)); stVencChnAttr.stVencAttr.enType = enType; stVencChnAttr.stVencAttr.u32MaxPicWidth = stPicSize.u32Width; stVencChnAttr.stVencAttr.u32MaxPicHeight = stPicSize.u32Height; stVencChnAttr.stVencAttr.u32PicWidth = stPicSize.u32Width;/*the picture width*/ stVencChnAttr.stVencAttr.u32PicHeight = stPicSize.u32Height;/*the picture height*/ stVencChnAttr.stVencAttr.u32BufSize = stPicSize.u32Width * stPicSize.u32Height * 2;/*stream buffer size*/ stVencChnAttr.stVencAttr.u32Profile = 0; stVencChnAttr.stVencAttr.bByFrame = HI_TRUE;/*get stream mode is slice mode or frame mode?*/ flag = 1; s32Ret = HI_MPI_VENC_StopRecvFrame(VencChn); if (HI_SUCCESS != s32Ret) { printf("HI_MPI_VENC_StopRecvPic vechn[%d] failed with %#x!\n", \ VencChn, s32Ret); return s32Ret; } printf("HI_MPI_VENC_StopRecvFrame success\n"); bcloseconsock=1; stVencChnAttr.stVencAttr.u32PicWidth=stPicSize.u32Width; stVencChnAttr.stVencAttr.u32PicHeight=stPicSize.u32Height; int i= 0; for ( i = 0; i < 8; i++) { s32Ret = HI_MPI_RGN_DetachFromChn(20+(VencChn%3)*10+i, &stSrcChn); if(HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_RGN_DetachFromChn failed with region = %d s32Ret: 0x%x.\n", i, s32Ret); return HI_FAILURE; } } // s32Ret = HI_MPI_VENC_DestroyChn(VencChn); // if (HI_SUCCESS != s32Ret) // { // printf("HI_MPI_VENC_DestroyChn vechn[%d] failed with %#x!\n", \ // VencChn, s32Ret); // return s32Ret; // } // printf("HI_MPI_VENC_DestroyChn success\n"); } else { printf("2222222222222222222 enType\n"); // if(stVencChnAttr.stVencAttr.u32PicWidth!=stPicSize.u32Width && stVencChnAttr.stVencAttr.u32PicHeight!=stPicSize.u32Height) // { printf("3333333333333333333333333333 enType\n"); flag = 1; s32Ret = HI_MPI_VENC_StopRecvFrame(VencChn); if (HI_SUCCESS != s32Ret) { printf("HI_MPI_VENC_StopRecvPic vechn[%d] failed with %#x!\n", \ VencChn, s32Ret); return s32Ret; } printf("HI_MPI_VENC_StopRecvFrame success\n"); stVencChnAttr.stVencAttr.u32PicWidth=stPicSize.u32Width; stVencChnAttr.stVencAttr.u32PicHeight=stPicSize.u32Height; int i= 0; for ( i = 0; i < 8; i++) { s32Ret = HI_MPI_RGN_DetachFromChn(20+(VencChn%3)*10+i, &stSrcChn); if(HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_RGN_DetachFromChn failed with region = %d s32Ret: 0x%x.\n", i, s32Ret); return HI_FAILURE; } } // } } #if 1 switch(enType) { case PT_H264: { if (VENC_RC_MODE_H264CBR == enRcMode) { printf("-----h264 VENC_RC_MODE_H264CBR\n"); if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264CBR) { stVencChnAttr.stRcAttr.stH264Cbr.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } } stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate = u32BitRate; } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CBR; stVencChnAttr.stRcAttr.stH264Cbr.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate = u32BitRate; } } else if (VENC_RC_MODE_H264FIXQP == enRcMode) { if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264FIXQP) { stVencChnAttr.stRcAttr.stH264FixQp.u32Gop = u32Gop; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } } } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264FIXQP; stVencChnAttr.stRcAttr.stH264FixQp.u32Gop = u32Gop; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264FixQp.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264FixQp.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264FixQp.u32IQp = 25; stVencChnAttr.stRcAttr.stH264FixQp.u32PQp = 30; stVencChnAttr.stRcAttr.stH264FixQp.u32BQp = 32; } } else if (VENC_RC_MODE_H264VBR == enRcMode) { printf("-----h264 VENC_RC_MODE_H264VBR\n"); if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264VBR) { stVencChnAttr.stRcAttr.stH264Vbr.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } } stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate = u32BitRate; } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264VBR; stVencChnAttr.stRcAttr.stH264Vbr.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate = u32BitRate; } } else if(VENC_RC_MODE_H264AVBR == enRcMode) { if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264AVBR) { stVencChnAttr.stRcAttr.stH264AVbr.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264AVbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } } stVencChnAttr.stRcAttr.stH264AVbr.u32MaxBitRate = u32BitRate; } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264AVBR; stVencChnAttr.stRcAttr.stH264AVbr.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264AVbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264AVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264AVbr.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264AVbr.u32MaxBitRate = u32BitRate; } } else if(VENC_RC_MODE_H264QVBR == enRcMode) { if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264QVBR) { stVencChnAttr.stRcAttr.stH264QVbr.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264QVbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } } stVencChnAttr.stRcAttr.stH264QVbr.u32TargetBitRate = u32BitRate; } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264QVBR; stVencChnAttr.stRcAttr.stH264QVbr.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264QVbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264QVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264QVbr.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264QVbr.u32TargetBitRate = u32BitRate; } } else if(VENC_RC_MODE_H264CVBR == enRcMode) { if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264CVBR) { stVencChnAttr.stRcAttr.stH264CVbr.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264CVbr.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } } if((u32BitRate < stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMaxBitrate) && (u32BitRate >= stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMaxBitrate)) { stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMaxBitrate = u32BitRate; stVencChnAttr.stRcAttr.stH264CVbr.u32MaxBitRate = u32BitRate; } else if(u32BitRate < stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMinBitrate) { stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMaxBitrate = u32BitRate; stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMinBitrate = u32BitRate; stVencChnAttr.stRcAttr.stH264CVbr.u32MaxBitRate = u32BitRate; } else { stVencChnAttr.stRcAttr.stH264CVbr.u32MaxBitRate = u32BitRate; } } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CVBR; stVencChnAttr.stRcAttr.stH264CVbr.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264CVbr.u32StatTime = u32StatTime; stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermStatTime = u32StatTime; stVencChnAttr.stRcAttr.stH264CVbr.u32ShortTermStatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264CVbr.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264CVbr.fr32DstFrameRate = u32FrameRate; } stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMaxBitrate = u32BitRate; stVencChnAttr.stRcAttr.stH264CVbr.u32LongTermMinBitrate = u32BitRate; stVencChnAttr.stRcAttr.stH264CVbr.u32MaxBitRate = u32BitRate; } } else if(VENC_RC_MODE_H264QPMAP == enRcMode) { if(stVencChnAttr.stRcAttr.enRcMode==VENC_RC_MODE_H264QPMAP) { stVencChnAttr.stRcAttr.stH264QpMap.u32Gop = u32Gop; //stVencChnAttr.stRcAttr.stH264QpMap.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if(((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) > stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } } else { if((u32FrameRate & (HI_U32)65535) > stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate) { stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } } } else { stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264QPMAP; #if 1 stVencChnAttr.stRcAttr.stH264QpMap.u32Gop = u32Gop; stVencChnAttr.stRcAttr.stH264QpMap.u32StatTime = u32StatTime; if((u32FrameRate >> 16) & (HI_U32)65535) { if((u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535)) { stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate = (u32FrameRate & (HI_U32)65535) / ((u32FrameRate >> 16) & (HI_U32)65535) + 1; stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } else { stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate = 30; stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } } else { stVencChnAttr.stRcAttr.stH264QpMap.u32SrcFrameRate = u32FrameRate; stVencChnAttr.stRcAttr.stH264QpMap.fr32DstFrameRate = u32FrameRate; } #endif } } else { SAMPLE_PRT("%s,%d,enRcMode(%d) not support\n",__FUNCTION__,__LINE__,enRcMode); return HI_FAILURE; } } break; case PT_H265: { // u32FrameRate=30; enRcMode+=10; if (VENC_RC_MODE_H265CBR == enRcMode) { VENC_H265_CBR_S stH265Cbr; printf("-----h265 VENC_RC_MODE_H265CBR\n"); stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265CBR; stH265Cbr.u32Gop = u32Gop; stH265Cbr.u32StatTime = u32StatTime; /* stream rate statics time(s) */ stH265Cbr.u32SrcFrameRate = u32FrameRate; /* input (vi) frame rate */ stH265Cbr.fr32DstFrameRate = u32FrameRate; /* target frame rate */ stH265Cbr.u32BitRate = 1024 * 3 + 2048*u32FrameRate/30; memcpy(&stVencChnAttr.stRcAttr.stH265Cbr, &stH265Cbr, sizeof(VENC_H265_CBR_S)); } else if (VENC_RC_MODE_H265FIXQP == enRcMode) { VENC_H265_FIXQP_S stH265FixQp; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265FIXQP; stH265FixQp.u32Gop = 30; stH265FixQp.u32SrcFrameRate = u32FrameRate; stH265FixQp.fr32DstFrameRate = u32FrameRate; stH265FixQp.u32IQp = 25; stH265FixQp.u32PQp = 30; stH265FixQp.u32BQp = 32; memcpy(&stVencChnAttr.stRcAttr.stH265FixQp, &stH265FixQp, sizeof(VENC_H265_FIXQP_S)); } else if (VENC_RC_MODE_H265VBR == enRcMode) { VENC_H265_VBR_S stH265Vbr; printf("-----h265 VENC_RC_MODE_H265VBR\n"); stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265VBR; stH265Vbr.u32Gop = u32Gop; stH265Vbr.u32StatTime = u32StatTime; stH265Vbr.u32SrcFrameRate = u32FrameRate; stH265Vbr.fr32DstFrameRate = u32FrameRate; stH265Vbr.u32MaxBitRate = 1024 * 3 + 2048*u32FrameRate/30; memcpy(&stVencChnAttr.stRcAttr.stH265Vbr, &stH265Vbr, sizeof(VENC_H265_VBR_S)); } else { SAMPLE_PRT("%s,%d,enRcMode(%d) not support\n",__FUNCTION__,__LINE__,enRcMode); return HI_FAILURE; } stVencChnAttr.stVencAttr.stAttrH265e.bRcnRefShareBuf = 1; } break; default: SAMPLE_PRT("cann't support this enType (%d) in this version!\n",enType); return HI_ERR_VENC_NOT_SUPPORT; } #endif s32Ret = HI_MPI_VENC_DestroyChn(VencChn); if (s32Ret != HI_SUCCESS) { printf("HI_MPI_VENC_DestroyChn err 0x%x\n", s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_VENC_CreateChn(VencChn, &stVencChnAttr); if (HI_SUCCESS != s32Ret) { printf("HI_MPI_VENC_CreateChn err 0x%x\n", s32Ret); return HI_FAILURE; } // if(curenType==enType) // { // printf("HI_MPI_VENC_SetChnAttr\n"); // printf("stVencChnAttr.stRcAttr.enRcMode=%u\n", stVencChnAttr.stRcAttr.enRcMode); // s32Ret = HI_MPI_VENC_SetChnAttr(VencChn, &stVencChnAttr); // if (HI_SUCCESS != s32Ret) // { // SAMPLE_PRT("HI_MPI_VENC_SetChn[%d]Attr faild with %#x! ===\n", \ // VencChn, s32Ret); // return s32Ret; // } // } // else // { // s32Ret = HI_MPI_VENC_CreateChn(VencChn, &stVencChnAttr); // if (HI_SUCCESS != s32Ret) // { // SAMPLE_PRT("HI_MPI_VENC_CreateChn [%d] faild with %#x! ===\n", \ // VencChn, s32Ret); // return s32Ret; // } // // printf("HI_MPI_VENC_CreateChn success\n"); // s32Ret = SAMPLE_COMM_VENC_CloseReEncode(VencChn); // if (HI_SUCCESS != s32Ret) // { // HI_MPI_VENC_DestroyChn(VencChn); // return s32Ret; // } // } #if 1 // memset(&stVencChnAttr,0,sizeof(VENC_CHN_ATTR_S)); s32Ret = HI_MPI_VENC_GetChnAttr(VencChn,&stVencChnAttr); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_VENC_GetChnATTR[%d] failed with %#x!\n", \ VencChn, s32Ret); return s32Ret; } printf("iiiiiiiiiiii %d %d\n", stVencChnAttr.stVencAttr.u32MaxPicWidth, stVencChnAttr.stVencAttr.u32MaxPicHeight); printf("chn_attr is stVencChnAttr.stVencAttr.u32PicWidth=%u\n\ stVencChnAttr.stVencAttr.u32PicHeight=%u\n\ stVencChnAttr.stVencAttr.enType=%u\n\ stVencChnAttr.stVencAttr.u32Profile=%u\n\ stVencChnAttr.stRcAttr.enRcMode=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32Gop=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFZ=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFM=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime=%u\n\ stVencChnAttr.stGopAttr.enGopMode=%u\n",\ stVencChnAttr.stVencAttr.u32PicWidth,stVencChnAttr.stVencAttr.u32PicHeight,stVencChnAttr.stVencAttr.enType,\ stVencChnAttr.stVencAttr.u32Profile,stVencChnAttr.stRcAttr.enRcMode,stVencChnAttr.stRcAttr.stH264Vbr.u32Gop,\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate,stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate,(stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate & (HI_U32)65535),\ ((stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate >> 16) & (HI_U32)65535),stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime,stVencChnAttr.stGopAttr.enGopMode); printf("chn_attr is stVencChnAttr.stVencAttr.u32PicWidth=%u\n\ stVencChnAttr.stVencAttr.u32PicHeight=%u\n\ stVencChnAttr.stVencAttr.enType=%u\n\ stVencChnAttr.stVencAttr.u32Profile=%u\n\ stVencChnAttr.stRcAttr.enRcMode=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32Gop=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32MaxBitRate=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRateFZ=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRateFM=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime=%u\n\ stVencChnAttr.stGopAttr.enGopMode=%u\n",\ stVencChnAttr.stVencAttr.u32PicWidth,stVencChnAttr.stVencAttr.u32PicHeight,stVencChnAttr.stVencAttr.enType,\ stVencChnAttr.stVencAttr.u32Profile,stVencChnAttr.stRcAttr.enRcMode,stVencChnAttr.stRcAttr.stH264Cbr.u32Gop,\ stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate,stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate,(stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate & (HI_U32)65535),\ ((stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate >> 16) & (HI_U32)65535),stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime,stVencChnAttr.stGopAttr.enGopMode); #endif if(flag == 1) { int i= 0; for ( i = 0; i < 8; i++) { s32Ret = HI_MPI_RGN_AttachToChn(20+(VencChn%3)*10+i, &stSrcChn, &g_stChnAttr[VencChn%3][i]); if (s32Ret != HI_SUCCESS) { SAMPLE_PRT("HI_MPI_RGN_AttachToChn failed! region = %d s32Ret: 0x%x.\n", i, s32Ret); return s32Ret; } } stRecvParam.s32RecvPicNum = -1; s32Ret = HI_MPI_VENC_StartRecvFrame(VencChn, &stRecvParam); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_VENC_StartRecvPic faild with%#x! \n", s32Ret); return s32Ret; } } printf("CONFIG_VENC_CHN_ATTR is success!!!\n"); return s32Ret; }
11-15
HI_S32 SAMPLE_COMM_VENC_Creat(VENC_CHN VencChn, PAYLOAD_TYPE_E enType, PIC_SIZE_E enSize, SAMPLE_RC_E enRcMode, HI_U32 u32Profile, HI_BOOL bRcnRefShareBuf,VENC_GOP_ATTR_S *pstGopAttr) { HI_S32 s32Ret; SIZE_S stPicSize; VENC_CHN_ATTR_S stVencChnAttr; VENC_ATTR_JPEG_S stJpegAttr; SAMPLE_VI_CONFIG_S stViConfig; HI_U32 u32FrameRate; HI_U32 u32StatTime; #if defined(LSGK_VERSION) HI_U32 u32Gop = 2;//25;//30; #else HI_U32 u32Gop = 25;//30; #endif s32Ret = SAMPLE_COMM_SYS_GetPicSize( enSize, &stPicSize); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("Get picture size failed!\n"); return HI_FAILURE; } SAMPLE_COMM_VI_GetSensorInfo(&stViConfig); if(SAMPLE_SNS_TYPE_BUTT == stViConfig.astViInfo[0].stSnsInfo.enSnsType) { SAMPLE_PRT("Not set SENSOR%d_TYPE !\n",0); return HI_FALSE; } s32Ret = SAMPLE_COMM_VI_GetFrameRateBySensor(stViConfig.astViInfo[0].stSnsInfo.enSnsType, &u32FrameRate); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("SAMPLE_COMM_VI_GetFrameRateBySensor failed!\n"); return s32Ret; } /****************************************** step 1: Create Venc Channel ******************************************/ stVencChnAttr.stVencAttr.enType = enType; stVencChnAttr.stVencAttr.u32MaxPicWidth = stPicSize.u32Width; stVencChnAttr.stVencAttr.u32MaxPicHeight = stPicSize.u32Height; stVencChnAttr.stVencAttr.u32PicWidth = stPicSize.u32Width;/*the picture width*/ stVencChnAttr.stVencAttr.u32PicHeight = stPicSize.u32Height;/*the picture height*/ u32FrameRate = getDevFramerate(0, 1); printf("enRcMode=%d\n",enRcMode); if (enType == PT_MJPEG || enType == PT_JPEG) { stVencChnAttr.stVencAttr.u32BufSize = ALIGN_UP(stPicSize.u32Width, 16) * ALIGN_UP(stPicSize.u32Height, 16); } else { stVencChnAttr.stVencAttr.u32BufSize = ALIGN_UP(stPicSize.u32Width * stPicSize.u32Height * 3 / 4, 64);/*stream buffer size*/ } stVencChnAttr.stVencAttr.u32Profile = u32Profile; stVencChnAttr.stVencAttr.bByFrame = HI_TRUE;/*get stream mode is slice mode or frame mode?*/ if(VENC_GOPMODE_SMARTP == pstGopAttr->enGopMode) { u32StatTime = pstGopAttr->stSmartP.u32BgInterval/u32Gop; } else { u32StatTime = 1; } switch (enType) { case PT_H265: { if (SAMPLE_RC_CBR == enRcMode) { VENC_H265_CBR_S stH265Cbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265CBR; stH265Cbr.u32Gop = u32Gop; stH265Cbr.u32StatTime = u32StatTime; /* stream rate statics time(s) */ stH265Cbr.u32SrcFrameRate = u32FrameRate; /* input (vi) frame rate */ stH265Cbr.fr32DstFrameRate = u32FrameRate; /* target frame rate */ switch (enSize) { case PIC_VGA: stH265Cbr.u32BitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH265Cbr.u32BitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH265Cbr.u32BitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH265Cbr.u32BitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH265Cbr.u32BitRate = 1024 * 5 + 5120*u32FrameRate/30; break; default : //other small resolution stH265Cbr.u32BitRate = 256; break; } memcpy(&stVencChnAttr.stRcAttr.stH265Cbr, &stH265Cbr, sizeof(VENC_H265_CBR_S)); } else if (SAMPLE_RC_FIXQP == enRcMode) { VENC_H265_FIXQP_S stH265FixQp; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265FIXQP; stH265FixQp.u32Gop = 30; stH265FixQp.u32SrcFrameRate = u32FrameRate; stH265FixQp.fr32DstFrameRate = u32FrameRate; stH265FixQp.u32IQp = 25; stH265FixQp.u32PQp = 30; stH265FixQp.u32BQp = 32; memcpy(&stVencChnAttr.stRcAttr.stH265FixQp, &stH265FixQp, sizeof(VENC_H265_FIXQP_S)); } else if (SAMPLE_RC_VBR == enRcMode) { VENC_H265_VBR_S stH265Vbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265VBR; stH265Vbr.u32Gop = u32Gop; stH265Vbr.u32StatTime = u32StatTime; stH265Vbr.u32SrcFrameRate = u32FrameRate; stH265Vbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stH265Vbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH265Vbr.u32MaxBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH265Vbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH265Vbr.u32MaxBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; default : stH265Vbr.u32MaxBitRate = 1024 * 15 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stH265Vbr, &stH265Vbr, sizeof(VENC_H265_VBR_S)); } else if(SAMPLE_RC_AVBR == enRcMode) { VENC_H265_AVBR_S stH265AVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265AVBR; stH265AVbr.u32Gop = u32Gop; stH265AVbr.u32StatTime = u32StatTime; stH265AVbr.u32SrcFrameRate = u32FrameRate; stH265AVbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stH265AVbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH265AVbr.u32MaxBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH265AVbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH265AVbr.u32MaxBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH265AVbr.u32MaxBitRate = 1024 * 5 + 5120*u32FrameRate/30; break; default : stH265AVbr.u32MaxBitRate = 1024 * 15 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stH265AVbr, &stH265AVbr, sizeof(VENC_H265_AVBR_S)); } else if(SAMPLE_RC_QVBR == enRcMode) { VENC_H265_QVBR_S stH265QVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265QVBR; stH265QVbr.u32Gop = u32Gop; stH265QVbr.u32StatTime = u32StatTime; stH265QVbr.u32SrcFrameRate = u32FrameRate; stH265QVbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stH265QVbr.u32TargetBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH265QVbr.u32TargetBitRate= 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH265QVbr.u32TargetBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH265QVbr.u32TargetBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH265QVbr.u32TargetBitRate = 1024 * 5 + 5120*u32FrameRate/30; break; case PIC_4000x3000: stH265QVbr.u32TargetBitRate = 1024 * 10 + 5120*u32FrameRate/30; break; case PIC_7680x4320: stH265QVbr.u32TargetBitRate = 1024 * 20 + 5120*u32FrameRate/30; break; default : stH265QVbr.u32TargetBitRate = 1024 * 15 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stH265QVbr, &stH265QVbr, sizeof(VENC_H265_QVBR_S)); } else if(SAMPLE_RC_CVBR == enRcMode) { VENC_H265_CVBR_S stH265CVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265CVBR; stH265CVbr.u32Gop = u32Gop; stH265CVbr.u32StatTime = u32StatTime; stH265CVbr.u32SrcFrameRate = u32FrameRate; stH265CVbr.fr32DstFrameRate = u32FrameRate; stH265CVbr.u32LongTermStatTime = 1; stH265CVbr.u32ShortTermStatTime = u32StatTime; switch (enSize) { case PIC_VGA: stH265CVbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 + 512*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 256; break; case PIC_720P: stH265CVbr.u32MaxBitRate = 1024 * 3 + 1024*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 2 + 1024*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 512; break; case PIC_1080P: stH265CVbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 2 + 2048*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024; break; case PIC_2592x1944: stH265CVbr.u32MaxBitRate = 1024 * 4 + 3072*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 3 + 3072*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024*2; break; case PIC_3840x2160: stH265CVbr.u32MaxBitRate = 1024 * 8 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 5 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024*3; break; case PIC_4000x3000: stH265CVbr.u32MaxBitRate = 1024 * 12 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 10 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024*4; break; case PIC_7680x4320: stH265CVbr.u32MaxBitRate = 1024 * 24 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 20 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024*6; break; default : stH265CVbr.u32MaxBitRate = 1024 * 24 + 5120*u32FrameRate/30; stH265CVbr.u32LongTermMaxBitrate = 1024 * 15 + 2048*u32FrameRate/30; stH265CVbr.u32LongTermMinBitrate = 1024*5; break; } memcpy(&stVencChnAttr.stRcAttr.stH265CVbr, &stH265CVbr, sizeof(VENC_H265_CVBR_S)); } else if(SAMPLE_RC_QPMAP == enRcMode) { VENC_H265_QPMAP_S stH265QpMap; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H265QPMAP; stH265QpMap.u32Gop = u32Gop; stH265QpMap.u32StatTime = u32StatTime; stH265QpMap.u32SrcFrameRate = u32FrameRate; stH265QpMap.fr32DstFrameRate = u32FrameRate; stH265QpMap.enQpMapMode = VENC_RC_QPMAP_MODE_MEANQP; memcpy(&stVencChnAttr.stRcAttr.stH265QpMap, &stH265QpMap, sizeof(VENC_H265_QPMAP_S)); } else { SAMPLE_PRT("%s,%d,enRcMode(%d) not support\n",__FUNCTION__,__LINE__,enRcMode); return HI_FAILURE; } stVencChnAttr.stVencAttr.stAttrH265e.bRcnRefShareBuf = bRcnRefShareBuf; } break; case PT_H264: { if (SAMPLE_RC_CBR == enRcMode) { VENC_H264_CBR_S stH264Cbr; printf("1111111111111111111111111111\n"); printf("2222222222 u32FrameRate = %u\n", u32FrameRate); stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CBR; stH264Cbr.u32Gop = u32Gop; /*the interval of IFrame*/ stH264Cbr.u32StatTime = u32StatTime; /* stream rate statics time(s) */ stH264Cbr.u32SrcFrameRate = u32FrameRate; /* input (vi) frame rate */ stH264Cbr.fr32DstFrameRate = u32FrameRate; /* target frame rate */ switch (enSize) { case PIC_VGA: stH264Cbr.u32BitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH264Cbr.u32BitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH264Cbr.u32BitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH264Cbr.u32BitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH264Cbr.u32BitRate = 1024 * 5 + 5120*u32FrameRate/30; break; default : //other small resolution stH264Cbr.u32BitRate = 512; break; } memcpy(&stVencChnAttr.stRcAttr.stH264Cbr, &stH264Cbr, sizeof(VENC_H264_CBR_S)); } else if (SAMPLE_RC_FIXQP == enRcMode) { VENC_H264_FIXQP_S stH264FixQp; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264FIXQP; stH264FixQp.u32Gop = 30; stH264FixQp.u32SrcFrameRate = u32FrameRate; stH264FixQp.fr32DstFrameRate = u32FrameRate; stH264FixQp.u32IQp = 25; stH264FixQp.u32PQp = 30; stH264FixQp.u32BQp = 32; memcpy(&stVencChnAttr.stRcAttr.stH264FixQp, &stH264FixQp, sizeof(VENC_H264_FIXQP_S)); } else if (SAMPLE_RC_VBR == enRcMode) { VENC_H264_VBR_S stH264Vbr; printf("2222222222222222222222222222222222\n"); printf("2222222222 u32FrameRate = %u\n", u32FrameRate); stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264VBR; stH264Vbr.u32Gop = u32Gop; stH264Vbr.u32StatTime = u32StatTime; stH264Vbr.u32SrcFrameRate = u32FrameRate; #ifdef LSGK_1 #ifdef LSGK_VERSION stH264Vbr.fr32DstFrameRate = 20; #else stH264Vbr.fr32DstFrameRate = u32FrameRate; #endif #else stH264Vbr.fr32DstFrameRate = u32FrameRate; #endif switch (enSize) { case PIC_VGA: stH264Vbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH264Vbr.u32MaxBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH264Vbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH264Vbr.u32MaxBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH264Vbr.u32MaxBitRate = 1024 * 5 + 5120*u32FrameRate/30; break; default : #ifdef YLOK_1 stH264Vbr.u32MaxBitRate = 512; #else stH264Vbr.u32MaxBitRate = 1024 * 15 + 2048*u32FrameRate/30; #endif break; } memcpy(&stVencChnAttr.stRcAttr.stH264Vbr, &stH264Vbr, sizeof(VENC_H264_VBR_S)); } else if (SAMPLE_RC_AVBR == enRcMode) { VENC_H264_VBR_S stH264AVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264AVBR; stH264AVbr.u32Gop = u32Gop; stH264AVbr.u32StatTime = u32StatTime; stH264AVbr.u32SrcFrameRate = u32FrameRate; stH264AVbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stH264AVbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_720P: stH264AVbr.u32MaxBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH264AVbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH264AVbr.u32MaxBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH264AVbr.u32MaxBitRate = 1024 * 5 + 5120*u32FrameRate/30; break; case PIC_4000x3000: stH264AVbr.u32MaxBitRate = 1024 * 10 + 5120*u32FrameRate/30; break; case PIC_7680x4320: stH264AVbr.u32MaxBitRate = 1024 * 20 + 5120*u32FrameRate/30; break; default : stH264AVbr.u32MaxBitRate = 1024 * 15 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stH264AVbr, &stH264AVbr, sizeof(VENC_H264_AVBR_S)); } else if (SAMPLE_RC_QVBR == enRcMode) { VENC_H264_QVBR_S stH264QVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264QVBR; stH264QVbr.u32Gop = u32Gop; stH264QVbr.u32StatTime = u32StatTime; stH264QVbr.u32SrcFrameRate = u32FrameRate; stH264QVbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stH264QVbr.u32TargetBitRate = 1024 + 512*u32FrameRate/30; break; case PIC_360P: stH264QVbr.u32TargetBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_720P: stH264QVbr.u32TargetBitRate = 1024 * 2 + 1024*u32FrameRate/30; break; case PIC_1080P: stH264QVbr.u32TargetBitRate = 1024 * 2 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stH264QVbr.u32TargetBitRate = 1024 * 3 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stH264QVbr.u32TargetBitRate = 1024 * 5 + 5120*u32FrameRate/30; break; case PIC_4000x3000: stH264QVbr.u32TargetBitRate = 1024 * 10 + 5120*u32FrameRate/30; break; case PIC_7680x4320: stH264QVbr.u32TargetBitRate = 1024 * 20 + 5120*u32FrameRate/30; break; default : stH264QVbr.u32TargetBitRate = 1024 * 15 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stH264QVbr, &stH264QVbr, sizeof(VENC_H264_QVBR_S)); } else if(SAMPLE_RC_CVBR == enRcMode) { VENC_H264_CVBR_S stH264CVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CVBR; stH264CVbr.u32Gop = u32Gop; stH264CVbr.u32StatTime = u32StatTime; stH264CVbr.u32SrcFrameRate = u32FrameRate; stH264CVbr.fr32DstFrameRate = u32FrameRate; stH264CVbr.u32LongTermStatTime = 1; stH264CVbr.u32ShortTermStatTime = u32StatTime; switch (enSize) { case PIC_VGA: stH264CVbr.u32MaxBitRate = 1024 + 512*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 + 512*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 256; break; case PIC_720P: stH264CVbr.u32MaxBitRate = 1024 * 3 + 1024*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 2 + 1024*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 512; break; case PIC_1080P: stH264CVbr.u32MaxBitRate = 1024 * 2 + 2048*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 2 + 2048*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024; break; case PIC_2592x1944: stH264CVbr.u32MaxBitRate = 1024 * 4 + 3072*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 3 + 3072*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024*2; break; case PIC_3840x2160: stH264CVbr.u32MaxBitRate = 1024 * 8 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 5 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024*3; break; case PIC_4000x3000: stH264CVbr.u32MaxBitRate = 1024 * 12 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 10 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024*4; break; case PIC_7680x4320: stH264CVbr.u32MaxBitRate = 1024 * 24 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 20 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024*6; break; default : stH264CVbr.u32MaxBitRate = 1024 * 24 + 5120*u32FrameRate/30; stH264CVbr.u32LongTermMaxBitrate = 1024 * 15 + 2048*u32FrameRate/30; stH264CVbr.u32LongTermMinBitrate = 1024*5; break; } memcpy(&stVencChnAttr.stRcAttr.stH264CVbr, &stH264CVbr, sizeof(VENC_H264_CVBR_S)); } else if(SAMPLE_RC_QPMAP == enRcMode) { VENC_H264_QPMAP_S stH264QpMap; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264QPMAP; stH264QpMap.u32Gop = u32Gop; stH264QpMap.u32StatTime = u32StatTime; stH264QpMap.u32SrcFrameRate = u32FrameRate; stH264QpMap.fr32DstFrameRate = u32FrameRate; memcpy(&stVencChnAttr.stRcAttr.stH264QpMap, &stH264QpMap, sizeof(VENC_H264_QPMAP_S)); } else { SAMPLE_PRT("%s,%d,enRcMode(%d) not support\n",__FUNCTION__,__LINE__,enRcMode); return HI_FAILURE; } stVencChnAttr.stVencAttr.stAttrH264e.bRcnRefShareBuf = bRcnRefShareBuf; } break; case PT_MJPEG: { if (SAMPLE_RC_FIXQP == enRcMode) { VENC_MJPEG_FIXQP_S stMjpegeFixQp; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_MJPEGFIXQP; stMjpegeFixQp.u32Qfactor = 95; stMjpegeFixQp.u32SrcFrameRate = u32FrameRate; stMjpegeFixQp.fr32DstFrameRate = u32FrameRate; memcpy(&stVencChnAttr.stRcAttr.stMjpegFixQp, &stMjpegeFixQp,sizeof(VENC_MJPEG_FIXQP_S)); } else if (SAMPLE_RC_CBR == enRcMode) { VENC_MJPEG_CBR_S stMjpegeCbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_MJPEGCBR; stMjpegeCbr.u32StatTime = u32StatTime; stMjpegeCbr.u32SrcFrameRate = u32FrameRate; stMjpegeCbr.fr32DstFrameRate = u32FrameRate; switch (enSize) { case PIC_VGA: stMjpegeCbr.u32BitRate = 1024 * 3 + 1024*u32FrameRate/30; break; case PIC_720P: stMjpegeCbr.u32BitRate = 1024 * 5 + 1024*u32FrameRate/30; break; case PIC_1080P: stMjpegeCbr.u32BitRate = 1024 * 8 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stMjpegeCbr.u32BitRate = 1024 * 20 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stMjpegeCbr.u32BitRate = 1024 * 25 + 5120*u32FrameRate/30; break; case PIC_4000x3000: stMjpegeCbr.u32BitRate = 1024 * 30 + 5120*u32FrameRate/30; break; case PIC_7680x4320: stMjpegeCbr.u32BitRate = 1024 * 40 + 5120*u32FrameRate/30; break; default : stMjpegeCbr.u32BitRate = 1024 * 20 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stMjpegCbr, &stMjpegeCbr,sizeof(VENC_MJPEG_CBR_S)); } else if (SAMPLE_RC_VBR == enRcMode) { VENC_MJPEG_VBR_S stMjpegVbr; stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_MJPEGVBR; stMjpegVbr.u32StatTime = u32StatTime; stMjpegVbr.u32SrcFrameRate = u32FrameRate; stMjpegVbr.fr32DstFrameRate = 5; switch (enSize) { case PIC_VGA: stMjpegVbr.u32MaxBitRate = 1024 * 3 + 1024*u32FrameRate/30; break; case PIC_720P: stMjpegVbr.u32MaxBitRate = 1024 * 5 + 1024*u32FrameRate/30; break; case PIC_1080P: stMjpegVbr.u32MaxBitRate = 1024 * 8 + 2048*u32FrameRate/30; break; case PIC_2592x1944: stMjpegVbr.u32MaxBitRate = 1024 * 20 + 3072*u32FrameRate/30; break; case PIC_3840x2160: stMjpegVbr.u32MaxBitRate = 1024 * 25 + 5120*u32FrameRate/30; break; case PIC_4000x3000: stMjpegVbr.u32MaxBitRate = 1024 * 30 + 5120*u32FrameRate/30; break; case PIC_7680x4320: stMjpegVbr.u32MaxBitRate = 1024 * 40 + 5120*u32FrameRate/30; break; default : stMjpegVbr.u32MaxBitRate = 1024 * 20 + 2048*u32FrameRate/30; break; } memcpy(&stVencChnAttr.stRcAttr.stMjpegVbr, &stMjpegVbr,sizeof(VENC_MJPEG_VBR_S)); } else { SAMPLE_PRT("cann't support other mode(%d) in this version!\n",enRcMode); return HI_FAILURE; } } break; case PT_JPEG: stJpegAttr.bSupportDCF = HI_FALSE; stJpegAttr.stMPFCfg.u8LargeThumbNailNum = 0; stJpegAttr.enReceiveMode = VENC_PIC_RECEIVE_SINGLE; memcpy(&stVencChnAttr.stVencAttr.stAttrJpege, &stJpegAttr, sizeof(VENC_ATTR_JPEG_S)); break; default: SAMPLE_PRT("cann't support this enType (%d) in this version!\n",enType); return HI_ERR_VENC_NOT_SUPPORT; } if(PT_MJPEG == enType || PT_JPEG == enType ) { stVencChnAttr.stGopAttr.enGopMode = VENC_GOPMODE_NORMALP; stVencChnAttr.stGopAttr.stNormalP.s32IPQpDelta = 0; } else { memcpy(&stVencChnAttr.stGopAttr,pstGopAttr,sizeof(VENC_GOP_ATTR_S)); if((VENC_GOPMODE_BIPREDB == pstGopAttr->enGopMode)&&(PT_H264 == enType)) { if(0 == stVencChnAttr.stVencAttr.u32Profile) { stVencChnAttr.stVencAttr.u32Profile = 1; SAMPLE_PRT("H.264 base profile not support BIPREDB, so change profile to main profile!\n"); } } if((VENC_RC_MODE_H264QPMAP == stVencChnAttr.stRcAttr.enRcMode)||(VENC_RC_MODE_H265QPMAP == stVencChnAttr.stRcAttr.enRcMode)) { if(VENC_GOPMODE_ADVSMARTP == pstGopAttr->enGopMode) { stVencChnAttr.stGopAttr.enGopMode = VENC_GOPMODE_SMARTP; SAMPLE_PRT("advsmartp not support QPMAP, so change gopmode to smartp!\n"); } } } printf("-------------------------- stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate=%d\n", stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate); printf("chn_attr is stVencChnAttr.stVencAttr.u32PicWidth=%u\n\ stVencChnAttr.stVencAttr.u32PicHeight=%u\n\ stVencChnAttr.stVencAttr.enType=%u\n\ stVencChnAttr.stVencAttr.u32Profile=%u\n\ stVencChnAttr.stRcAttr.enRcMode=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32Gop=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFZ=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRateFM=%u\n\ stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime=%u\n\ stVencChnAttr.stGopAttr.enGopMode=%u\n",\ stVencChnAttr.stVencAttr.u32PicWidth,stVencChnAttr.stVencAttr.u32PicHeight,stVencChnAttr.stVencAttr.enType,\ stVencChnAttr.stVencAttr.u32Profile,stVencChnAttr.stRcAttr.enRcMode,stVencChnAttr.stRcAttr.stH264Vbr.u32Gop,\ stVencChnAttr.stRcAttr.stH264Vbr.u32MaxBitRate,stVencChnAttr.stRcAttr.stH264Vbr.u32SrcFrameRate,(stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate & (HI_U32)65535),\ ((stVencChnAttr.stRcAttr.stH264Vbr.fr32DstFrameRate >> 16) & (HI_U32)65535),stVencChnAttr.stRcAttr.stH264Vbr.u32StatTime,stVencChnAttr.stGopAttr.enGopMode); printf("chn_attr is stVencChnAttr.stVencAttr.u32PicWidth=%u\n\ stVencChnAttr.stVencAttr.u32PicHeight=%u\n\ stVencChnAttr.stVencAttr.enType=%u\n\ stVencChnAttr.stVencAttr.u32Profile=%u\n\ stVencChnAttr.stRcAttr.enRcMode=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32Gop=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32MaxBitRate=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRateFZ=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRateFM=%u\n\ stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime=%u\n\ stVencChnAttr.stGopAttr.enGopMode=%u\n",\ stVencChnAttr.stVencAttr.u32PicWidth,stVencChnAttr.stVencAttr.u32PicHeight,stVencChnAttr.stVencAttr.enType,\ stVencChnAttr.stVencAttr.u32Profile,stVencChnAttr.stRcAttr.enRcMode,stVencChnAttr.stRcAttr.stH264Cbr.u32Gop,\ stVencChnAttr.stRcAttr.stH264Cbr.u32BitRate,stVencChnAttr.stRcAttr.stH264Cbr.u32SrcFrameRate,(stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate & (HI_U32)65535),\ ((stVencChnAttr.stRcAttr.stH264Cbr.fr32DstFrameRate >> 16) & (HI_U32)65535),stVencChnAttr.stRcAttr.stH264Cbr.u32StatTime,stVencChnAttr.stGopAttr.enGopMode); s32Ret = HI_MPI_VENC_CreateChn(VencChn, &stVencChnAttr); if (HI_SUCCESS != s32Ret) { SAMPLE_PRT("HI_MPI_VENC_CreateChn [%d] faild with %#x! ===\n", \ VencChn, s32Ret); return s32Ret; } s32Ret = SAMPLE_COMM_VENC_CloseReEncode(VencChn); if (HI_SUCCESS != s32Ret) { HI_MPI_VENC_DestroyChn(VencChn); return s32Ret; } return HI_SUCCESS; }
11-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值