Microsoft   CSIP    WindowsMobile    MEDC    合作伙伴    联合实验室
设为首页    |    加到收藏夹          
欢迎光临

T264的PC端压缩解压程序以及代码

第1楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

编解码器来源:http://lspbeyond.go1.icpcn.com/downloads.htm

做了修改,主要是增加了这个图形界面。




代码下载从21楼开始。

 
2006-08-02 13:45 回复 | 引用 | 编辑 | Top

JM解码器的测试程序以及代码

第2楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

程序以及测试文件。
说明:
1.两个程序均可以播放X264生成的264文件,这里先只支持QCIF,文件名固定为test.264,不是这个名称将无法解码;
2.PC版将两个文件放在同一个文件夹下即可运行,按播放可以观察播放效果;
3.Pocket PC版将264文件放在根目录下,运行即可观察解码效果。

JM是基于JM10.1,纯C的,解码速度比T264慢很多。

附件:
PJMPlayer.rar(294.98KB)  
2006-08-02 13:46 回复 | 引用 | 编辑 | Top

Re: JM解码器的测试程序以及代码

第3楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

运行效果截图!
附件:
JM.jpg(16.46KB)  



()

2006-08-02 13:48 回复 | 引用 | 编辑 | Top

FFMPEG解码程序

第4楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

多谢tianalexander@gmail.com给我提供了FFMPEG在VC上的工程,节省了我很多时间。
这个程序我很快就在VC上面跑起来,但是移植到EVC下面,中间经历了很多问题,花了3天才解决,有了不少心得体会。和大家交流一下。
其实开源的TCPMP的新版本已经加入了FFMPEG这个插件,并且已经将很多运算用汇编优化的很好,由于这里我们需要对自己的编码网络包进行传送和解码,并且TCPMP体系庞大,所以还是自己使用解码函数这样来做,灵活性更强。
tian提供的工程很好,很快就可以在VC上跑起来。但是移植到EVC,出了很多问题。经过不断的调试修改,我觉得主要的问题有两个,一个是在数据类型转换时的内存对齐问题,一个是64位整数乘法的问题。
这个问题主要体现在fill_rectangle这个函数当中,原来的函数是这样的:
static inline void fill_rectangle(void *vp, int w, int h, int stride, uint32_t val, int size){ //FIXME ensure this IS inlined
    uint8_t *p= (uint8_t*)vp;
    assert(size==1 || size==4);
   
    w      *= size;
    stride *= size;
   
//FIXME check what gcc generates for 64 bit on x86 and possible write a 32 bit ver of it
    ……
    }else if(w==8 && h==4){
        *(uint64_t*)(p + 0*stride)=
        *(uint64_t*)(p + 1*stride)=
        *(uint64_t*)(p + 2*stride)=
//        *(uint64_t*)(p + 3*stride)= size==4 ? val*0x0100000001ULL : val*0x0101010101010101ULL;
        *(uint64_t*)(p + 3*stride)= size==4 ? val*0x0100000001 : val*0x0101010101010101;
    }else if(w==16 && h==2){
        *(uint64_t*)(p + 0+0*stride)=
        *(uint64_t*)(p + 8+0*stride)=
        *(uint64_t*)(p + 0+1*stride)=
//        *(uint64_t*)(p + 8+1*stride)= size==4 ? val*0x0100000001ULL : val*0x0101010101010101ULL;
        *(uint64_t*)(p + 8+1*stride)= size==4 ? val*0x0100000001 : val*0x0101010101010101;
   ……}
注意这里用了很多强制类型转换,在编译的时候,没有错误,但是在ARM上运行的时候,可能因为ARM寻址指令的问题,会出现data type misalignment错误,所以先将这里改成了复制内存的方式。
其实这里如果一开始就使用FFMPEG提供的汇编写的这个函数,就不会出任何问题,不过这样64位整数在EVC乘法的问题我就不会发现了。我在这里能够运行之后,总是解码头帧正确,从第二帧开始出错,跟踪了一下午,才发现原来是这个函数里面的64位整数乘法,如果不用64位变量而只用立即数进行运算,返回的是32位整数,所以这里又这样修改了一下,结果才正确。

