您好,登錄后才能下訂單哦!
今天小編給大家分享一下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; /** 視頻幀寬 */ }
以上就是“C++聯合體如何轉換成C#結構”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。