AMMediaTypeの一部であるVideoInfoHeaderを次の行でコピーできます。
AMMediaType mediaType = new AMMediaType();
VideoInfoHeader videoInfo = new VideoInfoHeader();
(pSampleGrabber as ISampleGrabber).GetConnectedMediaType(mediaType);
videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
SampleGrabber Parameterから取得したものは正しくなく、インターネット上の他のリソースです。ただし、AMMediaType-Structure全体をコピーすることはできません。VideoInfoHeaderへのポインターは失われます。
そのため、AMMediaTypeをメモリ内の別の場所にコピーし、VideoInfoHeaderなどのポインターを探し、VideoInfoHeaderのコンテンツとその他の参照データを新しい場所にコピーするヘルパー関数(formatPtrを正しい場所にポイントすることを含む)が存在するかどうか疑問に思いました。 。
これを次のシナリオで使用しています。ビデオ入力デバイスのすべての可能なIPinメディアタイプを取得し、Windows.Forms-ComboboxにAMMediaTypesを表示します。コンボボックスからSelectedObjectを読み取ると、VideoInfoHeaderへのポインターがゼロになります。これは、フィルターグラフを作成するときに選択したピン構成を使用して接続できない場所です。