版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
客户服务电话 客户服务传真 客户服务邮箱 目 图4-1按流方式解码API函数使用流程 图4-2按帧方式解码API函数使用流程 表1-1解码库开发包组 表1-2解码库运行环 本文以Hi3516A描述为例,未有特殊说明,Hi3516DHi3516A
-*
1 解码库内部完成了H.265解码的主要流程,并对外提供了灵活简单的API,用户可快开发应用程序。解码库的主要组件及相关说明如表1-1所示。API32-32-64-64-WindowsXP、Windows7、Windows8IntelAMDVisualStudioVisualStudioVisualStudioWindowsXPWindows7Windows7Windows8Windows8Windows无IntelCPUIntelCPUAMDAxCPUIntel45679-------0果图像不包含B帧,则可以使用解码序输出模式以降低输出时延。INT32IHW265D_Delete(IH265DEC_HANDLE--0---0INT32IHW265D_DecodeFrame(IH265DEC_HANDLEhDecoder,----码流长度(字节为单位)--IH265D_DECODE_END-----------原始码流长度(字节数)--255-255---输出当前帧信息包含一帧中各种类型CU的个数。01uiStreamLen。正常情况下解码模式配置为IH265D_DECODE。如果函数返回理存储在pstOutArgs中的图像。IH265D_NO_PICTURE,表示解INT32IHW265D_DecodeAU(IH265DEC_HANDLEhDecoder,*pstInArgs,IH265DEC_OUTARGS--------------输出当前帧信息包含一帧中各种类型CU的个数。0
3typedefsigned typedefsigned typedefsignedint typedefunsignedchar typedefunsignedshort typedefunsignedint typedefunsigned typedef typedefvoid*(*IHWVIDEO_ALG_MALLOC_FXN)(UINT32uiChannelID,UINT32typedefvoid(*IHWVIDEO_ALG_FREE_FXN)(UINT32uiChannelID,void*pMem);typedefvoid(*IHWVIDEO_ALG_LOG_FXN)(UINT32uiChannelID,IHWVIDEO_ALG_LOG_LEVELeLevel,INT8*pszMsg,...);typedefenum{IH265D_SINGLE_THREAD=0, /*单线程*/ /*多线程}typedefenum{IH265D_DECODE_ORDER=0, /*按解码序输出*/ /*按显示序输出*/}typedefenum{IH265D_DECODE /* }typedefenum{IH265D_FRAME_I=0,}typedefenum{IH265D_GETDISPLAY=0, /*已经解码出一帧并输出,可用于显示*/ /*解码器没有图像输出,需要更多的码流*/ /*解码完毕,已经输出全部图像*/ /*句柄错误*/}/*typedefstruct{/*/*/*/*HW265D_THREADTYPEeThreadType; /*线程类型*/HW265D_OUTPUTORDEReOutputOrder; /*输出顺序,仅在DecodeFrame有效, /*用户数据*/IHWVIDEO_ALG_MALLOC_FXNMallocFxn;/*分配内存回调函数*/ FreeFxn; /*释放内存回调函数*/ /*日志回调函数*/typedefstructtagIH265DEC_INARGS{UINT8 /*UINT32 /*UINT64 /*HW265D_DECODEMODEeDecodeMode;/*0:正常模式;1:Flush/*typedefstruct{/*/*/*/*HW265D_DECODESTATUSeDecodeStatus;/*/*/*/*/*/*图像YUV3/* ///vui /* //vps uiVpsNumUnitsInTick;/* ///*///*/*typedefstruct{UINT32uiUserDataType;/*用户数据类型*/UINT32uiUserDataSize;/*用户数据长度*/UINT8 /*用户数据缓冲区structtagHW265D_USERDATA*pNext;/*/*typedefstruct{ cVersionChar[IHWVIDEO_ALG_VERSION_LENGTH];/*版本号*/ /*编译时间*/UINT32 /*/*每帧图像各种CU数量信息*/typedefstructtagCU_OUTPUT_INFO{4x4CUnumber8x8CUnumber16x16CU32x32CU64x64CU4x4CUnumber8x8CUnumberUINT32uiCuNumPcm16; /*IPCM16x16CUnumber*/UINT32uiCuNumPcm32; /*IPCM32x32CUnumber*/UINT32uiCuNumPcm64; /*IPCM64x64CUnumber*/UINT32uiCuNumInter8; /*inter8x8CUnumber*/UINT32uiCuNumInter16; /*inter16x16CUnumber*/UINT32uiCuNumInter32; /*inter32x32CUnumber*/UINT32uiCuNumInter64; /*inter64x64CUnumber*/UINT32uiCuNumSkip8; /*skip8x8CUnumber*/UINT32uiCuNumSkip16; /*skip16x16CUnumber*/UINT32uiCuNumSkip32; /*skip32x32CUnumber*/UINT32 /*skip64x64CUnumber是否否是读取到码流长度为输入输入始位置为buffer0,码流长度为否输出是输出是否void*HW265D_Malloc(UINT32channel_id,UINT32{return(void}voidHW265D_Free(UINT32channel_id,void*{}voidHW265D_Log(UINT32channel_id,IHWVIDEO_ALG_LOG_LEVELeLevel,*p_msg,{}INT32H265DecLoadAU(UINT8*pStream,UINT32iStreamLen,UINT32*{UINT32UINT32state=0xffffffff;BOOL32*pFrameLen=if(NULL==pStream||iStreamLen<={return-}for(i=0;i<iStreamLen;{if((state&0xFFFFFF7E)>=0x100&&(state&0xFFFFFF7E)<=0x13E){if(1==bFrameStartFound{if((pStream[i+1]>>7)=={*pFrameLen=i-4;return0;}}{bFrameStartFound=}}/*findavps,sps,if((state&0xFFFFFF7E)==0x140||(state&0xFFFFFF7E)==0x142||(state&0xFFFFFF7E)==0x144){if(1=={*pFrameLen=i-4;return0;}{bFrameStartFound=}}state=(state<<8)|}*pFrameLen=i;return-1;}intmain(intargc,unsignedchar**{FILE*fpInFile=NULL;FILE*fpOutFile=NULL;INT32iRet=0;UINT8*pInputStream=NULL,*pStream;UINT32uiChannelId=0;UINT32iFrameIdx=0;BOOL32bStreamEnd=0;INT32iFileLen;IH265DEC_HANDLEhDecoder=IHW265D_INIT_PARAMstInitParam={0};IH265DEC_INARGSstInArgs;IH265DEC_OUTARGSstOutArgs={0};/*openinputstreamfileandoutputyuvfile*/fpInFile=fopen(argv[1],"rb");fpOutFile=fopen(argv[2],if(NULL==fpInFile||NULL=={fprintf(stderr,"Unabletoopenh265streamfile%soryuvfile%s.\n",argv[1],goto}printf("decodingfile:%s...\n",printf("saveyuvfile:%s...\n",/*mallocstreambuffer*/fseek(fpInFile,0,SEEK_END);iFileLen=ftell(fpInFile);fseek(fpInFile,0,SEEK_SET);pInputStream=(unsignedchar*)malloc(iFileLen);if(NULL==pInputStream){fprintf(stderr,"Mallocfailed!\n");gotoexitmain;}/*createdecodehandle*/ =0; = = = =IH265D_SINGLE_THREAD; //or =IH265D_DECODE_ORDER; //or =HW265D_Malloc; =HW265D_Free; =iRet=IHW265D_Create(&hDecoder,&stInitParam);if(IHW265D_OK!=iRet){fprintf(stderr,"Unabletocreatedecoder.\n");gotoexitmain;}/*readH.265streamtostreambuffer*/fread(pInputStream,1,iFileLen,fpInFile);pStream=pInputStream;/*decodeprocess*/while(!bStreamEnd){INT32stInArgs.eDecodeMode=(iNaluLen>0)?IH265D_DECODE: =pStream;pStream+=iNaluLen;iFileLen-=stOutArgs.eDecodeStatus=-stOutArgs.uiBytsConsumed={//whendecoderisempty,exitloop;if(stOutArgs.eDecodeStatus==IH265D_NO_PICTURE){bStreamEnd=1;}//outputoneif(stOutArgs.eDecodeStatus=={//saveyuvtooutputfileif(fpOutFile!=NULL){UINT32for(i=0;i<stOutArgs.uiDecHeight;{fwrite(stOutArgs.pucOutYUV[0]+i*stOutArgs.uiYStride,1,stOutArgs.uiDecWidth,fpOutFile);}for(i=0;i<((stOutArgs.uiDecHeight)>>1);{}for(i=0;i<((stOutArgs.uiDecHeight)>>1);{}}}//continuetodecodetherestofstream +=stOutArgs.uiBytsConsumed; -=iRet=IHW265D_De
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医生诊疗过程中仪态举止
- 2026年河南工业贸易职业学院单招综合素质笔试参考题库带答案解析
- 医疗器械使用与维护礼仪
- 2026年呼和浩特职业学院单招综合素质笔试备考试题带答案解析
- 2026年福建师范大学协和学院高职单招职业适应性考试参考题库带答案解析
- 个性化药物治疗在罕见病治疗中的应用
- 医院临床科研能力提升
- 2026年保险职业学院高职单招职业适应性考试备考试题带答案解析
- 2026年合肥信息技术职业学院单招综合素质笔试备考试题带答案解析
- 护理健康教育方法创新
- 2026年及未来5年市场数据中国内贸集装箱行业全景评估及投资规划建议报告
- 2025贵州盐业(集团)有限责任公司贵阳分公司招聘笔试考试备考题库及答案解析
- 重庆八中高2026届高三12月适应性月考(四)生物试卷(含答案解析)
- 电商行业个性化服务2025年用户需求分析报告
- 湘教版(2024)八上地理教学设计-第二章第三节 中国的河流 第二课时 长江
- 2024年全国职业院校技能大赛中职组(舞蹈表演赛项)考试题库(含答案)
- 中医外治技术之穴位注射操作指南:精准操作与安全优化的临床应用解析
- 农业物联网技术服务合同
- 湖湘文庙建筑文化传承与保护研究
- 数据中心消防培训课件教学
- JJF(蒙) 042-2023 零碳产业园计量评价规范
评论
0/150
提交评论