这个是程序和测试用例,可以用X264这个程序来将YUV制作为264编码文件。本程序是纯C的,所以PPC上400M只能做到11FPS左右,不过我会用TCPMP/FFMPEG里面的汇编继续优化。(很偷懒,呵呵)
附件:
X264编码解码1.rar(729.77KB)  
2006-08-02 13:49 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第5楼
2006-06-16
职务:普通用户
积分:1574
等级: 高级程序员二级
金钱: 0
精华: 2
帖子数:89
发帖数前75位(57)

this is cool! i like it
 
2006-08-04 11:53 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第6楼
2006-08-20
职务:普通用户
积分:30
等级: none
金钱: 0
精华: 0
帖子数:3
无等级(976)

请问“其实这里如果一开始就使用FFMPEG提供的汇编写的这个函数”,这个汇编写的函数在哪里?
 
2006-08-20 22:37 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第7楼
2006-08-20
职务:普通用户
积分:30
等级: none
金钱: 0
精华: 0
帖子数:3
无等级(976)

采用ffmpeg,我也是这个问题,evc下,采用缺省编译方式,h264解码正确,但选择max speed编译方式,则又出现这个问题,解码不正确,真是奇怪,到底还有什么问题!?
 
2006-08-20 22:52 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第8楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

汇编的在开源工程TCPMP里面,我在那个帖子里面已经写过。
出错是因为一些运算优化后的结果和正确值产生偏差,往往出现在64位运算以及结构体成员变量赋值当中,需要调试可以将DEBUG的选项设置为MAX SPEED再编译调试,并且我测试了即使是TCPMP的ffmpeg代码,用Max Speed也出错,由于代码很多,就没去改了。
 
2006-08-22 10:10 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第9楼
2006-08-20
职务:普通用户
积分:30
等级: none
金钱: 0
精华: 0
帖子数:3
无等级(976)

sorry,你说的tcpmp中的汇编函数在哪个文件中,我搜索了一下本论坛,没搜到你说的“那个帖子”!
谢谢
 
2006-08-22 18:02 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第10楼
2006-09-20
职务:普通用户
积分:20
等级: none
金钱: 0
精华: 0
帖子数:2
无等级(0)

我最近也在ffmpeg解码端移植到mobile上的东西,但是出现很多关于Inline函数还有宏定义,以及数据类型的错误,想问问你该怎么做?
 
2006-09-20 12:42 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第11楼
2006-09-20
职务:普通用户
积分:20
等级: none
金钱: 0
精华: 0
帖子数:2
无等级(0)

还有就是出现了很多: fatal error C1083: Cannot open include file: 'sys/types.h': No such file or directory
但是sys目录下时存在types.h这个文件的 请问你是否遇到这个问题
 
2006-09-20 13:15 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第12楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

上面的问题我都遇到过,都解决了。
 
2006-09-21 11:09 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第13楼
2006-12-29
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(434)

Dear MacintoshM,

Could you please email me the project file for compiling ffmpeg on VC and eVC?
My email address is fdd2k@yahoo.com

Thanks very much.

Bill
 
2006-12-29 15:26 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第14楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

要先把25FPS的AVI转成15FPS的AVI
 
2007-01-17 11:56 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第15楼
2007-01-19
职务:普通用户
积分:40
等级: none
金钱: 0
精华: 0
帖子数:4
无等级(700)

强烈顶!
 
2007-01-19 14:16 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第16楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

这些函数要用GCC的汇编器来汇编的
 
2007-01-24 12:02 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG,JM源代码在3楼)

第17楼
2007-01-22
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:4
无等级(698)

Dear MacintoshM,

