Here is one test method which checks that the encoder's
view of decoded pictures in the same as the decoder's view.
This ensures that there is no distortion besides what is
inherently caused by compression.

# Install and compile x264 :
svn co svn://svn.videolan.org/x264/trunk x264
cd x264
./configure
perl -pi -e 's|//(#define DEBUG_DUMP_FRAME)|$1|' encoder/encoder.c # define DEBUG_DUMP_FRAME
make
cd ..

# Install and compile JM reference decoder :
wget http://iphome.hhi.de/suehring/tml/download/jm10.2.zip
unzip jm10.2.zip
cd JM
sh unixprep.sh
cd ldecod
make
cd ../..

./x264/x264 input.yuv -o output.h264 # this produces fdec.yuv
./JM/bin/ldecod.exe -i output.h264 -o ref.yuv
diff ref.yuv fdec.yuv
