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

Kostya kostya.shishkov
Thu Jul 19 19:18:44 CEST 2007


On Wed, Jul 18, 2007 at 08:51:00PM +0200, Christophe GISQUET wrote:
> 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.

I was not able to verify this but I believe your patch is correct.
Applied.
 
> Best regards,
> -- 
> Christophe GISQUET




More information about the ffmpeg-devel mailing list