simd

Android ffmpeg的x86编译和优化

Android内置的编解码器比较少,流媒体功能也比较薄弱,现有的android关于远程视频的程序大部分使用了FFMPEG。FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码.TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。这些播放器也大部分移植到了Android 上,只是都是基于ARM的,本文基于目前流行的2个开源项目,介绍了如何移植FFMPEG到x86的android平台上。
  • 开发人员
  • 英特尔 AppUp® 开发人员
  • 学生
  • 安卓*
  • 安卓*
  • C/C++
  • Java*
  • 高级
  • 英特尔® SIMD 流指令扩展
  • OpenGL*
  • optimization
  • simd
  • OpenGL ES
  • 嵌入式
  • 图形
  • 优化
  • SIMD tuning with ASM pt. 3 - PS good, SS bad

    If you recall where we left off on my post yesterday we compiled a test program with gcc and saw this code for the 'working' part of a loop. (Yes, I will be getting to the Intel C++ compiler next post, but I'll stick with what I've got so far just so we can take baby steps).

    
    .LBB52:
    
            .loc 1 14 0
    
            movss   (%rbp,%rax,4), %xmm0
    
            addss   (%rdx,%rax,4), %xmm0
    
            movss   %xmm0, (%rbp,%rax,4)
    
            addq    $1, %rax
    

    SIMD tuning with ASM pt. 2 - Your First Dump

    (here's part 1 in case you missed it)

    Let's take a really, really simple program. It just adds one array of things to another. This should be a SIMD slam dunk! I will call this program blah.cpp

    
    #include 
    
    #define PTS 1000
    
    
    int main()
    
    {
    
            float x[PTS];
    
            float y[PTS];
    
    
            for (int i = 0; i < PTS; i++) {
    
                    x[i] = 0.0f;    // set up some data
    

    页面

    订阅 simd