Could you please email me the project file for compiling ffmpeg on eVC or VS 2005?
I would like to compile ffmepg for wm 5.0~
My email address is paulstrong@caece.net

Thanks for ur help

paulstrong
 
2007-01-25 13:40 回复 | 引用 | 编辑 | Top

Re: FFMPEG解码程序

第18楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

没有详细的过程,不好参考。
我现在也是移植264解码,遇到很接近的问题,但是调试比较麻烦,头疼中……
 
2007-02-13 08:11 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第19楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

虽然不记得过去修改的详细过程,但是新来的问题还是解决了。过会把所有代码都整理发上来,主要3大块。x264编码器,JM解码器(Windows和Windows CE),T264(Windows编解码、Windows CE解码),FFMPEG(Windows和Windows CE解码),总共7份代码。
 
2007-02-14 19:47 回复 | 引用 | 编辑 | Top

H.264系列视频编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第20楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

主要要发上来的代码有:
1、x264编码器;
2、JM解码器(Windows和Windows CE);
3、T264(Windows编解码、Windows CE解码);
4、FFMPEG(Windows和Windows CE解码)。
总共7份代码。
 整理到一起,形成一个系列,方便做视频的同行参考。
请大家根据需要下载,我整理这些还是花了不少休息时间的,呵呵
同时,代码按照我原来得到的代码的相同的许可发布(一般是GPL),可以比较容易的由我移植的代码找到代码的原来提供者。

 
2007-02-14 20:00 回复 | 引用 | 编辑 | Top

Re: H.264系列编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第21楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

2.Windows版JM解码器代码
    依据JM10.1代码修改而来,可以实时显示解码画面,需要CIF版本请自己修改一下。
注:
    JM代码有内存泄露
    1.image.c里面readnewslice函数一处return之前没有FreeNALU(nalu);
    2.mbuffer.c里面free_storable_picture函数少释放一个成员变量s->slice_id,一共10个.
附件:
JMPlayer.rar(392.03KB)  
2007-02-14 20:23 回复 | 引用 | 编辑 | Top

Re: H.264系列编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第22楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

3.T264系列
   Windows版本编码解码器
附件:
H264EncPlayer.rar(316.88KB)  
2007-02-14 20:26 回复 | 引用 | 编辑 | Top

Re: H.264系列编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第23楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

3.5 T264系列
    Windows CE/Windows Mobile版本T264解码器
    可以在EVC下编译,这个版本是纯C的,需要CIF版本请自己修改一下。
附件:
H264Decode.rar(446.23KB)  
2007-02-14 20:35 回复 | 引用 | 编辑 | Top

Re: H.264系列编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第24楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

Windows CE版JM播放器代码见这个帖子3楼。

http://www.winbile.net/BBS/forums/1001958/ShowPost.aspx

 
2007-02-15 08:36 回复 | 引用 | 编辑 | Top

测试序列

第25楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

这些是QCIF的测试序列,编码参数为
x264 -o test.264 test.yuv 176x144
目前JM能够解码多数参数编码序列,FFMPEG仅能够解码P帧。
附件:
QCIF 264 Samples.rar(910.25KB)  
2007-02-20 09:03 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第26楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

我在移植到arm上遇到数据类型转换时的内存对齐问题,请问楼上是怎么解决的?有什么经验吗?
 
2007-02-25 17:41 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第27楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

在symbian 7.0上用ffmpeg h264 解码,在模拟器上解出来的图像是正确的,但在真机上图像很模糊,请问这个是什么原因呢?
 
2007-02-26 16:19 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第28楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

图像模糊,那应该不是解码的问题而是后面显示的问题了。
 
2007-02-26 18:40 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第29楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

如果是现实的问题,那么在模拟器上也一样的。出现这个问题是由于之前有数据类型转换内存对其问题,我修改了,也许没有完全改好,就出现这个问题。请问这个数据转换内存对齐的问题,你是怎么解决的。
 
