どうもこんにちは。
私は、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/
ツイート | ![]() |