掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DirectShowでピクセルクロックを変更するには? (ID:69212)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
gakさん いつもありがとうございます。 アドバイスを元に試してみましたが、ピクセルクロック を自前ソフトで変更できませんでした。 このカメラに関しては graphedt.exeを用いてピクセルクロックを任意に設定 して使用する事にし、ちまちま試みてみようと思います。。 //一連の初期化は省略 CComQIPtr< IMediaControl, &IID_IMediaControl > pMediaControl = m_pGraph; pMediaControl->Run(); //少し pMediaControl->Stop();//省略 CComPtr<IReferenceClock> pClock; CComPtr<IAMClockAdjust> pSetCLK; IMediaFilter *pMediaFilter = 0; m_pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter); pMediaFilter->GetSyncSource(&pClock); DWORD dwAdviseToken; HANDLE hEvent; REFERENCE_TIME rtPeriodTime = 10000*500; // Ex:500m秒間隔 REFERENCE_TIME rtNow; REFERENCE_TIME rtAft; ///////////置き換えStart hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); pClock->GetTime(&rtNow); time = (double)rtNow; TRACE("基準時間: %lf(100ns)\n", time); pClock->AdviseTime( rtNow, rtPeriodTime, (HEVENT)hEvent, &dwAdviseToken ); ::WaitForSingleObject(hEvent, INFINITE); pClock->GetTime(&rtAft); time = (double)rtAft-rtNow; TRACE("基準時間: %lf(100ns)\n", time); ///////////置き換えEnd pMediaFilter->SetSyncSource(pClock); pMediaFilter->Release(); ⇒結果 ⇒AdviseTimeを用いて(AdvisePeriodicは難しかったので)ためして ⇒みたのですが、 ⇒rtAft-rtNowの差分時間が取得できるぐらいです。 ⇒rtAft-rtNow == rtPeriodTime = 10000*500; // 500m秒間隔 ///////////置き換えStart−End の箇所を下記の様に変えて hr=pClock->QueryInterface(IID_IAMClockAdjust, (void**)&pSetCLK); if(hr!=S_OK) TRACE("Failed\n"); pClock->GetTime(&rtNow); time = (double)rtNow; TRACE("基準時間: %lf(100ns)\n", time); rtNow = 5000000; hr=pSetCLK->SetClockDelta(rtNow); if(hr!=S_OK) TRACE("Failed2\n"); pClock->GetTime(&rtAft); time = (double)rtAft; TRACE("基準時間: %lf(100ns)\n", time); ⇒結果 ⇒rtAftには、取得したrtNowに5000000プラスされた値に ⇒なっているだけで、ピクセルクロックは変えれてないです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.