注册 登录
编程论坛 C图形专区

[原创]发一个作品吧

RockCarry 发布于 2007-04-08 00:14, 2716 次点击
最近在研究H.264这个东东。
今天又时间,本来打算写一个YUVViewer的程序的,结果没有完成,却做成了一个图片浏览程序。
程序是在VC++下用WinAPI书写的,目前能支持浏览bmp图片和CIF格式YUV序列,个人感觉效果还是非常不错的。
大家可以下载看看,源代码已经公布,不再提供可执行程序下载。
代码下载地址:
http://home.goofar.com/npucs/H264.rar
使用方法:
命令行下YUVView filename.bmp
或者直接将bmp文件拖放到YUVViewer.exe上打开。



[此贴子已经被作者于2007-4-11 22:58:27编辑过]

17 回复
#2
cdmalcl2007-04-08 06:32

做的太好了
要是能加个算法说明就更好了

#3
RockCarry2007-04-08 10:37
程序其实都是WinAPI的调用而已,没有什么算法可言
不过这个程序还是有一些小技巧,包括快速的GDI作图,无标题栏的可拖动窗口,全屏显示和位图缩放等。
#4
RockCarry2007-04-08 10:38
如果有可能以后可以加入对更多图片格式的支持,界面方面也可以再做得更好一些。
以前都很少做Windows程序的,有做也只是在公司用MFC做,所以自己对Windows编程还是不很熟悉。、
这次这个程序效果还算比较满意,而且也学到了很多东西,主要是WinAPI和GDI方面的。
后面可以考虑加入鼠标拖放和右键菜单,还有就是对PEG的支持。
实际上还是想做成一个简单的播放器,能浏览BMP、JPEG、GIF等,还能播放YUV序列、WAV、MIDI等。
如果使用DirectShow做得话会容易许多,并且我也成功做过。但是我还是希望自己写JPEG、GIF等的解码。

[此贴子已经被作者于2007-4-8 10:58:30编辑过]

#5
cdmalcl2007-04-08 12:50

其中最不解的是 位图的缩放算法
我们刚才和其他软件做了比较 你的程序放大后有点失真
但是你的程序能缩小
我现在就想知道你的位图缩放是用数学公式做的

#6
RockCarry2007-04-08 13:23
不管什么程序放大都会有失真的
我的这个程序没有什么算法可言,都是使用的WinAPI
缩放是通过调用StretchBlt来实现的
缩放的算法我也做过,原理也都很简单,在我的VGA13H中就有实现,采用的是最近邻算法
当然还有双线性插值算法,但是需要重新计算采样点的RGB值,在256色模式下不好实现
缩放就是重建模拟图像,再重新采样,如此而已。

[此贴子已经被作者于2007-4-8 13:23:37编辑过]

#7
cdmalcl2007-04-08 15:52

原来这样
WINDOW编程不怎么会
所以不知道有那个东西
前一段日子看了几眼 图形学的书
看里面的图形算法全是数学公式
很多数学公式都看不懂
很郁闷!!!!
所以现在准备以后不从事游戏编程方面的学习了

#8
RockCarry2007-04-10 22:18

今天加入了鼠标拖放的功能
并且重写了代码

#9
tvkl2007-04-10 22:53
参考参考!
#10
RockCarry2007-04-11 22:57

22:55 2007-4-11
----------------
加入了对CIF格式的YUV序列的支持
成为了真正的YUVViewer了

YUV测试序列下载地址:
http://trace.eas.asu.edu/yuv/index.html

#11
RockCarry2007-04-13 13:44

发现GDI的StretchBlt也是有利用硬件加速特性的。
YUVViewer在我的笔记本(GF7300显卡)上,全屏播放时都能保持25帧的速度
但是在公司的电脑(双核3.06G CPU,集成显卡)上,全屏播放时就非常卡。

#12
RockCarry2007-05-10 19:25
改进了代码
消除了窗口尺寸改变时的画面闪烁
#13
yang6674552007-06-09 09:30
楼主开始是学习DOS下编程么?
什么时候也开始WINDOWS下编程的呢?
#14
RockCarry2007-06-09 12:34

晕,我又不是只会 DOS 编程。
Windows、WinCE、Linux 的开发也都做过。VC/EVC,MFC什么的也都用过。
其他各种语言,只要是自己见过的,也都差不多都用过,只是不很深入。
我对 Windows 平台的研究也不很深入。只能写一些简单的应用程序。
上面那个程序,其实可以使用 DirectShow 来做成一个播放器。但是我希望解码的部分也自己写。
要解码 H.264,真的很难,目前也就是实现了一个 YUVViewer 的功能。
在以后会加入 JPEG、PCX,然后是 MPEGx 系列,和 H.26x 系列的解码。
JPEG 的 Codec 目前我正在书写,也希望能早日完成。
目前自己研究的比较深入的还是 DOS、WinCE、图形编程、BootLoader 等。

[此贴子已经被作者于2007-6-9 12:36:32编辑过]

#15
killer_l2007-06-10 10:40
很好啊,学习........
#16
yang6674552007-06-11 13:50

我的意思是像我这样的初哥,是不是应该专注于C编程,如果同时学习DOS环境下的C编程和WINDOWS下的C++编程,会不会太贪心,导致最后一无所成了?

我担心的是这个.

其实因为我喜欢编程.无论是C,C++,VB还是JAVA,我都想学.不过在哪方面都不会,都是初哥一个.

真希望得到水平高的人的提拨与帮助.

#17
RockCarry2007-06-11 15:14
当然是专心一些好,如果太贪心,什么都想做,反而什么都做不好,最后只是一事无成啊。

[此贴子已经被作者于2007-6-11 15:15:19编辑过]


#18
yang6674552007-06-11 16:32

所以想知道RockCarry你是怎么一步一步学会那么多东西的啊,而且哪方面都不错.
现在你工作中,用到哪些知识技术比较多啊?

1