嵌入式硬件 嵌入式软件 嵌入式书籍 嵌入式操作系统 嵌入式开发工具 Window Mobile常用程序 技术资料
>首页 -> 下载中心 -> Window Mobile常用程序

TOP

软件名称:  FFMPEG解码程序
录 入 者:  
界面语言:  简体中文
下载次数:  71 次
运行环境:  
授权方式:  免费版
软件大小:  729K
浏览次数:  895
发布时间:  2007-05-27 10:00:19
是否含插件:   否
作者/开发商:  
PDF数据搜索:
下载地址: 您还可以搜索其他下载:
 
讯雷高速下载    点击下载  
软件介绍:  

多谢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里面的汇编继续优化。(很偷懒,呵呵)

下载说明: ☉推荐使用讯雷下载本站软件,使用 WinRAR v3.10 以上版本解压本站软件。
☉如果这个软件总是不能下载的请联系我们,谢谢合作!!
☉下载本站资源,如果服务器暂不能下载请过一段时间重试!
☉如果遇到什么问题,请到本站论坛去咨寻,我们将在那里提供更多 、更好的资源!
☉本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。

评论

称  呼:
内  容:

-->

相关栏目

下载中心
[DSP [技术资料 [Window Mobile常用程序 [嵌入式开发工具 [嵌入式操作系统 [嵌入式书籍 [嵌入式软件 [嵌入式硬件 [单片机

最新软件

·手机基站定位重庆移动版
·单片机反编译器 V1.2
·avr_c例子
·PC机与多台单片机实时通..
·一揽子资料之:AVR单片机..
·uPSD3200单片机快速入门
·P89V51系列单片机ISP下载..
·飞思卡尔32位MCU应用笔记..

热门软件

·c_c++嵌入式系统编程
·最新ARM嵌入式开发视频教..
·嵌入式Linux设计与应用
·uCOS中文书
·嵌入式系统开发圣经
·Windows CE开发初步
·uC/OS-II v2.52
·ARM论文集

推荐软件