Here's a bunch of new yuv4mpeg-tools: ssim.tar.gz (20 KB)
Most importantly a SSE2-Implementation of the calculation of the necessary values for SSIM and PSNR for 8x8-blocks.
- fscan
- 
						Pipe in a y4m-stream, compares each frame with its successor and prints the SSIM and PSNR indices. 
- fdel
- 
						usage: fdel <mod> <rem>Passes only those frames from stdintostdout, whose (frame number % mod) != rem. Useful for very basic 3:2-pulldown. Also seey4mivtcin the mjpegtools-distribution for a comparable (but rather fixed) approach.
- y4mcat
- 
						Concatenates several y4m-streams into a single stream; warns about header information mismatches (may be disabled) and allows header adjustments. pixel aspect ratio (N:M) -f force overridden header fields for all inputs, disable warnings -i {p|t|b} interlace code: p (none), t (top first), b (bottom first) -h this help message -rframe rate in Hz as ratio (N:M) -v verbosity: 0 (quiet), 1 (normal), 2 (verbose/debug) -x specify chroma format, 'help' for list of formats Default is to copy the stream header from the first source, given options override that. If FILE is '-' then stdin is read at its place. Use ./- for an existing file with that name.]]> 
- y4moverlap
- 
						Compares each frame from the video on stdinto each frame in a video given as parameter using SSIM or PSNR. The resulting matrix gives precise information about the similarity of certain parts of the video (search for diagonal lines consisting of1.0values, top-left to bottom-right).> overlap.matrix -m don't make use of seekability for second input: load all frames to memory (faster) -pprecision of output for non-quantized values (# fractional digits) [4] -q quantize output to integers (divide, truncate) -r enable rounding instead of truncation for quantization -s output SSIM instead of PSNR (slower) -v verbosity (0: quiet, 1: normal, 2: verbose/debug) Outputs an NxM matrix with N = #frames(stdin) and M = #frames( ). Each entry (i,j) contains the smilarity index between frame i from stdin and frame j from . A diagonal in direction from top-left to bottom-right containing high values indicates a match between the parts represented by the indices - an overlap between both inputs. If the second input, , is not seekable it will fully be loaded into memory. This may cause problems for large sequences.]]> 
y4m-Java-class providing support
				for reading mjpegtools' YUV4MPEG2-streams.