2013-01-15 67 views
0

我正在研究一個需要從不同的幀抓取卡中捕獲視頻幀的應用程序。我正在使用directshow ISampleGrabberCB::SampleCB回調來接收指向新幀的指針。現在我想知道這個回調何時被調用?是否保證每次幀抓取器接收到一個新的幀都會自動被調用?DirectShow-ISampleGrabberCB :: SampleCB回調頻率

我試圖用120Hz的信號與各種分辨率,但我這個回調只是被稱爲50-55倍。所以我的圖像採集卡有可能無法以這種速度捕捉(雖然理論上它的能力)。我想知道這個回調是瓶頸還是framegrabber卡。

謝謝

回答

2

SampleCB立即調用從流線程中調用,你有一個電話,每幀。在回調期間,您會阻止進一步的流式傳輸,那就是您需要從回調中返回控制才能恢復(特別是,如果您的回調「很慢」,它可以降低有效的FPS)。

+0

我在我的回調中沒有做任何事,只是接收來自VIDEOINFOHEADER的數據和信息的指針,然後增加計數器進行幀計數。之後,控制立即返回。 我認爲它不應該是「慢」。 有了這些信息和你的答案,我可以得出結論:我的圖像採集卡沒有收到更高的價格? –

+0

樣本採集器的存在唯一的事實可能意味着額外的處理(拓撲中的過濾器),尤其是,例如,如果您要求24位RGB格式用於SG操作/回調。你應該看看整個過濾器圖表,看看是否有其他的東西放慢了速度。 –

+0

如果幀採集卡實現它,也許'IAMDroppedFrames'接口顯示您如果樣本被丟棄。 – CPlusSharp