TCPMP中使用GDI、Direct及DirectDraw效果对比

简介: 早先跟ZL讨论过WinCE6.0下使用TCPMP播放视频的问题。他认为直接写显存应该可以让视频播放更流畅。今天我在我们的平台上实际测试了一下,分别使用GDI、Direct和DirectDraw三种方式做了Benchmark,其中Direct就是他所说的直接写显存的方式。

       早先跟ZL讨论过WinCE6.0下使用TCPMP播放视频的问题。他认为直接写显存应该可以让视频播放更流畅。今天我在我们的平台上实际测试了一下,分别使用GDI、Direct和DirectDraw三种方式做了Benchmark,其中Direct就是他所说的直接写显存的方式。

      为了让TCPMP支持Direct的方式,需要修改overlay_direct.c中的相关代码,使其能够直接访问CE设备的显存。具体方法就不再这里赘述了,请参考前一篇随笔。正如上一篇所说,这里提供的方法目前只能专款专用,针对自己的平台做一些优化。实现了Direct的方式后,可以在“选项”——“视频设置”中看见目前系统支持的几种方式,如下图所示。

 image

      测试用的视频文件是“魅族Miniplayer.mp4”,M8里自带的广告片,三种模式测试报告的对比如下。image

      以上是Direct和GDI的对比图。可以看到使用Direct确实比GDI快一些,前者的Average Speed比后者的高10%。

      Direct和DirectDraw的对比图如下。可以看到他们两个基本上是平分秋色,不相上下。image

      另外,在WinCE6.0中启动TCPMP时会有一些异常的打印信息。如果看着不舒服,可以修改cpu.c的第78行代码,改为“#if !defined(TARGET_PALMOS) && !defined(TARGET_SYMBIAN) && !defined(TARGET_WINCE)”,也就是不调用CheckARM5E()等函数。

目录
相关文章
|
Windows C++ API
MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法
MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法  文档将概述MFC中定制自定义控件的3种方法: 拥有者绘制控件(Owner Drawing Control and Menu)   自绘制控件(self drawing contro...
1515 0
|
存储 API 开发工具
最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)
上一篇文章记录了GDI播放视频的技术。打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术。Direct3D应该Windows下最常用的播放视频的技术。实际上视频播放只是Direct3D的“副业”,它主要用于3D游戏制作。
2148 0
|
存储 缓存 编解码
最简单的视音频播放示例4:Direct3D播放RGB(通过Texture)
本文接着上一篇文章继续记录Direct3D(简称D3D)播放视频的技术。上一篇文章中已经记录了使用Direct3D中的Surface渲染视频的技术。本文记录一种稍微复杂但是更加灵活的渲染视频的方式:使用Direct3D中的Texture(纹理)渲染视频。
1493 0
directdraw的多画面显示rgb
// showpicDlg.cpp : 实现文件 // #include "stdafx.h" #include "showpic.h" #include "showpicDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif   // ...
968 0