YUV422蓝屏显示输出功能辅助调试
YUV422蓝屏显示输出功能辅助调试
YUV422有YUYV,YVYU,UYVY,VYUY四种,以下笔者就就以UYVY为例介绍一下数据构成。因为常常要跟视频输入打交道,所以YUV422这种常见的视频信号是常常碰到的。有时候我们调试一个模块输出YUV422,然后再显示出来。非常多时候,可能没法准确推断你那个模块是不是已经正常跑起来了,跑起来来的情况下,是不是真的有数据输出,有了数据输出后来的数据究竟对不正确。
带着这些疑问,当然有非常多对策,笔者就先把这个事情一分为二,以YUV422数据为界限分两部分,假设怀疑是模块没有输出YUV422数据或者输出的数据有错误,那么我们就让这个模块临时不工作,手动模拟一个YUV422一帧的数据送到显示里面去,比較著名就是蓝屏输出了。以下笔者就简介一下YUV422数据
/*****************************************************************************************************/
声明:本博内容均由http://blog.csdn.net/edsam49原创,转载请注明出处,谢谢!
/*****************************************************************************************************/
在多数平台里,芯片在输出YUV422数据的时候,Y是一个buffer,UV合在了一个buffer,YUV422的情况下uv的数据就是交替出现。以下就是笔者亲自试过的一组产生对应buffer的代码。
首先是申请Y & UV的buffer空间吧!这个不用讲了吧!
然后就是改动设置buffer的值,演示样例688X480的buffer数据,
void setYUVbufferColor(void){
unsigned int i, addr, regval;
for(i=0; i<=(688*480); i++){
//addr = (unsigned int )TVDTransferToDRVInfo.addrYx + 4*i + 0x10;
//*(unsigned int *)(addr) = yv;
addr = (unsigned int )TVDTransferToDRVInfo.addrYx + i;
*(unsigned char *)(addr) = 0x70;
}
for(i=0; i<=(172*480); i++){
addr = (unsigned int )TVDTransferToDRVInfo.addrCx + 4*i;
*(unsigned int *)(addr) = 0x72d472d4;
}
}
主要就是Y的数据是0x70,U跟V是0x72跟0xd4;
改动好这种buffer的数据,直接把地址送到显示那边去,看有没有蓝屏输出,假设有就说明显示没问题,假设没有就说明显示有问题,这样我们就能够至少能够推断出显示有没有问题了。
那么有人可能会问了,假设模块跟显示都有问题还不是一样显示 不出来。当然了,笔者仅仅是一分为二先推断显示有没有问题,你攻克了显示的问题,再回回过来解决模块的问题也是能够的。当然,也能够调试模块的时候,保存模块输出的一帧数据帧,分析一下它的数据有没有问题,PC端也有一些分析纯YUV数据显示的工具。
小议了一下这个伟大的、可爱的蓝屏输出,让人爱也让人恨的蓝屏输出:),利用好蓝屏输出的数据模样,对我们解决相关问题还是非常有帮助的。
YUV422蓝屏显示输出功能辅助调试的更多相关文章
- Linux 命令 - watch: 反复执行命令,全屏显示输出
watch 命令周期性地执行命令,全屏显示输出.可以通过 watch 命令反复执行某一程序来监视它的输出变化. 命令格式 watch [-dhvt] [-n <seconds>] [--d ...
- 安卓投屏助手(B1358)之辅助调试
Android远程桌面助手的中文版——安卓投屏助手正式上线.安卓投屏和远程控制的软件其实已经非常多了,如Vysor.Total Control.Mobizen.ApowerMirror.TeamVie ...
- 【Windows系统】win10系统假死,窗口不能动,鼠标能动或不能动,最后蓝屏显示错误码: VIDEO_DXGKRNL_FATAL_ERROR 的解决办法
1. 问题的出现过程 最近博主自己用的 windows10 系统就碰到了这个问题. 一开始出现这个问题的征兆是鼠标会时不时地卡顿,一出现卡顿就会等个 1-3秒才能动.然后频繁卡顿(注意,这里根据经验就 ...
- 在VC++6.0开发中实现全屏显示
全屏显示是一些应用软件程序必不可少的功能.比如在用VC++编辑工程源文件或编辑对话框等资源时,选择菜单“View\Full Screen”,即可进入全屏显示状态,按“Esc”键后会退出全屏显示状态. ...
- 解决VirtualBox 上的XP 蓝屏,自动重复启动
启动时的蓝屏显示错误信息是: STOP 0x000000CE (...) DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS intelppm. ...
- 解决VirtualBox 上的XP 关机时重启 , 启动时蓝屏 ,点击电源选项蓝屏
三个问题一次性解决. 启动时的蓝屏显示错误信息是: STOP 0x000000CE (...) DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATION ...
- windbg蓝屏调试
一般在写Windows内核程序的时候,经常会出现蓝屏的问题,这个时候一般是采用记录下dump文件然后用windbg查看得方式,具体的过程就不说了,网上一大堆的内容.现在我主要记录自己当初按照网上的方案 ...
- win7下自写驱动导致开机蓝屏调试过程
之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来. 问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程: 使用 ...
- Android使用百度地图出现闪退及定位时显示蓝屏问题
目录 1.Android使用百度地图出现闪退 2.Android使用百度地图定位出现蓝屏问题 1.Android使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.x ...
随机推荐
- List中toArray()的使用方法
当我们需要把一个链表中的元素放入数组时,jdk给我们提供了一种方法,也即运用toArray(),方法的使用如下: public class Test { public static void main ...
- Jmeter使用——参数化
最近一个想项目使用jmeter进行测试,陆续将遇到并解决的问题记录下来,本次主要记录参数化得一些问题. 1. 单台压力机 多个线程组不重复数字,注意分布式负载时多个压力机会出现重复的问题 主要思路分别 ...
- c while 循环
c代码: #include <stdio.h> int main(void){ unsigned long sum=1UL; unsigned int j=1U; unsigned ; p ...
- xcode5编译过的xib 如何在xcode4.6下打开
IOS7一出来,对应的xcode版本变成了5了,这次xcode升级比较大,特别是在源代码编译方面,苹果下足了功夫,编译时间不到原来的一半,忽然强烈觉得android在这方面需要加强啊: 其他不多说,X ...
- 如何查看自己运行ubuntu是32位还是64位
当安装ubuntu在pc上,不推荐在32位pc安装64位操作系统,64位pc安装32位操作系统 方法/步骤 按ctrl+shift+t 快捷键,打开终端,输入sudo uname --m ,按下ent ...
- lib 合并
方法1: 命令如下:lib.exe lib1.lib lib2.lib ... /out:hw.lib 另一种合并的方法: 思路:lib.exe 可以把lib文件里的obj文件取出来,然后把这些obj ...
- windows权限错误
1.installer "内部错误 2203 C:\WINDOWS\Installer\354787.ipi,-2147287035” 用户的local\Temp目录没有system权限 2 ...
- POJ 3083 Children of the Candy Corn 解题报告
最短用BFS即可.关于左手走和右手走也很容易理解,走的顺序是左上右下. 值得注意的是,从起点到终点的右手走法和从终点到起点的左手走法步数是一样. 所以写一个左手走法就好了.贴代码,0MS #inclu ...
- ASP.NET MVC3细嚼慢咽---(2)模板页
这一节演示下MVC3中怎样使用模板页,在传统的webform设计模式中,我们使用masterpage作为模板页,在MVC3 razor视图设计中,我们使用另一种方式作为模板页. 新建一个MVC3项目, ...
- MongoDB之四( 索引操作)
我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵. 从算法上来说有 ...