Skip to content
  • Guillaume Martres's avatar
    Remove rd_variance_adjustment · b6425127
    Guillaume Martres authored and Guillaume Martres's avatar Guillaume Martres committed
    This function is called after `super_block_yrd` and assumes that the dst
    buffer is correct but that is no longer always the case after
    daf841b4 since we don't call
    `txfm_rd_in_plane` after the RDO loop in `choose_tx_size_from_rd`.
    We could fix this by always saving and restoring the dst buffer but
    removing `rd_variance_adjustment` is a better solution:
    - Getting the dst buffer always right is tricky as demonstrated by the
      fact that it is wrong now, even if we fix it now we could break it later
      and not notice
    - Perceptual weighting is a good idea but `rd_variance_adjustment` is the
      wrong approach as it weights both the rate and the distortion:
      to get meaningful units you should only weight the distortion,
      weighting rate means that we pretend some bits cost less than other
      bits, this is not the case. The distortion weighting approach is
      implemented by Daala in `od_compute_dist` and we plan to experiment
      with this in AV1 too.
    - Removing `rd_variance_adjustment` improves coding efficiency on all
      metrics, here are the results for objective-1-fast using the Low
      Latency settings:
    
          PSNR Y:     -0.14%
         PSNRHVS:     -0.17%
            SSIM:     -0.12%
          MSSSIM:     -0.12%
       CIEDE2000:     -0.07%
    
    Change-Id: I74b26b568ee65f56521646b8f30dd53bcd29fce3
    b6425127