フィルタ列挙子取得
Dim eflt As IEnumFilters = Nothing
Graph.EnumFilters(eflt)
フィルタ列挙
Dim fc As Integer
Dim flt As IBaseFilter = Nothing
Do While eflt.Next(1, flt, fc) = 0
ピン列挙子取得
Dim epin As IEnumPins = Nothing
flt.EnumPins(epin)
ピン列挙
Dim pc As Integer
Dim pin As IPin = Nothing
Do While epin.Next(1, pin, pc) = 0
IAMStreamConfig取得()
Dim obIAMS As IAMStreamConfig = TryCast(pin, IAMStreamConfig)
If Not obIAMS Is Nothing Then
Dim obAMMType As New AMMediaType
obIAMS.GetFormat(obAMMType)
現在のフォーマット取得
Dim vinfo As New DSVIDEOINFOHEADER
vinfo = PtrToStructure(Of DSVIDEOINFOHEADER)(obAMMType.formatPtr)
Dim sz As New Size(vinfo.BmiHeader.Width, vinfo.BmiHeader.Height)
If vinfo.BmiHeader.Height = 240 Then
vinfo.BmiHeader.Height = 480
vinfo.BmiHeader.Width = 640
Marshal.StructureToPtr(vinfo, obAMMType.formatPtr, True)
SetFormatでpbFormatの変更を適用させる
Pin切断
pin.Disconnect()
メディアタイプ設定
obIAMS.SetFormat(obAMMType)
End If
End If
ピン解放
Marshal.ReleaseComObject(pin)
Loop
フィルタ解放
Marshal.ReleaseComObject(flt)
Loop
フィルタ列挙終了
Marshal.ReleaseComObject(eflt)
--
by ultra