海思h264解码库

海思h264解码库海思的dll,解码h264 解码后转出yuv12dll自己百度下载 hi_h264dec.dll  hi_h264dec_w.dll 调用方法:if(H264Dec.Hi264DecAU(_decHandle,pH264Data,frameLen,0,ref_decodeFrame,0)==0) pH264Data是h264帧的句柄,frameLen…

大家好,又见面了,我是你们的朋友全栈君。

海思的dll,解码h264  解码后转出yuv12
dll自己百度下载  hi_h264dec.dll   hi_h264dec_w.dll
 
调用方法:
if (H264Dec.Hi264DecAU(_decHandle, pH264Data, frameLen, 0, ref _decodeFrame, 0) == 0)
 
pH264Data是h264帧的句柄,frameLen是h264帧的长度,_decodeFrame是解码后的yuv帧
 
 
 
#region 解码器相关变量声明 /// <summary> /// 数据的句柄 /// </summary> /// <summary> /// 这是解码器属性信息 /// </summary> public H264Dec.hiH264_DEC_ATTR_S decAttr; /// <summary> /// 这是解码器输出图像信息 /// </summary> public H264Dec.hiH264_DEC_FRAME_S _decodeFrame = new H264Dec.hiH264_DEC_FRAME_S(); /// <summary> /// 解码器句柄 /// </summary> public IntPtr _decHandle; static double[,] YUV2RGB_CONVERT_MATRIX = new double[3, 3] { { 1, 0, 1.4022 }, { 1, -0.3456, -0.7145 }, { 1, 1.771, 0 } }; #endregion #region 解码器相关初始化,一般在窗口load中进行初始化 decAttr = new H264Dec.hiH264_DEC_ATTR_S(); decAttr.uPictureFormat = 0; decAttr.uStreamInType = 0; decAttr.uPicWidthInMB = (uint)width; decAttr.uPicHeightInMB = (uint)height; decAttr.uBufNum = 8; decAttr.uWorkMode = 16; //创建、初始化解码器句柄 _decHandle = H264Dec.Hi264DecCreate(ref decAttr); #endregion using System; using System.Runtime.InteropServices; namespace FVD.Common { public class H264Dec { public const int HI_SUCCESS = 0; public const int HI_FAILURE = -1; public const int HI_LITTLE_ENDIAN = 1234; public const int HI_BIG_ENDIAN = 4321; public const int HI_DECODER_SLEEP_TIME = 60000; public const int HI_H264DEC_OK = 0; public const int HI_H264DEC_NEED_MORE_BITS = -1; public const int HI_H264DEC_NO_PICTURE = -2; public const int HI_H264DEC_ERR_HANDLE = -3; [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecImageEnhance",CallingConvention = CallingConvention.Cdecl)] public static extern int Hi264DecImageEnhance(IntPtr hDec, refhiH264_DEC_FRAME_S pDecFrame, uint uEnhanceCoeff); [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecCreate", CallingConvention =CallingConvention.Cdecl)] public static extern IntPtr Hi264DecCreate(ref hiH264_DEC_ATTR_S pDecAttr); [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecDestroy", CallingConvention =CallingConvention.Cdecl)] public static extern void Hi264DecDestroy(IntPtr hDec); [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecGetInfo", CallingConvention =CallingConvention.Cdecl)] public static extern int Hi264DecGetInfo(ref hiH264_LIBINFO_S pLibInfo); /// <summary> /// 对输入的一段码流进行解码并按帧输出图像 /// </summary> /// <param name="hDec">解码器句柄</param> /// <param name="pStream">码流起始地址</param> /// <param name="iStreamLen">码流长度</param> /// <param name="ullPTS">时间戳信息</param> /// <param name="pDecFrame">图像信息</param> /// <param name="uFlags">解码模式 0:正常解码;1、解码完毕并要求解码器输出残留图像</param> /// <returns></returns> [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecFrame", CallingConvention = CallingConvention.Cdecl)] public static extern int Hi264DecFrame(IntPtr hDec, IntPtr pStream, uint iStreamLen, ulong ullPTS, ref hiH264_DEC_FRAME_S pDecFrame, uint uFlags); [DllImport("hi_h264dec_w.dll", EntryPoint = "Hi264DecAU", CallingConvention =CallingConvention.Cdecl)] public static extern int Hi264DecAU(IntPtr hDec, IntPtr pStream, uint iStreamLen,ulong ullPTS, ref hiH264_DEC_FRAME_S pDecFrame, uint uFlags); /// <summary> /// 解码器属性信息。 /// </summary>  [StructLayout(LayoutKind.Sequential)] public struct hiH264_DEC_ATTR_S { /// <summary> /// 解码器输出图像格式,目前解码库只支持YUV420图像格式 /// </summary> public uint uPictureFormat; /// <summary> /// 输入码流格式 0x00: 目前解码库只支持以“00 00 01”为nalu分割符的流式H.264码流 /// </summary> public uint uStreamInType; /// <summary> /// 图像宽度 /// </summary> public uint uPicWidthInMB; /// <summary> /// 图像高度 /// </summary> public uint uPicHeightInMB; /// <summary> /// 参考帧数目 /// </summary> public uint uBufNum; /// <summary> /// 解码器工作模式 /// </summary> public uint uWorkMode; /// <summary> /// 用户私有数据 /// </summary> public IntPtr pUserData; /// <summary> /// 保留字 /// </summary> public uint uReserved; } /// <summary> /// 解码器输出图像信息数据结构 /// </summary>  [StructLayout(LayoutKind.Sequential)] public struct hiH264_DEC_FRAME_S { /// <summary> /// Y分量地址 /// </summary> public IntPtr pY; /// <summary> /// U分量地址 /// </summary> public IntPtr pU; /// <summary> /// V分量地址 /// </summary> public IntPtr pV; /// <summary> /// 图像宽度(以像素为单位) /// </summary> public uint uWidth; /// <summary> /// 图像高度(以像素为单位) /// </summary> public uint uHeight; /// <summary> /// 输出Y分量的stride (以像素为单位) /// </summary> public uint uYStride; /// <summary> /// 输出UV分量的stride (以像素为单位) /// </summary> public uint uUVStride; /// <summary> /// 图像裁减信息:左边界裁减像素数 /// </summary> public uint uCroppingLeftOffset; /// <summary> /// 图像裁减信息:右边界裁减像素数 /// </summary> public uint uCroppingRightOffset; /// <summary> /// 图像裁减信息:上边界裁减像素数 /// </summary> public uint uCroppingTopOffset; /// <summary> /// 图像裁减信息:下边界裁减像素数 /// </summary> public uint uCroppingBottomOffset; /// <summary> /// 输出图像在dpb中的序号 /// </summary> public uint uDpbIdx; /// <summary> /// 图像类型:0:帧; 1:顶场; 2:底场 */ /// </summary> public uint uPicFlag; /// <summary> /// 图像类型:0:帧; 1:顶场; 2:底场 */ /// </summary> public uint bError; /// <summary> /// 图像是否为IDR帧:0:非IDR帧;1:IDR帧 /// </summary> public uint bIntra; /// <summary> /// 时间戳 /// </summary> public ulong ullPTS; /// <summary> /// 图像信号 /// </summary> public uint uPictureID; /// <summary> /// 保留字 /// </summary> public uint uReserved; /// <summary> /// 指向用户私有数据 /// </summary> public IntPtr pUserData; } /// <summary> /// 解码库版本、版权和能力集信息。 /// </summary>  [StructLayout(LayoutKind.Sequential)] public struct hiH264_LIBINFO_S { /// <summary> /// 主编号 /// </summary> public uint uMajor; /// <summary> /// 次编号 /// </summary> public uint uMinor; /// <summary> /// 发布编号 /// </summary> public uint uRelease; /// <summary> /// 建构编号 /// </summary> public uint uBuild; /// <summary> /// 版本信息 /// </summary>  [MarshalAs(UnmanagedType.LPStr)] public string sVersion; /// <summary> /// 版权信息 /// </summary>  [MarshalAs(UnmanagedType.LPStr)] public string sCopyRight; /// <summary> /// 解码库能力集 /// </summary> public uint uFunctionSet; /// <summary> /// 支持的输出图像格式 /// </summary> public uint uPictureFormat; /// <summary> /// 输入码流格式 /// </summary> public uint uStreamInType; /// <summary> /// 最大图像宽度(以像素为单位) /// </summary> public uint uPicWidth; /// <summary> /// 最大图像高度(以像素为单位) /// </summary> public uint uPicHeight; /// <summary> /// 最大参考帧数目 /// </summary> public uint uBufNum; /// <summary> /// 保留字 /// </summary> public uint uReserved; } /// <summary> /// 用户私有数据信息。 /// </summary>  [StructLayout(LayoutKind.Sequential)] public struct hiH264_USERDATA_S { /// <summary> /// 用户数据类型 /// </summary> public uint uUserDataType; /// <summary> /// 用户数据长度 /// </summary> public uint uUserDataSize; /// <summary> /// 用户数据缓冲区 /// </summary> public IntPtr pData; /// <summary> /// 指向下一段用户数据 /// </summary> public IntPtr pNext; } } }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148508.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 模糊PID算法及其MATLAB仿真(2)

    模糊PID算法及其MATLAB仿真(2)上一篇写了模糊自整定PID的理论,这篇来做MATLAB仿真。目录补充内容:如何计算临界稳定下的开环增益Ku和震荡周期TuMATLAB进行模糊PID仿真1、准备工作2、模糊控制器的设计补充内容:如何计算临界稳定下的开环增益Ku和震荡周期Tu学过控制工程或者相关理论的同学应该比较了解,判断系统稳定性的条件一般用到劳斯表(劳斯判据)。而PID控制和模糊PI…

  • AndroidStudio入门基础(一)——基础布局

    AndroidStudio入门基础(一)——基础布局写在前面:上学期学习了Android,从一开始的什么都不懂到后来成功做出一个课程设计作品,回忆起来一路还是充满坎坷和辛酸泪的啊。遗忘是可怕的,为了防止以后把好不容易学到的东西忘得一干二净,我打算写一系列的AndroidStudio教程记录一些有用的知识点,当然,我会从最基础的地方写起,希望可以帮助到一些初学者~最后,如果时间和精力允许的情况下,我会一步步的还原我的课程设计,喵喵喵~(…

  • 广告平台精准推送系统解决方案架构「建议收藏」

    广告平台精准推送系统解决方案架构「建议收藏」以上就是广告精准推送的一个架构图。广告联盟是由多家广告提供商提供形成的一个组织,提供了多个平台的收集到的数据进行整合,数据的分析、清理,计算、统计等,提供向需要投放广告的广告主提供了一个投放系统平台。当用户进入门户网站或者app时,不同的用户看到的是不同的广告,广告联盟的系统计算出了不同用户或者用户群体的不同需求,通过广告推荐引擎系统和数据仓库中的统计数据以及用户的需求,展示给对应需求的用户观看,…

  • dga 分析_tcga数据库分析

    dga 分析_tcga数据库分析02n-0iy6gn3ozzwmyu.7i43n9qil1g1z2-.com0e527eaf_5ec5_4623_9fe9_e459583acd72.com0fmgm1cuu7h1279dghgka0ltg.com0gqo9jx0ir0rjy4b.com0hm4mqw9hoe3gvajwi.com-0j2zkzul4p5v8zo4d0m.127f5zlwuhq7yy2qufp6l.com…

  • idea2021.9 激活码[最新免费获取]

    (idea2021.9 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html83…

  • markdown表格语法_在线markdown编辑器

    markdown表格语法_在线markdown编辑器"markdown使用教程""markdown系列教程"推荐阅读"你不知道的Markdown基础知识"markdown制作表格

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号