using System.Runtime.InteropServices;
public struct VideoInfo
{
public IntPtr pY;
public IntPtr pU;
public IntPtr pV;
public int nWidth;
public int nHeight;
}
public struct AudioInfo
{
public IntPtr pPCM;
public int nLength;
}
[StructLayout(LayoutKind.Explicit)]
public struct DecodeInfo
{
[FieldOffset(0)]
public int frameType;
[FieldOffset(1)]
public VideoInfo videoInfo;
[FieldOffset(1)]
public AudioInfo audioInfo;
}
自己测试,StructLayout 那里可能要调整要设置Pack。
我觉得题主这段用union不合适。可以参考一下ffmpeg的 AVFrame 结构体
会写一点c#,在github上挂了个EmguFFmpeg的项目,C#调ffmpeg的api。