积累日常生活的点滴,开发过程的心得。

JM Decoder计算PSNR的一个bug

今天发现JM Decoder的一个bug,对于有I帧全部是IDR帧的码流,由于IDR的帧号是0,IDR之前如果有B帧的时候,B帧的帧号为负值。JM Decoder在查找YUV文件的参考帧来计算PSNR时,由于负值会找不到相应的参考帧,导致算出的PSNR是错误的。解码时它会报类似下面的错误。

Warning: Could not seek to frame number -2 in reference file. Shown PSNR might be wrong.

 

 

 

基于BSpline的插值运算

正在做的一个C#项目要用到插值运算,插值运算算法主要是用了BSpline和多项式。

找了一下没有写得特别好的BSpline的C#库,Delphi倒是有一个别人写的不错的例子。

简单改写了一下。

使用.Net客户端访问BlazeDS

前面那个Flex项目,客户追加了预算,增加了一些功能,其中一个功能要用.Net来写客户端,找了一下发现DotNet程序可以使用 FluorineFx来访问BlazeDS的服务。

一个很好用的H264文件分析工具

Elecard StreamEye Studio

一个高效的固定大小内存池管理算法

这两天,在改一个既有程序的内存池管理算法,原有的管理算法基于固定内存最大块管理,块的尺寸固定为最大可利用内存大小,在大部分的情况下内存利用率非常低。

为此打算找一个高速的内存利用率高的算法。先是看了看FastMM,代码太复杂,使用了太多的汇编语言,过于庞大,接近8000行代码。于是放弃,找来找去,发现sqlite的内存池管理算法还是挺牛叉的。它是基于二分策略的,每一个内存块的大小是2的指数。

视频开发中使用有理数进行小数运算

在研究视频解码程序的时候,我们看到的源代码比如FFMpeg中几乎都是使用有理数来进行运算小数运算,原因就是有理数相对浮点运算来说,几乎没有误差,不会产生误差的累积和扩散。

H264的CBR码率控制及溢出防止策略(Filler)


在Google appegine上部署BlazeDS和Spring程序(二)

作者:陈省

接着上篇文章,这次我们要添加Spring的安全认证功能,首先在\WEB-INF\config\web-application-security.xml文件中定义认证Provider,

基于Spring Security配置多个认证Provider

前面做的那个Flex项目最近有一个小改造,客户要在那个应用服务器基础上添加一个新的Service,但是这个新的服务是使用另外一套权限管理认证机制,因为预算很少,为了不增加部署成本,考虑部署在同一个BlazeDS上,查了一下Spring Security,发现可以部署多个认证Provider。

一个开源的OCR库

同步内容