OSD 在wince 小结

2024-01-17 20:18
文章标签 小结 wince osd

本文主要是介绍OSD 在wince 小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在做视频播放器的时候才开始接触这个OSD,有的时候也叫Overlay,原本以为显示就是把数据往显存里面送,根本就没有层的概念,后来才发现一些芯片或者显卡已经把屏幕分层了,我们的操作系统占据一层,然后我们可以使用其他的层作一些自己小要得效果,这些效果主要就是透明处理。我们在播放视频的时候,经常会在视频之上花一些东西,难啊,一种比较笨的方法就是在解压之后的视频数据上面去添加自己的数据,实现起来还是有点小困难的,后来才发现芯片已经有个这个功能,能够用硬件做的东西坚决不用软件去实现,然后就开始看芯片资料。原来6410是支持5层屏幕的,那我们一些透明效果就可以不通过什么RGB ahpla通道算法来做,又烦又慢,但是怎么用呢,看芯片资料,原理是一系列的寄存器,然后,一个缓存之类的,这个要自己写的话还是很难,一想这个bsp里面应该有嘛!然后去看bsp的驱动,果然,同构IOControl,一系列的操作嗾使可行的,然后自己写了一个直接用IOControl的overlay程序,发现可行,不错,那种半透明效果硬件实现真是太简单了。之后,这一块就放置了一段时间,忙其他方面的去了,后来,到用到的时候,发现有时候显示驱动已经把这一层占用了,怎么办,你去调用就会出错,这样直接应用程序调用底层还是有缺陷的,因为当中还隔着一个微软,如果微软的那一套东东已经把你的资源占用了,你就不能用了,最简单的一个例子就是,播放的时候使用全屏之后,发现资源已经被占用,晕死,原来微软的操作系统不只是占用一层的,全频它居然又新建了一层,~!◎#¥%。郁闷了,后来想想也是,这样直接调用底层,很多东西都没有考虑到,还是往微软的一块靠吧,然后又花时间去看微软的显示驱动,饿,原来显示驱动里面已经吧overlay做了,但是我们怎么用呢?GDI很明显是不能用的,慢慢问题的“主角”浮出水面,原来是用ddraw,ddraw原来不只是可以直接访问显存这么简单,一些显示硬件的特殊效果居然也可以集成到里面去,然后又开始看DDraw,看了一段时间,发现这个应该就是“正主”了,但是还远远不够,我们要得是视频,是要基于DShow的,后来才发现还有一个东东要用Overlay Mixer Filter,晕死,隐藏这么深,呵呵,还是被我找出来了。

这篇关于OSD 在wince 小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617094

相关文章

泛型和Integer小结

泛型在Java.util里面找:也可对其他你使用的函数进行查阅 如下:只要函数后面跟有尖括号<>,你都可以拿过来使用泛型     注意:用到集合时尽量使用泛型       int与Integer   integer这个不是关键字,是java的一个类。也就是int的包装类。int是基本数据类型,integer是引用类型,包含很多属性和方法,而int只是一个值,没有其他的任何

WinCE的C#程序中获取当前应用程序的路径

WinCE中获取当前路径的两种方法: string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); string appPath = System.IO.Path.GetDirectoryName(System.R

在WinCE的C#编程中,需要静态调用C++的动态库,需要添加using System.Runtime.InteropServices

using System.Runtime.InteropServices;         [DllImport("Win32DLL.dll", EntryPoint = "WriteREG_SZToRegTCHAR")]         private static extern bool WriteREG_SZToRegTCHAR(int iFlag, string regKeyP

WinCE使用Webservice或者WCF与后台数据库SQL进行数据信息交互

之前使用过Webservice作为后台服务,WinCE上通过调用webservice来与后台数据库进行数据交互。 速度,稳定性都非常好。而且编程模块化,封装成为Webservice的两个函数即可解决数据库的增,删,查,改四个SQL语句的执行,因此编程非常高效。 有了这样的封装,程序员在编写程序时,主要精力放在逻辑上,分析业务知识上。从而降低程序员的技术门槛,提高编程效率,节省人力成本。

我的OS X系统使用小结

最近硬盘出现了故障,为了恢复确认问题,我的Windows电脑就一直运行坏道检测程序,暂时将工作迁移到我的MacBook Pro(后面简称为MBP)上进行。这里简单总结下自己是如何使用MBP进行做的。 原本计划是用我的小米游戏笔记本,但是不知为何,即便是非游戏模式,风扇偶尔也会狂转,产生很大的噪音。相反,MBP非常安静,就是有点烫手。 我的MBP是17年款,13寸屏幕,蝶式键盘。为了不烫手

python装饰器小结

按照我自己的理解,python装饰器的作用就是让一些重复性的“操作”(代码)只出现一次就好,这样整个代码看起来会更清晰整洁,主要也减少了无谓的赋值粘贴。 例如,当前有两个方法get请求和post请求,在执行两个方法前,都要先检查一下请求的url是否符合要求,一般会这样写: # encoding=utf8import requestsclass Test():def __init__(self)

js创建对象的几种常用方式小结

最近在看javascript高级程序设计,其中对对象的创建做了具体的阐述,综合起来,总结了下(je知识库javascript专栏由这方面的教程,有兴趣的可以去知识库看看) 第一种模式:工厂方式 复制代码 代码如下: var lev=function(){ return "脚本之家"; }; function Parent(){ var Child = new

Java反射机制小结

一、概念定义 反射机制:反射提供了一种动态的功能,这种动态功能非常强大。它主要体现 在通过反射相关的API就可以知道一个陌生Java类的所有信息,包括属性、方法、构造器等。而且元素完全可以在运行时动态的进行创建或调用,而不必在JVM运行时就进行确定。即运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的

Java内部类的小结

内部类定义:一个外部类的内部再定义一个类,编译时的概念,一旦编译成功就与外围类属于两个完全不同的类。根据定义的结构的不同可以将内部类分成两种:成员式和局部式。然后成员式内部类又可以分为:静态内部类和成员内部类;局部式又可以分为:普通局部内部类和匿名内部类。具体介绍如下: (1)静态内部类(也称嵌套内部类):定义在另一个类里面的类,前面多了一个关键字static【1)它的创建不需要依赖外围类;

FLASH小结

FLASH小结 1.Flash概念叙述   - Flash是一种非易失性存储器(Non-volatile),也叫Flash EEPROM - Nor FLASH NOR FLASH芯片,不仅具有很强的可擦写次数,还具有完备的地址和数据总线,支持随机寻址,非常适合代替早期的ROM芯片(ROM、PROM、EEPROM),比如BIOS和机顶盒固件等,早期的可移动存储也使用NOR FLASH芯片,