C++聯(lián)合體轉(zhuǎn)換成C#結(jié)構(gòu)的實現(xiàn)方法
本文實例主要參考MSDN:http://msdn.microsoft.com/zh-cn/library/ya9bz4ha%28v=vs.80%29.aspx
最近因為項目中遇到了C++聯(lián)合體轉(zhuǎn)換成C#結(jié)構(gòu)的情況,查了很多資料才轉(zhuǎn)換成功。
備注:對于官方這個UNION示例,我的簡單理解,就是這類UNION做法,可適當代替IF ELSE 之類操作。
解決問題:如果只接收視頻解碼數(shù)據(jù),而從不接收音頻數(shù)據(jù),那么是否可以直接定義結(jié)構(gòu)體,并以此來獲取視頻數(shù)據(jù)。
/// <summary> /// * @struct tagTFrameInfo_YUV420 /// * @brief 解碼后幀信息結(jié)構(gòu)(包括音頻和視頻) /// * @attention 如果只接收視頻解碼數(shù)據(jù),而從不接收音頻數(shù)據(jù),那么是否可以直接定義結(jié)構(gòu)體,并以此來獲取視頻數(shù)據(jù) /// * @原型定義: /// 解碼后幀信息結(jié)構(gòu)(包括音頻和視頻) /// typedef struct tagTFrameInfo /// { /// BYTE m_byMediaType; // 媒體類型(PCM或YUV420) /// DWORD m_dwTimeStamp; // 時間戳 /// union /// { /// BYTE m_byBitCount; // 為YUV時的顏色bit位數(shù) /// BYTE m_bStereo; // 為PCM時的聲道值 /// }; /// union /// { /// WORD m_wVideoWidth; // 視頻幀寬 /// WORD m_wBitRate; // 采樣bit率(如8000) /// }; /// union /// { /// WORD m_wVideoHeight;// 視頻幀寬 /// WORD m_wBand; // 采樣的位數(shù)(如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位數(shù) /// @原型:BYTE m_byBitCount; //為YUV時的顏色bit位數(shù) /// </summary> public byte m_byBitCount; /** 為YUV時的顏色bit位數(shù) */ /// <summary> /// 視頻幀寬 /// @原型:WORD m_wVideoWidth; //視頻幀寬 /// </summary> public UInt16 m_wVideoWidth; /** 視頻幀寬 */ /// <summary> /// 視頻幀寬 /// @原型:WORD m_wVideoHeight; //視頻幀寬 /// </summary> public UInt16 m_wVideoHeight; /** 視頻幀寬 */ }
感興趣的讀者可以對此調(diào)試運行一下,希望對大家有所幫助。
相關文章
C#編程讀取文檔Doc、Docx及Pdf內(nèi)容的方法
這篇文章主要介紹了C#編程讀取文檔Doc、Docx及Pdf內(nèi)容的方法,涉及C#操作COM組件讀取Doc、Docx及Pdf文檔的相關技巧,需要的朋友可以參考下2015-05-05C#使用SendMessage實現(xiàn)進程間通信的方法
這篇文章主要介紹了C#使用SendMessage實現(xiàn)進程間通信的方法,涉及C#中SendMessage方法的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04C# datagrid非常規(guī)方法實現(xiàn)添加合并列
這篇文章主要介紹了C# datagrid非常規(guī)方法實現(xiàn)添加合并列,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11C#使用foreach循環(huán)遍歷數(shù)組完整實例
這篇文章主要介紹了C#使用foreach循環(huán)遍歷數(shù)組,結(jié)合完整實例形式較為詳細的分析了C#遍歷數(shù)組的相關技巧,需要的朋友可以參考下2016-06-06C#服務器NFS共享文件夾搭建與上傳圖片文件的實現(xiàn)
本文主要介紹了C#服務器NFS共享文件夾搭建與上傳圖片文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07