2007-02-27 09:23 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第30楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

我解码第一帧的时候,就解不出来图像。
 
2007-02-27 09:28 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第31楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

先DEBUG,遇到内存访问冲突问题会出现提示的。在EVC-ARM上是这样
 
2007-02-27 09:42 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第32楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

这个在模拟器上都是正确的,在真机上没有任何提示。解不出图像。我msn:luolinwang@hotmail.com
 
2007-02-27 10:19 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第33楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

模拟器和真机确实不能等同,一个是X86一个是ARM,X86上就少了一些内存问题。
 
2007-02-27 12:28 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第34楼
2007-01-16
职务:普通用户
积分:60
等级: none
金钱: 0
精华: 0
帖子数:6
发帖数前500位(431)

终于解决了。郁闷!
 
2007-02-27 13:43 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第35楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

解决了就好,呵呵
 
2007-02-27 13:46 回复 | 引用 | 编辑 | Top

Re: H.264系列视频编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第36楼
2007-03-03
职务:普通用户
积分:10
等级: none
金钱: 0
精华: 0
帖子数:1
无等级(0)

版主辛苦了!
 
2007-03-03 19:51 回复 | 引用 | 编辑 | Top

Re: H.264系列视频编解码器代码下载(Windows和Windows CE/Windows Mobile版本)

第37楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

只要有用,大家喜欢就好,呵呵
 
2007-03-05 10:42 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第38楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

楼主什么时候能发代码呀?最近调的很是郁闷呀!
zzuzhp@gmail.com
 
2007-03-10 22:06 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第39楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

大家发帖之前请参看版规!
 
2007-03-11 10:15 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第40楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

不好意思~~
那我向楼主求教个问题: 为什么我把ffmpeg移植到WM5.0上之后解码特别的慢?我解码50f(只包含 I、P帧) 却需要我60秒 !
而且最重要的问题是: 为什么解码速度越来越慢? 刚开始每秒还能解码3帧,到后来几秒才解码1帧!不会是因为没有汇编优化的原因吧?
不知道楼主碰到过这样的问题吗?
如果没有,那你估计问题处在什么地方呢?
 
2007-03-11 10:43 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第41楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

多大的画面?
 
2007-03-11 11:14 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第42楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

是 QCIF的 很小啊
 
2007-03-11 12:07 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第43楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

还有就是fill_rectangle中内存对其的问题我都用memcpy代替了,我不会汇编
 
2007-03-11 12:12 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第44楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

其实代码我早就开放了的,难道不好找到么?

http://www.winbile.net/bbs/forums/1012589/ShowPost.aspx

FILLRECTANGLE目前我还是用C的,因为原来那些是gcc的ARM汇编,要装CygWin才能够用Wince_arm_gcc来汇编出来,比较麻烦,我还是把这个GCC版本的贴出来,有时间再用arm_asm能够认的写回来。

另外在mb_intra模式下,siple_idct和j_revdct是没有被使用到的。所以暂时没做出修改。

 
2007-03-11 13:04 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第45楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

fill_rectangle的汇编函数如下:
AREA |.text|, CODE, ARM

