1. 09 Jun, 2011 - 1 commit
  2. 08 Jun, 2011 - 15 commits
  3. 07 Jun, 2011 - 9 commits
  4. 06 Jun, 2011 - 7 commits
  5. 03 Jun, 2011 - 4 commits
    • John Koleszar's avatar
      Reduce overshoot in 1 pass rate control · 212f6183
      John Koleszar authored
      This patch attempts to reduce the peak bitrate hit by the encoder
      when using small buffer windows.
      
      Tested on the CIF set over 200-500kbps using these settings:
      
        --buf-sz=500 --buf-initial-sz=250 --buf-optimal-sz=250 \
        --undershoot-pct=100
      
      Two pass encodes were tested at best quality. One pass encodes were
      tested only at realtime speed 4:
      
        --rt --cpu-used=-4
      
      The peak datarate (over the specified 500ms window) was measured
      for each encode, and averaged together to get metric for
      "average peak," computed as SUM(peak)/SUM(target). This patch
      reduces the average peak datarate as follows:
      
        One pass:
          baseline:   1.29715
          this patch: 1.23664
      
        Two pass:
          baseline:   1.32702
          this patch: 1.37824
      
      This change had a positive effect on our quality metrics as well:
      
        One pass CBR:
                          Min  / Mean / Max (pct)
          Average PSNR    -0.42 / 2.86 / 27.32
          Overall PSNR    -0.90 / 2.00 / 17.27
          SSIM            -0.05 / 3.95 / 37.46
      
        Two pass CBR:
                          Min  / Mean / Max (pct)
          Average PSNR    -4.47 / 4.35 / 35.99
          Overall PSNR    -3.40 / 4.18 / 36.46
          SSIM            -4.56 / 6.98 / 53.67
      
        One pass VBR:
                          Min  / Mean / Max (pct)
          Average PSNR    -5.21 /  0.01 / 3.30
          Overall PSNR    -8.10 / -0.38 / 1.21
          SSIM            -7.38 / -0.11 / 3.17
          (note: most values here were close to the mean, there were a few
           outliers on files that were very sensitive to golden frame size)
      
        Two pass VBR:
                          Min  / Mean / Max (pct)
          Average PSNR    0.00 / 0.00 / 0.00
          Overall PSNR    0.00 / 0.00 / 0.00
          SSIM            0.00 / 0.00 / 0.00
      
      Neither one pass or two pass CBR mode adheres particularly strictly
      to the short term buffer constraints, and two pass is less
      consistent, even in the baseline commit. This should be addressed
      in a later commit. This likely will hurt the quality numbers, as it
      will have to reduce the burstiness of golden frames.
      
      Aside: My work on this commit makes it clear that we need to make
      rate control modes "pluggable", where you can easily write a new
      one or work on one in isolation.
      
      Change-Id: I1ea9a48f2beedd59891f1288aabf7064956b4716
      212f6183
    • Scott LaVarnway's avatar
      Removed unnecessary bmi motion vector stores. · f1d6cc79
      Scott LaVarnway authored
      left_block_mv and above_block_mv will return the MB
      motion vector for non SPLITMV macro blocks.
      
      Change-Id: I58dbd7833b4fdcd44b6b72e98ec732c93c2ce4f4
      f1d6cc79
    • Scott LaVarnway's avatar
      Merge "Removed B_MODE_INFO" · 8c5b73de
      Scott LaVarnway authored
      8c5b73de
    • Yunqing Wang's avatar
      Adjust bounds checking for hex search in real-time mode · e5c236c2
      Yunqing Wang authored
      Currently, hex search couldn't guarantee the motion vector(MV)
      found is within the limit of maximum MV. Therefore, very large
      motion vectors resulted from big motion in the video could cause
      encoding artifacts. This change adjusted hex search bounds
      checking to make sure the resulted motion vector won't go out
      of the range. James Berry, thank you for finding the bug.
      
      Change-Id: If2c55edd9019e72444ad9b4b8688969eef610c55
      e5c236c2
  6. 02 Jun, 2011 - 3 commits
  7. 01 Jun, 2011 - 1 commit
    • Yaowu Xu's avatar
      further clean up of errorperbit and sadperbit · 5b2fb329
      Yaowu Xu authored
      this commit makes the usage errorperbit and sadperbit consistent for
      encoding modes and passes. Removed all different magic weight factors
      associated with errorperbit. Now 1/2 is used for both sadperbit16 and
      sadperbit4, the /2 operation is merged into initializations of the 2
      variables.
      
      Tests on cif set show .23%, 0.18% and 0.19% gain by avg psnr, overall
      psnr and ssim respectively.
      
      Change-Id: Ifa285c3e065ce0a5a77addfc9f95aabf54ee270d
      5b2fb329