2004 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 02 | 03 | 04 | 05 | 06 | 07 |
2011 | 03 | 08 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 02 | 03 | 04 | 05 | 06 | 07 |
2011 | 03 | 08 |
2005-07-14
■[メモ]キャプチャデバイスの出力フォーマット 
USBカメラから適当に取得してサンプルグラバからフレームを拾ってやろうとしたら重かった。
で何かと思ったら、カメラが1280*960で吐いている。IAMStreamConfigというインターフェースで情報を取得したり設定できるらしい、と。解像度を変更。
MSDNから引っ張ってきて、勘で適当な処理を追加・・・したらちゃんとなった・・・
//IAMStreamConfigインターフェース IAMStreamConfig *pConfig = NULL; //pSrcはキャプチャデバイスのフィルタ キャプチャカテゴリのピン pBuilderはICaptureBuilder2 hr = pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE ,0,pSrc,IID_IAMStreamConfig,(void**)&pConfig); if(FAILED(hr)){ AfxMessageBox("err : pBuilder->FindInterface"); } int iCount = 0, iSize = 0; hr = pConfig->GetNumberOfCapabilities(&iCount, &iSize); // サイズを調べ、正しい構造体を渡すことを確認する。 if (iSize == sizeof(VIDEO_STREAM_CONFIG_CAPS)) { // ビデオ能力構造体を使う。 for (int iFormat = 0; iFormat < iCount; iFormat++) { VIDEO_STREAM_CONFIG_CAPS scc; AM_MEDIA_TYPE *pmtConfig; hr = pConfig->GetStreamCaps(iFormat, &pmtConfig, (BYTE*)&scc); VIDEOINFOHEADER *pVih2; if (SUCCEEDED(hr)){ if ((pmtConfig->formattype == FORMAT_VideoInfo) && (pmtConfig->cbFormat >= sizeof(VIDEOINFOHEADER)) && (pmtConfig->pbFormat != NULL) ) { //VIDEOINFOHEADERのpVih2にIAMStreamConfigのpbFormatを入れる pVih2 = (VIDEOINFOHEADER*)pmtConfig->pbFormat; //それぞれ縦横の変更 pVih2->bmiHeader.biHeight=480; pVih2->bmiHeader.biWidth=640; //バイト配列ポインタらしいのでキャストして突っ込みなおす pmtConfig->pbFormat=(BYTE*)pVih2; //SetFormatでpbFormatの変更を適用させる hr=pConfig->SetFormat(pmtConfig); if(FAILED(hr)){ AfxMessageBox("failed : pConfig->SetFormat"); } } // 完了したら、メディア タイプを削除する。 //DeleteMediaType(pmtConfig); } } }
コメントを書く
トラックバック - http://d.hatena.ne.jp/xabre/20050714






