分类目录归档:程序开发
C++/CLI 的感想
由于C#直接操作API控制线程的不确定因素太多,于是决定放弃现在的方案。直接用native code创建线程并进行控制。从构思到完成总共花了3天时间。 实际写了C++/CLI后不得不佩服它的强大,可以把native code 直接写在managed的方法里面。而且从某些地方看还有性能上的优势。可惜用途窄了一点,只能用在windows 平台上,从而显得有些鸡肋了。为了可移植性大部分人都会直接选择C/C++,而为了开发.Net的几乎都会选VB/C#了。让人选择C++/CLI的可能性太少。除了像我们这样需要BT解决方案的。
VS2010的errno.h
每次升级vs总会遇到一些问题,果然这次M$也没让我们失望。在vs2010的errno.h中添加了POISIX如下 /* POSIX SUPPLEMENT */ #define EADDRINUSE 100 #define EADDRNOTAVAIL 101 #define EAFNOSUPPORT 102 #define EALREADY 103 #define EBADMSG 104 #define ECANCELED 105 #define ECONNABORTED 106 #define ECONNREFUSED 107 #define ECONNRESET 108 #define EDESTADDRREQ 109 #define EHOSTUNREACH 110 #define EIDRM … 继续阅读
关于vs2008 sp1 C++ 生成的 manifest 中运行库版本号的问题
一次偶然的发现vs2008 sp1生成manifest文件中vc++ runtime的版本号为9.0.21022.8,而sp1的vc++ runtime的版本应该是9.0.30729.1。google了一下,发现有人说这是vs2008 sp1的bug,并提交到ms的feedback:VC9 SP1 generates manifests with the wrong version number。然而今天查看了msdn,事实上这并不是一个bug。MSDN:重新分发应用程序并将其绑定到特定库
重新测试AVS2AVI编码VP62
今天有一点时间,重新测试了一下avs2avi输出vp62的功能。片源是一个640*480的avi。resize到480*360做flv。分别测试了YU12、YUY2和RGB32 3个色彩空间(Color Space)。然后发现除了YUY2和上次测试一样多了绿边外另外两个色彩空间(Color Space)都达到了我想要的结果,而上次测试恰好是用的YUY2这个色彩空间(Color Space)。这样的话离FLVUtil的完成又近了一步,只要压制前转换色彩空间(Color Space)到YU12就好了。
FLVUtil新问题
之前打算做avs2avi的前端来压制flv用的vp6,但是这个计划似乎行不通,因为今天测试压制640*480的flv时发现视屏(avs颠倒后的)上面被砍掉了8像素,下面多了8像素绿边。但是用VirtualDub压就没问题(avs2avi是基于早期的VirtualDub代码编写的,尝试移植到最新的VirtualDub代码但是无法通过编译。由于改变太大我也无法修改。)。这样一来我就不的不重新考虑avi输出方案了。倒是找到一个 Writing an AVI file with C#的代码,它用到了vfw的东东,不知道能不能调用vp6的codec进行编码~如果这个方案可行接下来就只需要考虑如何用C#处理avs文件了~
FLVUtil 0.0.0.1版发布以及一个人的平安夜~~
经过1周的程序编写,终于完成了这个工具的2个功能。1.查看FLV的onMetaData信息(有一个已知bug,如果包含keyframs无法显示具体的filepositions和times信息)2.修复有ffmpegflv工具合并的非16倍整数边长的VP6+mp3的flv(暂时不支持VP6Alpha,可能以后也不会支持因为目前的编码器还不能编码该格式,并且不支持aviutl的flv插件生成的flv,这个插件会自动补绿边使分辨率为16整数倍,可能修改插件源代码可以直接解决这个问题,但是我看不懂,只有希望作者或者编程高手上了~)。关于功能2具体原理可以参考非16整数倍边长VP6的FLV的研究。当然程序和那个原理有些不同,用更准确地算法修改每一个视频包,不会出现批量替换可能带来的错误。程序将在完成大部分代码后公开源代码(GPL协议)~FLVUtil.rar晚上12点整了,平安夜就这样结束了~~大家圣诞快乐。。。还想说的内容放弃,明天心情好继续写,睡觉去了~~
非16整数倍边长VP6的FLV的研究
看了Adobe的《SWF and FLV File Format Specification Version 9》中关于FLV中的VP6 包结构的说明
FLV工具编写计划
打算写一个FLV的工具,以下是准备实现的功能:1.读取FLV MetaData的信息2.编辑FLV MetaData的信息3.拆分FLV文件的音频和视频4.封装VP6+MP3的FLV文件5.压制FLV(打算做一个avs2avi的ui+集成BePipe的代码最后输出flv文件。)目前已经了解FLV整体结构,并且完成了FLV MetaDate信息读取的代码,写入部分代码也比较容易实现,拆分FLV文件有现成的程序代码参考。目前唯一难点是封装flv对视频和音频包的拆分,还不太清楚拆分原理,视频应该是按帧来拆的,音频就不知道怎么拆了~整个程序参考一下内容:http://www.roading.net/blog/tag_flv.htmlhttp://osflash.org/flvhttp://osflash.org/documentation/amf/astypeshttp://www.buraks.com/flvmdi/http://yamdi.sourceforge.net/http://www.moitah.net/#FLVExtracthttp://amfnet.openmymind.net/附送yamdi的mingw编译,其中包含mingw的patch文件。yamdi.rar
VS2008初体验~
好不容易装好VS2008当然要测试一下~~编译了几个东东测试:nasm 2.0rc3,yasm,openssl 0.9.8g,zlib1.2.3,apache2.2.6/2.3-dev,libctiny。除了apache外都能够直接正常编译。不过/wp64的参数被提示警告并且将在以后版本移除。Apache无法正常编译的原因是Apr和VS2008自带的Windows SDK不兼容,VS2008自带的Windows SDK是6.0A(x86/x64)和5.0(I64)。而Apr只能在Windows Server 2003 R2及以下的SDK上正常编译。VS2008的Command Prompt x86默认指定的SDK是6.0A的及Vista的SDK。所以我们只要替换掉Command Prompt中INCLUDE和LIB里面SDK 6.0A的路径为Windows Server 2003 R2 SDK的路径就可以正常编译了~个人认为这样可能比较好一点。替换方法:用set INCLUDE和set LIB查看当前的include和lib路径,并复制下来,把其中Windows SDK的路径替换掉,再用set INCLUDE=新路径和set LIB=新路径来设置。另外还有一个方法就是修改apr.hw文件,在httpd源代码目录\srclib\apr\include里面。修改第二个#define _WIN32_WINNT 0×0400/0×0500 为0×0600。(注:2.2.6是0×0400,2.3-dev是0×0500)然后的#define APR_HAVE_IPV6 0为#define APR_HAVE_IPV6 1 (如果不修改这里2.2.6编译还是要出错,2.3-dev未测试)不过这样就启用了IPv6的支持。我在Windows 2003 R2 SP2下添加系统ipv6支持后Apache无启动~提示“在 getsockopt 或 setsockopt 调用中指定的一个未知的、无效的或不受支持的选项或层次 :make_sock: for address [::]:80, … 继续阅读
安装VS2008遇到问题及解决
VS2008出来了于是决定尝鲜,由于电脑上已经装有VS2005,以及系统盘空间不够,没办法只好卸掉。这时遇到第一个问题,由于VS2005装了SP1补丁,为了节约空间我删掉了SP1补丁的msp文件,造成卸载初始化出错提示找不到vs_setup.msi。查了些资料:找到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\ E87FC36D048915F4583BABC49D768549位置,把它的Patches子项删掉,然后再运行安装程序就可以。然后卸载成功。继续安装VS2008,第一步安装Microsoft .NET Framework 3.5出错。于是我把机器上的Microsoft .NET Framework 2.0卸载,重试还是出错。然后尝试安装Microsoft .NET Framework 3.0还是出错。后来搜索了一些资料,发现是WIC(Windows Imaging Component)的原因。单独下载WIC安装发现注册表无法访问造成的。于是继续google,后来在MSDN论坛上找到了解决方法:在命令提示符中运行以下命令恢复注册表默认权限:secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose /areas REGKEYS更多资料可以查看kb313222。这下终于可以正常安装了,希望能够帮助遇到同样问题的朋友。
