[MEncoder-users] on psy_rd

Grozdan microchip at telenet.be
Thu Sep 17 17:04:28 CEST 2009


2009/9/17 Matyas <mplayer.list at sustik.com>:
> Grozdan wrote:
>> 2009/9/17 Matyas <mplayer.list at sustik.com>:
>>> Hi,
>>>
>>> Could someone in the know compare and comment on the two runs bellow.  It
>>> would hopefully help me understand the usage/benefit of various psy_rd values.
>>
>> psy-rd lowers PSNR and SSIM while subjectively increases quality so
>> you shouldn't trust these metrics too much while using psychovisual
>> options like adaptive quantization and psy-rd. I don't really know
>> what you want us to comment about. I always use psy-rd of 0.8:0.2 and
>> all looks good to me. Also you should use b-adapt=2 and lower bframes
>> to something like 4 or 5
>
> Thank you for the recommendation about b_adapt and bframes, I will play with
> them.
>
> I was not looking at the global PSNR/SSIM numbers with that much interest,
> but rather the bitrate.  I just recently switched all my encodes to use crf
> from two-pass and so this is the first time I saw how psy_rd affects bitrate
> with crf.

of course psy-rd will have an effect on the bitrate. What do you
expect? This is how psy-rd works and I quote its author

"the human eye doesn't just want the image to look similar to the
original, it wants the image to have similar complexity. Therefore, we
would rather see a somewhat distorted but still detailed block than a
non-distorted but completely blurred block. The result is a bias
towards a detailed and/or grainy output image, a bit like xvid except
that its actual detail rather than ugly blocking."

for more detailed workings, you have to read its code comments.

>
> (Really just in parenthesis why I switched: I run several samples - from
> movies and OTA HD recordings - with various crf values - in the range of
> 20-24 - and then reencoded the same with two-pass using the bitrates these
> encodings produced.  I used log=3 and turned off psy_rd (as recommended here)
> and plotted the resulting SSIM values.  I found that crf produced almost the
> same results in almost half the time.  In fact, surprisingly the deviation
> for per frame SSIM was slightly lower for crf more often.)

CRF in most cases will be virtually indistinguishable from a 2-pass
encode and that's why most people prefer to use CRF than 2-pass, which
also gives them advantage in saving time. I personally, for SD
encodes, always use 20 but am thinking to switch to 19, now that
macroblock tree (MB tree) is part of x264 since it "somewhat"
redefines CRF values yet again

>
> So once I settled on crf encodings I started to run some experiments to see
> what crf values make sense (look good) for my various types of sources.
>
> I accidentally noticed that psy_rd has a substantial effect on bitrate (with
> same crf).
>
> I did one subsequent run which uses crf=21.65 psy_rd=0.0:0.0.  This produced
> a 461kb/s video file.  I compared the per frame SSIM values to the run from
> crf=22 psy_rd=0.0:0.2.  (Recall that was 466kb/s.)  My reasoning is that with
> (almost) the same bitrate, the difference is in where bits are allocated.  I
> looked at the frames where the two encodings had the largest difference
> (either way) in SSIM and looked at those frames.  Considering that psy_rd
> aims to improve perceptual quality and not SSIM I also compared the frames
> themselves (so my intention was to use the SSIM values only to find the
> outliers.)  The frames looked the same (also compared to the source).  Maybe
> with lower crf settings I could see difference.  The crf=21.65 run had the
> max SSIM advantage at the first frame after a cut.

Here you're not really using Psy-RD but Psy-Trellis (the second
parameters controls psy-trellis while first one controls psy-rd and
you disabled it completely). Since psy-trellis is still considered
sub-optimal/somewhat experimental in nature, it can produce unexpected
results sometimes and very low values are recommend as with higher
ones, it tends to produce ringing and/or mosquito noise

