C++結合體轉換成C#構造的完成辦法。本站提示廣大學習愛好者:(C++結合體轉換成C#構造的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C++結合體轉換成C#構造的完成辦法正文
本文實例重要參考MSDN:http://msdn.microsoft.com/zh-cn/library/ya9bz4ha%28v=vs.80%29.aspx
比來由於項目中碰到了C++結合體轉換成C#構造的情形,查了許多材料才轉換勝利。
備注:關於官方這個UNION示例,我的簡略懂得,就是這類UNION做法,可恰當取代IF ELSE 之類操作。
處理成績:假如只吸收視頻解碼數據,而從不吸收音頻數據,那末能否可以直接界說構造體,並以此來獲得視頻數據。
/// <summary> /// * @struct tagTFrameInfo_YUV420 /// * @brief 解碼後幀信息構造(包含音頻和視頻) /// * @attention 假如只吸收視頻解碼數據,而從不吸收音頻數據,那末能否可以直接界說構造體,並以此來獲得視頻數據 /// * @原型界說: /// 解碼後幀信息構造(包含音頻和視頻) /// typedef struct tagTFrameInfo /// { /// BYTE m_byMediaType; // 媒體類型(PCM或YUV420) /// DWORD m_dwTimeStamp; // 時光戳 /// union /// { /// BYTE m_byBitCount; // 為YUV時的色彩bit位數 /// BYTE m_bStereo; // 為PCM時的聲道值 /// }; /// union /// { /// WORD m_wVideoWidth; // 視頻幀寬 /// WORD m_wBitRate; // 采樣bit率(如8000) /// }; /// union /// { /// WORD m_wVideoHeight;// 視頻幀寬 /// WORD m_wBand; // 采樣的位數(如16) /// }; /// }TFrameInfo,*PFrameInfo; /// </summary> [StructLayout(LayoutKind.Sequential)] public struct tagTFrameInfo_YUV420 { /// <summary> /// 媒體類型(0:yuv420; 1:pcm; 2:rgb32: 3:uyvy; 4:YV12),pcm是音頻 /// @原型:BYTE m_byMediaType; // 媒體類型(1:PCM或0:YUV420) /// </summary> public byte m_byMediaType; /** 媒體類型(0:yuv420; 1:pcm; 2:rgb32: 3:uyvy; 4:YV12),pcm是音頻 */ /// <summary> /// 時光戳 /// @原型:DWORD m_dwTimeStamp; // 時光戳 /// </summary> public UInt32 m_dwTimeStamp; /** 時光戳 */ // YUV /// <summary> /// 為YUV時的色彩bit位數 /// @原型:BYTE m_byBitCount; //為YUV時的色彩bit位數 /// </summary> public byte m_byBitCount; /** 為YUV時的色彩bit位數 */ /// <summary> /// 視頻幀寬 /// @原型:WORD m_wVideoWidth; //視頻幀寬 /// </summary> public UInt16 m_wVideoWidth; /** 視頻幀寬 */ /// <summary> /// 視頻幀寬 /// @原型:WORD m_wVideoHeight; //視頻幀寬 /// </summary> public UInt16 m_wVideoHeight; /** 視頻幀寬 */ }
感興致的讀者可以對此調試運轉一下,願望對年夜家有所贊助。