如何在C#上将byte []转换为IMediaSample

时间:2012-03-17 20:53:51

标签: c# bytearray

根据我在本网站上看到的一些示例,我尝试以下代码:

var byteArray = new byte[m.Length -10];
myMemoryStream.Position = 10;
myMemoryStream.Read(byteArray,0,(int)myMemoryStream.Length-10);

GCHandle pinnedArray = GCHandle.Alloc(byteArray, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();

IMediaSample pSample  = null;

Marshal.PtrToStructure( pointer,pSample);

pinnedArray.Free();

但是在调用Marshal.PtrToStructure(指针,pSample)时我收到了“NullArgumentException”。

当然我知道这个错误的原因,我想知道的是正确的方法。

如果您需要更多信息,请告诉我,我会尽快添加。

请帮忙。

1 个答案:

答案 0 :(得分:0)

您需要创建实际结构,该结构还实现IMediaSample接口。

public struct IMediaSampleStructure : IMediaSample
{
    // Implementation.
}

然后,你可以这样做:

IMediaSample pSample = new IMediaSampleStructure();
Marshal.PtrToStructure(pointer, (IMediaSampleStructure)pSample);
相关问题