Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

解像度の変更

28 views
Skip to first unread message

ウルトラ

unread,
Feb 18, 2007, 12:07:26 AM2/18/07
to
ultraです。VB2005にてUSBカメラの解像度の変更を行うプログラムを作っています。
以下のように320*240から640*480に変更しようとしていますが、
変更したつもりなのに320*240のままなんです。
どこか悪いのでしょうか?
事前チェック
If Graph Is Nothing Then Exit Sub

フィルタ列挙子取得
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

0 new messages