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

相关文章

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain