2009-12-10 26 views
0

我正在爲Windows Mobile平臺編寫相機驅動程序驅動程序。相機預覽期間的幀頻問題

我有一個應用程序顯示正確的預覽,但速度很低(可能是1或2幀/秒)的問題。

經過調查後,我可以看到從傳感器(每45毫秒)傳來的幀正常,但是當存儲該幀的硬件事件發生時,沒有緩衝區可用,然後幀被丟棄。

在我們的例子中,應用程序通過IOCTL_CS_BUFFERS/CS_ENQUEUE API提供緩衝區。問題是緩衝區的速度非常低,這就是預覽無法正常工作的原因。

問題是我無法調查這個API給出的速度,因爲PIN_IOControl是從Directshow固件中調用的。

我之前描述的問題涉及測試應用程序。

現在,如果我正在使用Windows Mobile Camera應用程序,預覽在圖片模式(約15幀/秒)內即可。但是,當視頻模式打開時,預覽僅顯示大約2幀持續秒(就像我們正在使用的測試應用程序一樣)。

我可以看到這兩種模式之間唯一的區別是視頻模式預覽使用QCIF格式,而捕捉模式(圖片)預覽使用QVGA格式。

謝謝你的幫助。

法布里斯。

回答

1

一旦下游過濾器完成了處理,Directshow會將緩衝區返回到池中。你被任何正在使用緩衝器的下游阻止,而不是由directshow本身。

聽起來好像你有一個只能管理2fps的下游編碼器,所以這是捕獲緩衝區釋放到池的速率。如果您可以控制驅動程序中的輸出緩衝區參數,那麼您可以增加池的大小,但除非是暫時性的,否則這無助。您也可以研究其他過濾器圖形,例如直接寫入磁盤。

G

+0

感謝您的回答。 我同意,一個進程是持有緩衝區(它可以是例如和顏色/格式轉換過程)。由於捕捉預覽工作正常,我認爲不應該做任何有關緩衝區管理的更改。相反,我懷疑當幀速率較低時,會出現中間過程以使濾鏡/渲染器引腳格式兼容。 由於捕捉預覽工作正常,我想在運行時比較圖形配置和引腳格式,但找不到任何工具可以完成這項工作。 你認爲我是正確的嗎? 謝謝 – user228561 2009-12-10 12:39:02

+0

使用www.gdcl.co.uk/mobile的viewgraph工具查看圖形配置和連接介質類型。 – 2009-12-11 10:27:49