我可以复制一个 VideoInfoHeader,它是 AMMediaType 的一部分,其中包含以下几行:
AMMediaType mediaType = new AMMediaType();
VideoInfoHeader videoInfo = new VideoInfoHeader();
(pSampleGrabber as ISampleGrabber).GetConnectedMediaType(mediaType);
videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
我从SampleGrabber 获得的参数不正确以及互联网上的其他资源。但是我无法复制整个 AMMediaType-Structure。指向 VideoInfoHeader 的指针丢失。
所以我想知道是否存在一个辅助函数将 AMMediaType 复制到内存中的不同位置,查找 VideoInfoHeader 之类的指针并将 VideoInfoHeader 的内容和其他引用数据复制到新位置(包括将 formatPtr 指向正确的位置) .
我在以下场景中使用它:我检索视频输入设备的所有可能的 IPin 媒体类型,并在 Windows.Forms - Combobox 中显示 AMMediaTypes。当我从组合框中读取 SelectedObject 时,指向 VideoInfoHeader 的指针为零。这是在构建过滤器图时无法使用我选择的引脚配置进行连接的地方。