Finally I have some free time, and suddenly I remembered a long-lost wish, which is to port ffmpeg and mame to arm or dsp platform by myself. So I found the website of ffmpeg and downloaded the source code of ffmpeg. svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg Of course, the premise is that you have to install the svn client first. Configure ffmpeg ./configure --cross-compile --cc=arm-linux-gcc --arch=armv4l --disable-network --disable-mmx -- disable-debug --disable-opts --disable-strip To compile, I used the arm toolchain of eldk 4.1. I found a problem that armv4l does not support pld. It is true that arm5 and before do not support this instruction. I have two ways to deal with it: 1. When configuring, change --arch=armv4l to --arch=armv. In this way, the general architecture is used without armv4l optimization. Although this method is a bit low-level, it works. After compiling, make install all the libraries to the usr/local/lib directory of the root file system of arm linux. Copy ffmpeg to the root directory under arm linux, and find an avi file to test it: ./ffmpeg -i V.avi tmp.yuv Copy tmp.yuv to the windwos host and use the yuv player to play it. You can see the flickering movie screen. Haha, it should be basically successful. 2. Modify the libavcodec/armv4l/dsputil_arm_s.S file and add .macro pld arg @ .endm Reconfigure --arch=armv4l so that you can use ffmpeg's optimization for armv4l. Recompile and run OK.