>
> Here is the log info around frames 17712 and 24701, the outliers:
>
> crf=22:psy_rd=0.0:0.2 run:
> x264 [debug]: frame=17710 QP=25.47 NAL=2 Slice:P Poc:52  I:59   P:909  SKIP:0
>  size=20619 bytes PSNR Y:39.91 U:38.82 V:40.24 SSIM Y:0.98659
> x264 [debug]: frame=17711 QP=28.22 NAL=0 Slice:B Poc:50  I:18   P:800  SKIP:2
>  size=16542 bytes PSNR Y:37.62 U:36.31 V:37.56 SSIM Y:0.97775
> x264 [debug]: frame=17712 QP=25.33 NAL=2 Slice:P Poc:56  I:60   P:908  SKIP:0
>   size=23261 bytes PSNR Y:39.44 U:38.70 V:40.07 SSIM Y:0.98483
> x264 [debug]: frame=17713 QP=27.51 NAL=0 Slice:B Poc:54  I:9    P:727  SKIP:3
>   size=17356 bytes PSNR Y:38.09 U:36.77 V:38.09 SSIM Y:0.97984
> x264 [debug]: frame=17714 QP=25.13 NAL=2 Slice:P Poc:60  I:58   P:909  SKIP:1
>   size=21740 bytes PSNR Y:39.29 U:38.73 V:40.26 SSIM Y:0.98454
> [...]
> x264 [debug]: frame=24699 QP=24.12 NAL=0 Slice:B Poc:260 I:3    P:230  SKIP:732
>  size=676 bytes PSNR Y:40.95 U:41.43 V:44.73 SSIM Y:0.98223
> x264 [debug]: frame=24700 QP=20.72 NAL=3 Slice:I Poc:0   I:968  P:0    SKIP:0
>  size=19495 bytes PSNR Y:43.65 U:42.65 V:45.25 SSIM Y:0.96706
> x264 [debug]: frame=24701 QP=22.41 NAL=2 Slice:P Poc:2   I:352  P:507
> SKIP:109  size=3759 bytes PSNR Y:45.82 U:42.83 V:46.19 SSIM Y:0.98341
> x264 [debug]: frame=24702 QP=21.81 NAL=2 Slice:P Poc:6   I:163  P:741
> SKIP:64   size=3641 bytes PSNR Y:46.15 U:43.00 V:46.27 SSIM Y:0.98495
> x264 [debug]: frame=24703 QP=24.50 NAL=0 Slice:B Poc:4   I:0    P:221
> SKIP:746  size=523 bytes PSNR Y:45.37 U:41.95 V:45.89 SSIM Y:0.98469
>
> crf=21.65:psy_rd=0.0:0.0 run:
> x264 [debug]: frame=17710 QP=25.13 NAL=2 Slice:P Poc:52  I:68   P:899  SKIP:1
>  size=20396 bytes PSNR Y:40.06 U:38.35 V:39.83 SSIM Y:0.98686
> x264 [debug]: frame=17711 QP=27.21 NAL=0 Slice:B Poc:50  I:15   P:776  SKIP:0
>  size=17869 bytes PSNR Y:38.29 U:36.34 V:37.50 SSIM Y:0.98043
> x264 [debug]: frame=17712 QP=24.94 NAL=2 Slice:P Poc:56  I:70   P:897  SKIP:1
>   size=23219 bytes PSNR Y:39.74 U:38.39 V:39.70 SSIM Y:0.98558
> x264 [debug]: frame=17713 QP=27.26 NAL=0 Slice:B Poc:54  I:11   P:726  SKIP:3
>   size=16564 bytes PSNR Y:38.23 U:36.14 V:37.46 SSIM Y:0.98041
> x264 [debug]: frame=17714 QP=24.84 NAL=2 Slice:P Poc:60  I:52   P:916  SKIP:0
>   size=21051 bytes PSNR Y:39.44 U:38.22 V:39.75 SSIM Y:0.98487
> [...]
> x264 [debug]: frame=24699 QP=23.83 NAL=0 Slice:B Poc:260 I:2    P:232  SKIP:732
>  size=688 bytes PSNR Y:41.04 U:41.22 V:44.48 SSIM Y:0.98252
> x264 [debug]: frame=24700 QP=20.52 NAL=3 Slice:I Poc:0   I:968  P:0    SKIP:0
>  size=15785 bytes PSNR Y:43.34 U:42.13 V:44.98 SSIM Y:0.96354
> x264 [debug]: frame=24701 QP=22.00 NAL=2 Slice:P Poc:2   I:302  P:539
> SKIP:127  size=3279 bytes PSNR Y:46.02 U:42.54 V:45.96 SSIM Y:0.98393
> x264 [debug]: frame=24702 QP=21.53 NAL=2 Slice:P Poc:6   I:143  P:742
> SKIP:83   size=3374 bytes PSNR Y:46.33 U:42.76 V:46.10 SSIM Y:0.98538
> x264 [debug]: frame=24703 QP=23.74 NAL=0 Slice:B Poc:4   I:1    P:209
> SKIP:754  size=521 bytes PSNR Y:45.65 U:41.88 V:45.75 SSIM Y:0.98532
>
> Note, this is not a question about psy_rd really improving quality, it is
> about the effect on bitrate.   I expected that when using a crf setting I
> would see smaller bitrate but the same quality as I use higher settings for
> options affecting quality.  Maybe this is where I am wrong.  I certainly saw
> that with subq though.  The same crf value encode produced lower bitrates
> with higher subq values.  (I did not yet get to compare the per frame SSIM
> for that.)

Of course it'll affect bitrate, since it allocates more or less when
needed. You can't really compare that easily bitrate of encodes *with*
psy optimizations and *without* them and it'll be a somewhat unfair
comparison too . Higher subq will also lower bitrate since more rate
distortion optimization is done (more precision = better findings =
less bitrate needed to encode). If you want to compensate for that,
then use a lower CRF or up the bitrate a bit

>
> Thanks to all for their attention.
> Matyas
> -
> Every hardware eventually breaks.  Every software eventually works.
> _______________________________________________
> MEncoder-users mailing list
> MEncoder-users at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/mencoder-users
>
>


More information about the MEncoder-users mailing list