[FFmpeg-devel] [PATCH] Binary identicity for ffvc1 (was Re: [PATCH] VC-1 MMX DSP functions)

Christophe GISQUET christophe.gisquet
Wed Jul 18 20:51:00 CEST 2007

Christophe GISQUET a ?crit :
> Hello,
> Pascal Massimino a ?crit :
>>   Hi everybody,
>>  may i recall some remarks about compliance of the code you're presently
>> optimizing?
>> http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-November/019051.html
> Indeed, I tested with wmv dll decoder and the output (whether using
> plain C or MMX) is different. Running tiny_psnr (not perfectly adapted
> but...) on the reference (dll codec) and ffvc1 outputs, I got a standard
> deviation of 0.5 and a PSNR of ~54dB.
> And applying what you describe as the actual filtering process does
> indeed fix the problem: for one file, output is binary identical to dll
> codec output.
> You'll find a patch against vc1dsp.c attached. That also means of course
> I have to redo some of the MMX code.
> Thanks for reminding us again, Pascal!
> Best regards,

Could someone verify that the C code does decode a wmv video stream to a
binary identical version of the dll codec output? Maybe VC-1 and WMV9
have different ways of doing the MC interpolation?

On a side note, should I have started a new thread? I consider the whole
stuff very related, so I saw no need to do so.

One way to test this is (people may come up with much easier solutions):
- for the dll codec output:
mplayer <stream>.wmv -fps 24 -nosound -benchmark -vo yuv4mpeg:file=i.y4m
ffmpeg -i i.y4m -f rawvideo -y ref.yuv && rm i.y4m
- for ffmpeg output
./ffmpeg -i Robotica_720.wmv -an -f rawvideo out.yuv

The streams may be of different length, but we still easily compare most
of it by running:
cmp out.yuv ref.yuv

If cmp returns EOF on either file without complaining about some byte
being different, then I believe this is a good evidence that ffvc1
output is binary identical to the dll codec.

Best regards,
Christophe GISQUET

More information about the ffmpeg-devel mailing list