早先跟ZL讨論過WinCE6.0下使用TCPMP播放視訊的問題。他認為直接寫顯存應該可以讓視訊播放更流暢。今天我在我們的平台上實際測試了一下,分别使用GDI、Direct和DirectDraw三種方式做了Benchmark,其中Direct就是他所說的直接寫顯存的方式。
為了讓TCPMP支援Direct的方式,需要修改overlay_direct.c中的相關代碼,使其能夠直接通路CE裝置的顯存。具體方法就不再這裡贅述了,請參考前一篇随筆。正如上一篇所說,這裡提供的方法目前隻能專款專用,針對自己的平台做一些優化。實作了Direct的方式後,可以在“選項”——“視訊設定”中看見目前系統支援的幾種方式,如下圖所示。

以上是Direct和GDI的對比圖。可以看到使用Direct确實比GDI快一些,前者的Average Speed比後者的高10%。
另外,在WinCE6.0中啟動TCPMP時會有一些異常的列印資訊。如果看着不舒服,可以修改cpu.c的第78行代碼,改為“#if !defined(TARGET_PALMOS) && !defined(TARGET_SYMBIAN) && !defined(TARGET_WINCE)”,也就是不調用CheckARM5E()等函數。