|fill_rectangle| PROC
; Line 383
stmdb sp!, {r4 - r6, lr}
|$M13326|
mov r6, r0
; Line 387
ldr r4, [sp, #0x14]
mul r0, r1, r4
; Line 388
mul r5, r3, r4
; Line 393
cmp r0, #2
bne |$L5804|
cmp r2, #2
bne |$L13307|
; Line 395
ldr r0, [sp, #0x10]
cmp r4, #4
addne r0, r0, r0, lsl #8
mov r0, r0, lsl #16
mov r1, r0, lsr #16
strh r1, [r6, +r5]
strh r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13307|
; Line 396
cmp r2, #4
bne |$L5849|
; Line 400
ldr r0, [sp, #0x10]
cmp r4, #4
add r1, r6, r5, lsl #1
addne r0, r0, r0, lsl #8
mov r0, r0, lsl #16
mov r2, r0, lsr #16
add r0, r5, r5, lsl #1
strh r2, [r0, +r6]
strh r2, [r1]
strh r2, [r6, +r5]
strh r2, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L5804|
; Line 401
cmp r0, #4
bne |$L5817|
cmp r2, #1
bne |$L13308|
; Line 402
cmp r4, #4
ldreq r1, [sp, #0x10]
streq r1, [r6]
; Line 440
ldmeqia sp!, {r4 - r6, pc}
; Line 402
ldr r2, [pc, #0x29C]
ldr r0, [sp, #0x10]
mul r1, r0, r2
str r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13308|
; Line 403
cmp r2, #2
bne |$L13309|
; Line 405
cmp r4, #4
bne |$L13293|
ldr r1, [sp, #0x10]
str r1, [r6, +r5]
str r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13293|
; Line 405
ldr r0, [sp, #0x10]
ldr r2, [pc, #0x264]
mul r1, r0, r2
str r1, [r6, +r5]
str r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13309|
; Line 406
cmp r2, #4
bne |$L5849|
; Line 410
cmp r4, #4
bne |$L13295|
ldr r1, [sp, #0x10]
add r0, r5, r5, lsl #1
str r1, [r0, +r6]
str r1, [r6, +r5]
str r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13295|
; Line 410
ldr r0, [sp, #0x10]
ldr r2, [pc, #0x224]
mul r1, r0, r2
add r0, r5, r5, lsl #1
str r1, [r0, +r6]
str r1, [r6, +r5]
str r1, [r6]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L5817|
; Line 411
cmp r0, #8
bne |$L5833|
cmp r2, #1
bne |$L13310|
; Line 413
cmp r4, #4
bne |$L13297|
ldr r1, [sp, #0x10]
str r1, [r6]
str r1, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13297|
; Line 413
ldr r0, [sp, #0x10]
ldr r2, [pc, #0x1DC]
mul r1, r0, r2
str r1, [r6]
str r1, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13310|
; Line 414
cmp r2, #2
bne |$L13311|
; Line 418
cmp r4, #4
bne |$L13299|
ldr r1, [sp, #0x10]
mov r0, r6
str r1, [r0, +r5]!
str r1, [r0, #4]
str r1, [r6]
str r1, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13299|
; Line 418
ldr r0, [sp, #0x10]
ldr r2, [pc, #0x198]
mul r1, r0, r2
mov r0, r6
str r1, [r0, +r5]!
str r1, [r0, #4]
str r1, [r6]
str r1, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13311|
; Line 419
cmp r2, #4
bne |$L5849|
; Line 423
cmp r4, #4
bne |$L13301|
ldr r2, [sp, #0x10]
add r0, r5, r5, lsl #1
mov r1, r6
str r2, [r0, +r6]!
mov r3, #0
str r2, [r1, +r5, lsl #1]!
str r3, [r0, #4]
mov r0, r6
str r3, [r1, #4]
str r2, [r0, +r5]!
str r3, [r0, #4]
; Line 437
str r2, [r6]
str r3, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13301|
; Line 423
ldr r1, [sp, #0x10]
ldr r4, [pc, #0x12C]
umull r2, r0, r1, r4
mla r3, r1, r4, r0
add r0, r5, r5, lsl #1
str r2, [r0, +r6]!
mov r1, r6
str r2, [r1, +r5, lsl #1]!
str r3, [r0, #4]
mov r0, r6
str r3, [r1, #4]
str r2, [r0, +r5]!
str r3, [r0, #4]
; Line 437
str r2, [r6]
str r3, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L5833|
; Line 424
cmp r0, #0x10
bne |$L5849|
cmp r2, #2
bne |$L13312|
; Line 428
cmp r4, #4
bne |$L13303|
ldr r2, [sp, #0x10]
; Line 437
mov r0, r6
mov r3, #0
str r2, [r0, +r5]!
str r3, [r0, #0xC]
str r2, [r0, #8]
str r3, [r0, #4]
str r2, [r6, #8]
str r3, [r6, #0xC]
str r2, [r6]
str r3, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13303|
; Line 428
ldr r1, [sp, #0x10]
ldr r4, [pc, #0xA4]
umull r2, r0, r1, r4
mla r3, r1, r4, r0
; Line 437
mov r0, r6
str r2, [r0, +r5]!
str r3, [r0, #0xC]
str r2, [r0, #8]
str r3, [r0, #4]
str r2, [r6, #8]
str r3, [r6, #0xC]
str r2, [r6]
str r3, [r6, #4]
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13312|
; Line 429
cmp r2, #4
bne |$L5849|
; Line 437
cmp r4, #4
ldreq r2, [sp, #0x10]
moveq r3, #0
beq |$L13306|
ldr r1, [sp, #0x10]
ldr r4, [pc, #0x54]
umull r2, r0, r1, r4
mla r3, r1, r4, r0
|$L13306|
add r0, r5, r5, lsl #1
str r2, [r0, +r6]!
mov r1, r6
str r2, [r1, +r5, lsl #1]!
str r3, [r0, #4]
str r2, [r0, #8]
str r3, [r0, #0xC]
mov r0, r6
str r3, [r1, #4]
str r2, [r1, #8]
str r3, [r1, #0xC]
str r2, [r0, +r5]!
str r3, [r0, #0xC]
str r2, [r0, #8]
str r3, [r0, #4]
str r2, [r6, #8]
str r3, [r6, #0xC]
str r2, [r6]
str r3, [r6, #4]
|$L5849|
; Line 440
ldmia sp!, {r4 - r6, pc}
|$L13329|
DCD 0x1010101
|$M13327|

ENDP ; |fill_rectangle|
 
2007-03-11 13:05 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第46楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

十分感谢楼主的好心!
楼主能不能说说这个fill_rectangle的汇编函数怎么加进工程里面?
要用CygWin吗?不知道怎么用的,能不能简单的讲一下?
 
2007-03-11 19:23 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第47楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

还有就是老问题: 为什么我的解码器运行会越来越慢?
 
2007-03-11 21:17 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第48楼
2006-11-10
职务:普通用户
积分:294
等级: 普通用户
金钱: 0
精华: 0
帖子数:28
发帖数前100位(96)

我用你的程序试了一下,解码qcif的foreman 398帧,花了270秒,结果也是很不理想啊!!!
我用的是PPC上WM5的模拟器。
 
2007-03-11 22:29 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器移植到(包括T264、JM和FFMPEG)

第49楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

fffffffffffffffffffffffffffffffffffffffff在我的模拟器上不慢啊,是不是因为你机器的问题,模拟器才慢的?
 
2007-03-11 23:07 回复 | 引用 | 编辑 | Top

Re: WINCE、ARM上的H.264解码器(包括T264、JM和FFMPEG,JM源代码在3楼)

第50楼
2006-06-06
职务:普通用户
积分:13370
等级: 技术总监
金钱: 0
精华: 38
帖子数:903
发帖数前10位(6)

 Aurora wrote:
十分感谢楼主的好心!
楼主能不能说说这个fill_rectangle的汇编函数怎么加进工程里面?
要用CygWin吗?不知道怎么用的,能不能简单的讲一下?

回头我写好了发上来,语言描述不清楚。
 
2007-03-11 23:08 回复 | 引用 | 编辑 | Top



Copy Right© CSIP 信息产业部软件与集成电路促进中心 All Rights Reserved 版权所有 Winbile v2.0 (Debug Build: 0.18848) 京ICP备06020771号
© 2010
. 页面执行: 2.719秒. 内存使用: 201.4MB. 155 次数据库查询.