UCI 0.4
dwing吧
全部回复
仅看楼主
level 13
dwing 楼主
本次更新做了较多改进,同时也修复了上一版本发现的几个问题,欢迎反馈bug报告或建议.
http://www.namipan.com/d/uci.7z/bab044c4e2fcb3c11a72ff1e6ff8daf7d267061252400600
0.4  (2009-05-30) 更换解码接口,YUV420相关转换使用MMX优化,更新FFmpeg,增加imgdec工具,增加Susie解码插件的支持
* 接口
// UCI格式图像解码,目前只支持输出24位BGR和32位的BGRA,返回0表示调用成功,负数表示错误,不支持多线程同时访问
int __stdcall UCIDecode(
  const void*  src,    // 输入UCI数据指针(不能传入null,其它指针参数可以传入null表示不需要输出)
  int          srclen, // 输入UCI数据长度
  void**       dst,    // 输出RAW数据的指针(BGR或BGRA格式)
  int*         stride, // 输出RAW数据的行间字节跨度(dst不为null时,stride不能传入null)
  int*         width,  // 输出图像的宽度值
  int*         height, // 输出图像的高度值
  int*         bit)    // 输出图像的bpp值(每像素位数)
// 释放UCIDecode输出的RAW数据指针所指的内存区
void __stdcall UCIFree(void* p);

2009年05月30日 06点05分 1
level 13
dwing 楼主
命令行中转换当前目录中指定的几种图像文件到UCI格式的命令:
for %a in (*.jpg;*.png;*.bmp;*.gif;*.tga) do imgdec %a - | ucienc - -o %~na.uci
如果要写到批处理(.bat)中,要改成这样:
for %%a in (*.jpg;*.png;*.bmp;*.gif;*.tga) do imgdec %%a - | ucienc - -o %%~na.uci
2009年05月30日 06点05分 2
level 13
dwing 楼主
先多做些测试,以及体积和质量最佳平衡参数的调节,确认无误后再全面转换.
而且建议备份原图到刻录光盘上备份以防不测,另外使用过的旧版UCI最好都保留,避免以后万一出现不兼容时应急(目前版本均向下兼容).
2009年05月30日 15点05分 5
level 13
dwing 楼主
8位灰度图可以通过imgdec转换成24位色再去压缩,此时UV通道的数据时非常好压缩的,而目前也没有办法让x264不压缩UV通道.
ACDSee官方不会去支持UCI的,各种原因.
2009年05月31日 01点05分 8
level 13
dwing 楼主
官方Susie 0.47b未发现问题,只是大图片的缩略图无法显示(暂时不支持).
ACDSee Pro 8使用Susie插件,只能正常显示24位图,32位图无法正常显示.
可上传一个有问题的uci文件供测试.
2009年06月01日 11点06分 11
level 13
dwing 楼主
那个网页里有单独的插件包可下载.
2009年06月01日 12点06分 13
level 13
dwing 楼主
官版的Susie32 0.47b直接打开和关联打开1jyou78833.uci都没问题.
发现ACDSee显示uci的缩略图有问题,浏览24位图没问题.
2009年06月02日 03点06分 15
level 13
dwing 楼主
Susie32查看24位图的缩略图无问题,32位图缩略图和放大缩小的时候无法显示.
2009年06月02日 04点06分 16
level 13
dwing 楼主
测试总结:
Susie32: 
24bit UCI: 正常
32bit UCI: 只有缩放浏览及缩小的缩略图无法显示
ACDSee with Susie plugin:
24bit UCI: 只有缩略图水平移位
32bit UCI: 无法显示
2009年06月02日 04点06分 17
level 13
dwing 楼主
2009年06月04日 02点06分 19
level 13
dwing 楼主
和libswscale有点差别,主要是编码上(RGB->YUV),不再用lanczos过滤.
解码考虑到速度,只使用了最简单的过滤算法.以前的版本其实也是如此,效果几乎没有区别,速度上只比以前无MMX优化的快了一点点,毕竟这个转换不是速度瓶颈.
2009年06月04日 04点06分 21
level 13
dwing 楼主
其实YUV<->RGB的MMX优化代码参考了XVID的,只是略微做点修改.
简化后的代码是否更快还需要测试才能确定.
2009年06月04日 10点06分 23
level 13
dwing 楼主
YUV变换不是性能瓶颈,不优化那几个指令没关系,图像编解码对于PentiumII来说可以用.
sse2那个说的是ftol2吧?那处代码确实有sse2优化的版本,但我已经禁用了,在没有SSE2的CPU上已经测试无误了.
2009年06月04日 12点06分 26
level 13
dwing 楼主
缩放等图像处理不是UCI所要做的,可以使用其他软件处理再送给UCI编码.
2009年06月06日 11点06分 29
level 13
dwing 楼主
imgdec是基于CxImage的,实现起来很容易.
2009年06月07日 02点06分 31
level 13
dwing 楼主
现在对XnView的支持是最好的,兼容性和效率都比susie高.
2009年06月07日 08点06分 35
level 13
dwing 楼主
UCI 0.5 TODO:
add some MMX-optimized code in H.264 decoding functions such as IDCT.
2009年06月08日 04点06分 36
level 13
dwing 楼主
变成24bit不用担心,其实UV通道会被压得很小,对体积的影响可以忽略.
变暗的问题我会找时间测试一下,"+1 fix"就是之前发现解码后略微变暗而做的调整.
2009年06月08日 08点06分 43
level 13
dwing 楼主
色彩空间转换的问题也会找时间检查一下,我想主要是Y通道scale导致的.
2009年06月08日 08点06分 44
level 13
dwing 楼主
没有+1fix的测试:
BMP -> UCI -> BMP
00   ->   00
80   ->   7F
FF   ->   FD
2009年06月08日 10点06分 47
1 2 3 尾页