Directshowで解像度を変更するには?


ノブ  2006-11-02 03:04:35  No: 63469

どうもこんにちは。

私は、USBカメラをDirectshowとVisual C++を用いて画像処理を行っています。
そこでUSBカメラの解像度をデフォルトの640×480から320×240に変更したいのでグーグルで調べてみるとIAMStreamConfigを操作する事で解像度を変更できる事がわかったんですが、以下のソースコードの手順2でhrの値を調べると0以外の値が返ってきたので
IPin::QueryInterfaceでIAMStreamConfigのインターフェースを取り出す事ができませんでした。
どのようにすれば手順2(IPin::QueryInterfaceでIAMStreamConfigのインターフェースを取り出す事ができますか?
ご教授よろしくお願いします。

http://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap10/cap10.cpp
このプログラムを参考に、ソース上の
// ---- キャプチャグラフの準備 ----
・・・
・・・
// ---- 表示ウィンドウの準備 ----
の場所で、

-----------------------------------
AM_MEDIA_TYPE *pmt = NULL;
IEnumPins *ppEnum = NULL;
IAMStreamConfig *pAMSConfig = NULL;
VIDEO_STREAM_CONFIG_CAPS caps;

int iCount = 0, iSize = 0;

/* 1.IBaseFilter::EnumPins()でキャプチャフィルタ
           からIPinインターフェースを取り出す。 */
hr = pbf->EnumPins(&ppEnum);

/* 2.IPin::QueryInterfaceでIAMStreamConfig
           インターフェースを取り出す。 */
hr = ppEnum->QueryInterface(IID_IAMStreamConfig,(void **)
&pAMSConfig);

/* 3.IAMStreamConfig::GetNumberOfCapabilities()でサイ
ズを取り出す。*/
hr = pAMSConfig->GetNumberOfCapabilities(&iCount,
&iSize);
------------------------------------

参考サイト
http://www.freeml.com/ctrl/html/MessageForm/directshow@freeml.com/2482/


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加