intel gpu 解码

来源:互联网 发布:怎样制作一个软件 编辑:程序博客网 时间:2024/06/07 04:04

背景

在linux上使用intel的gpu加速解码h264,根据以往的经验往往需要将intel gpu的demo集成到我们自己代码当中, 但是这样局限性很大, 每一代的gpu加速的修改, 我们代码都需要调整,得不偿失。

封装接口

  • 接口类
class  SRH264DecInterface{public:    virtual int InitDecode() = 0;    virtual int Decode(const SRDec_H264Data &/*[in]*/ h264_data, SRDec_YuvData &/*[out]*/ yuv_data) = 0;public:    SRH264DecInterface(){};    virtual ~SRH264DecInterface(){};};
  • 实现类
class H264IntelDecode: public SRH264DecInterface{public:    H264IntelDecode();    ~H264IntelDecode();    int InitDecode();    int Decode(const SRDec_H264Data &/*[in]*/ h264_data, SRDec_YuvData &/*[out]*/ yuv_data);private:    bool                                    _init_flag;protected:    mfxStatus CreateHWDevice();private:    int Release();    mfxStatus InitMfxParams();    mfxStatus AllocFrames();    mfxStatus CreateAllocator();    int DecConvertSurfaceToBistream(mfxFrameSurface1 *surface);    int DecExtendBitstream(int new_size, mfxBitstream *pbs);    mfxStatus MFXDecodeHeader();    mfxStatus MFXDecodePacket(SRDec_YuvData &/*[out]*/ yuv_data);private:    bool                       m_bExternalAlloc; // use memory allocator as external for Media SDK    MFXVideoSession            m_mfxSession;    mfxIMPL                    m_impl;    MFXVideoDECODE*            m_pmfxDEC;    mfxVideoParam              m_mfxVideoParams;    GeneralAllocator*          m_pGeneralAllocator;    mfxFrameAllocResponse      m_mfxResponse;    mfxAllocatorParams*        m_pmfxAllocatorParams;    mfxFrameSurface1*          m_pmfxSurfaces;    MemType                    m_memType;    mfxBitstream               m_mfxBS;    CHWDevice                 *m_hwdev;    bool                      _initParaSucc;    int   width;    int   height;    mfxI32                    m_monitorType;    FILE * fp_yuv;    mfxBitstream * frame_bs;};

注意

这里结合了sample_decode这个demo, windows版本和Linux版本都调试通了

联系

qq群 h264学习过程交流 191884149

原创粉丝点击