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; /** 視頻幀寬 */
}
感興致的讀者可以對此調試運轉一下,願望對年夜家有所贊助。