#include <dshow.h> IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir); void main(void) { IGraphBuilder *pGraph = NULL; IMediaControl *pControl = NULL; // COM ライブラリを初期化する。 HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { printf("ERROR - Could not initialize COM library"); return; } // フィルタ グラフ マネージャを作成し、インターフェイスを問い合わせる。 hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph); if (FAILED(hr)) { printf("ERROR - Could not create the Filter Graph Manager."); return; } hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); // グラフを作成する。 重要 : この文字列をシステム上のファイルに置き換える。 hr = pGraph->RenderFile(L"G:\\sampleMovie\\cap.avi", NULL); //ピンの列挙 IFilterGraph* pFGraph; hr = pGraph->QueryInterface(IID_IFilterGraph, (void**)&pFGraph); IEnumFilters *pEnum = NULL; IBaseFilter *pFilter; ULONG cFetched; hr = pGraph->EnumFilters(&pEnum); if (FAILED(hr)) return; //フィルタの列挙 while(pEnum->Next(1, &pFilter, &cFetched) == S_OK) { IPin *pPin = NULL; //ピンを探しに行く pPin = GetPin(pFilter, PINDIR_INPUT); // 見つかったピンを何かに使用 if (pPin) { pPin->Release(); } pFilter->Release(); } hr = pControl->Run(); MessageBox(0,0,0,0); pControl->Release(); pGraph->Release(); CoUninitialize(); } IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir){ printf("--------pinを探す場所--------\n"); BOOL bFound = FALSE; IEnumPins *pEnum; IPin *pPin; HRESULT hr = pFilter->EnumPins(&pEnum); if (FAILED(hr)) { return NULL; } while(pEnum->Next(1, &pPin, 0) == S_OK) { // ピンが列挙される printf("pinの列挙--"); LPWSTR idGet; hr = pPin->QueryId(&idGet); wprintf(L"ID: %d :: ", idGet); wprintf(L"%s\n", idGet); } pEnum->Release(); pPin->Release(); return 0; }
2013年6月9日日曜日
ピンのID(識別子)を取得する
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