[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec motion_est.c,1.115,1.116

Corey Hickey bugfood-ml
Mon Jan 23 20:29:20 CET 2006


Michael Niedermayer wrote:
>>>>I don't know how universally applicable these tests are, but if 16 was
>>>>default before and 1 is default now, adjusting to somewhere toward the
>>>>middle is probably a safe change. I've attached patches for ffmpeg and
>>>>mplayer, if anyone else wants to test this. If the patches should be
>>>>applied, I'll make a patch for the mplayer man page. Otherwise, 6 could
>>>>just be hardcoded.
>>>>
>>>>
>>>>I haven't tried sc_threshold yet. My understanding is that using
>>>
>>>
>>>can you achive the same improvement with sc_threshold? if yes the patch
>>>is rejected, if no the patch is ok and can be applied
>>
>>Well, that took a really long time, mostly because I didn't have any
>>idea what values to start with. I have failed to achieve the same
>>quality improvement with sc_threshold. Here are the PSNR results:
>>
>>sc_threshold=0:         PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-10:       PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-20:       PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-30:       PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-100:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-200:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-300:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-400:      PSNR: Y:42.06, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-500:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-600:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.93
>>sc_threshold=-700:      PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-800:      PSNR: Y:42.06, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-900:      PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.94
>>sc_threshold=-1000:     PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.94
>>sc_threshold=-1100:     PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-1200:     PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.94
>>sc_threshold=-1300:     PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-1400:     PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-1500:     PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.94
>>sc_threshold=-2000:     PSNR: Y:42.06, Cb:45.17, Cr:45.86, All:42.94
>>sc_threshold=-2500:     PSNR: Y:42.07, Cb:45.17, Cr:45.87, All:42.95
>>sc_threshold=-3000:     PSNR: Y:42.08, Cb:45.18, Cr:45.89, All:42.96
>>sc_threshold=-3500:     PSNR: Y:42.08, Cb:45.18, Cr:45.88, All:42.95
>>sc_threshold=-4000:     PSNR: Y:42.08, Cb:45.18, Cr:45.88, All:42.96
>>sc_threshold=-4500:     PSNR: Y:42.08, Cb:45.18, Cr:45.89, All:42.96
>>sc_threshold=-5000:     PSNR: Y:42.08, Cb:45.18, Cr:45.88, All:42.95
>>sc_threshold=-5500:     PSNR: Y:42.08, Cb:45.18, Cr:45.88, All:42.96
>>sc_threshold=-6000:     PSNR: Y:42.08, Cb:45.18, Cr:45.88, All:42.96
>>sc_threshold=-7000:     PSNR: Y:42.09, Cb:45.18, Cr:45.87, All:42.96
>>sc_threshold=-8000:     PSNR: Y:42.09, Cb:45.18, Cr:45.87, All:42.96
>>sc_threshold=-9000:     PSNR: Y:42.09, Cb:45.18, Cr:45.88, All:42.96
>>sc_threshold=-10000:    PSNR: Y:42.09, Cb:45.18, Cr:45.87, All:42.96
>>
>>Or, if you prefer, a graph is attached.
>>
>>
>>As you can see, the PSNR hits a plateau at around sc_threshold=-3000, so
>>I don't think testing lower values would yield any better PSNR. As far
> 
> 
> maybe try -20000, -40000 and -80000 too just to be sure

Append to the list above:
sc_threshold=-12000:    PSNR: Y:42.08, Cb:45.17, Cr:45.86, All:42.95
sc_threshold=-14000:    PSNR: Y:42.07, Cb:45.16, Cr:45.85, All:42.95
sc_threshold=-16000:    PSNR: Y:42.07, Cb:45.16, Cr:45.85, All:42.94
sc_threshold=-18000:    PSNR: Y:42.06, Cb:45.15, Cr:45.82, All:42.93
sc_threshold=-20000:    PSNR: Y:42.05, Cb:45.14, Cr:45.81, All:42.92
sc_threshold=-40000:    PSNR: Y:41.57, Cb:44.82, Cr:45.39, All:42.46
sc_threshold=-80000:    PSNR: Y:39.07, Cb:43.38, Cr:43.62, All:40.11

It looks like last time I stopped testing right before the PSNR
decreases. The encodes made at sc_threshold=-14000 and below actually
end up with more I-frames than sc_factor=6 -- but they don't look as
good. Also, PSNR-wise, sc_factor=6 does better than any sc_threshold
value I found:

sc_factor=6: PSNR: Y:42.10, Cb:45.17, Cr:45.87, All:42.97

-Corey





More information about the ffmpeg-cvslog mailing list