1. 10 Oct, 2014 - 1 commit
  2. 09 Oct, 2014 - 2 commits
  3. 07 Oct, 2014 - 3 commits
    • Jim Bankoski's avatar
      experimental : partition using 1/8 x 1/8 image · 0ce51d82
      Jim Bankoski authored
      The concept:
      
      There's too much noise in source pixels for variance and at low bitrate
      the reconstructed looks nothing like the source so we have problems
      getting good partitionings with either.   This skirts the issue by using
      a box blur scaled down version for variance calculations.  To compare
      against source_var_ moved keyframe to be rd based like source_var.
      
      Change-Id: Ie3babdbfadae324b7b5a76bea192893af27f0624
      0ce51d82
    • Jingning Han's avatar
      Replace mi_width_log2() with mi_width_log2_lookup table · 7ee58985
      Jingning Han authored
      Change-Id: If0ea98aa139d14d40cd924114e18396aff36b5a5
      7ee58985
    • Jingning Han's avatar
      Take out repeated block width/height lookup functions · b66f7016
      Jingning Han authored
      The functions b_width_log2 and b_height_log2 only do direct
      table fetch. This commit unifies such use cases by using the
      table directly and removes these functions.
      
      Change-Id: I3103fc6ba959c1182886a2799d21b8b77c8a7b6b
      b66f7016
  4. 06 Oct, 2014 - 1 commit
    • Paul Wilkins's avatar
      Improve two pass VBR accuracy. · 0e1068a4
      Paul Wilkins authored
      Adjustments to the GF interval choice and minimum boost.
      Adjustment to the calculation of 2 pass worst q.
      Compared to 09/29 head there is metrics hit on derf of
      (-0.123%,-0.191%)
      
      Compared to the September 29 head and a baseline on
      September 18 baseline the accuracy of the VBR rate control
      measured on the derf set is as follows:-
      
      Mean error %  / Mean abs(error %)
      Sept 18 baseline (-7.0% / 14.76%)
      Sept 29 head (-15.7%, 19.8%)
      This check in (-1.5% / 14.4%)
      
      The mean undershoot is reduced slightly but the
      worst case overshoot on e.g. harbour/highway is
      increased. This will be addressed in a later patch.
      
      Change-Id: Iffd9b0ab7432a131c98fbaaa82d1e5b40be72b58
      0e1068a4
  5. 03 Oct, 2014 - 3 commits
    • Yaowu Xu's avatar
      Properly initialize segmentID in nonrd coding path · 0065b734
      Yaowu Xu authored
      This commit adds proper initialization of segment id for variance AQ
      mode in non-rd coding path. It fixes the enc/dec mismatch issue of
      rt=7 with --aq-mode=1, as reported in issue #816
      
      Change-Id: I02fa41b96345bf2e66077d5ea553f85ba800f7bb
      0065b734
    • Jingning Han's avatar
      Fix indent in encode_rd_sb_row · ef622333
      Jingning Han authored
      Change-Id: Icbcfe7b56d88474f4398b4c5b52f6719d551ab4a
      ef622333
    • Jingning Han's avatar
      Rework partition search skip scheme · bb260d90
      Jingning Han authored
      This commit enables the encoder to skip split partition search if
      the bigger block size has all non-zero quantized coefficients in low
      frequency area and the total rate cost is below a certain threshold.
      It logarithmatically scales the rate threshold according to the
      current block size. For speed 3, the compression performance loss:
      derf  -0.093%
      stdhd -0.066%
      
      Local experiments show 4% - 20% encoding speed-up for speed 3.
      blue_sky_1080p, 1500 kbps
      51051 b/f, 35.891 dB, 67236 ms ->
      50554 b/f, 35.857 dB, 59270 ms (12% speed-up)
      
      old_town_cross_720p, 1500 kbps
      14431 b/f, 36.249 dB, 57687 ms ->
      14108 b/f, 36.172 dB, 46586 ms (19% speed-up)
      
      pedestrian_area_1080p, 1500 kbps
      50812 b/f, 40.124 dB, 100439 ms ->
      50755 b/f, 40.118 dB,  96549 ms (4% speed-up)
      
      mobile_calendar_720p, 1000 kbps
      10352 b/f, 35.055 dB, 51837 ms ->
      10172 b/f, 35.003 dB, 44076 ms (15% speed-up)
      
      Change-Id: I412e34db49060775b3b89ba1738522317c3239c8
      bb260d90
  6. 26 Sep, 2014 - 1 commit
    • Yunqing Wang's avatar
      Skip the partition search for still frames · 1fcbf6ed
      Yunqing Wang authored
      This patch re-enabled the feature in Pengchong's patch
      (commit 12861260). Originally, it
      was turned on while use_lastframe_partitioning > 0(not used anymore).
      Now it was added as a feature, and turned on while speed >= 2.
      As described in the original patch, this feature helps speed up the
      slideshows in YouTube.
      
      Change-Id: I1b0f18d65da1ee1c8d1e117dabba910c5207c471
      1fcbf6ed
  7. 25 Sep, 2014 - 1 commit
  8. 24 Sep, 2014 - 1 commit
    • Yunqing Wang's avatar
      Refactor encode_rd_sb_row function · 14ee2805
      Yunqing Wang authored
      Simplified the code and removed some code that was not used anymore.
      This patch didn't change encoding result.
      
      Change-Id: I7e54a74c8f35a6726dfc8a1c55b337448b7ea124
      14ee2805
  9. 20 Sep, 2014 - 1 commit
    • hkuang's avatar
      Remove mi_grid_* structures. · c70cea97
      hkuang authored
      mi_grid_* are arrays of pointer to pointer. They save the pointers that point
      to the MIs in cm->mi. But they are unnecessary and complicated. The original
      goal was to remove MODE_INFO_t copy. But with an extra MODE_INFO_t pointer
      inside MODE_INFO_t, same goal could be achieved.
      
      This commit totally removes the mi_grid_* structures. But there are still
      many dummy MODE_INFO_t inside cm->mi which are a waste of memory. Next commit
      will do on-demand MODE_INFO_t allocation in order to save these memories.
      
      Change-Id: I3a05cf1610679fed26e0b2eadd315a9ae91afdd6
      c70cea97
  10. 12 Sep, 2014 - 1 commit
  11. 09 Sep, 2014 - 1 commit
    • Yunqing Wang's avatar
      Remove the use of use_lastframe_partitioning at speed 4 · f10d7eed
      Yunqing Wang authored
      The use of use_lastframe_partitioning is totally removed in good-
      quality encoding. Its usage in real-time encoding needs to be
      evaluated to see if it can be removed too.
      
      The Borg tests at speed 4 showed:
      stdhd set: 0.220% psnr gain, 0.166% ssim gain;
      derf set:  0.329% psnr gain, 0.476% ssim gain.
      
      Speed test on selected clips showed 1.54% speedup.(Worst case:
      pedestrian_area_1080p25.y4m, speed loss: 1.5%)
      
      Change-Id: I1c844d329b0b5678558439b887297c1be7ddab00
      f10d7eed
  12. 03 Sep, 2014 - 1 commit
    • Yaowu Xu's avatar
      select_tx_mode(): remove special case for key frame · c1058e5b
      Yaowu Xu authored
      This commit removes the special case for key frame, as transform size
      decision is controlled by the appropriate speed feature for all lossy
      coding modes: tx_size_search_method.
      
      Change-Id: I9677171e3f2432ec23705f7c5ea8170dd4562fae
      c1058e5b
  13. 28 Aug, 2014 - 1 commit
    • Yunqing Wang's avatar
      Early termination in encoding partition search · 4d2c3769
      Yunqing Wang authored
      In the partition search, the encoder checks all possible
      partitionings in the superblock's partition search tree.
      This patch proposed a set of criteria for partition search
      early termination, which effectively decided whether or
      not to terminate the search in current branch based on the
      "skippable" result of the quantized transform coefficients.
      The "skippable" information was gathered during the
      partition mode search, and no overhead calculations were
      introduced.
      
      This patch gives significant encoding speed gains without
      sacrificing the quality.
      
      Borg test results:
      1. At speed 1,
         stdhd set: psnr: +0.074%, ssim: +0.093%;
         derf set:  psnr: -0.024%, ssim: +0.011%;
      2. At speed 2,
         stdhd set: psnr: +0.033%, ssim: +0.100%;
         derf set:  psnr: -0.062%, ssim: +0.003%;
      3. At speed 3,
         stdhd set: psnr: +0.060%, ssim: +0.190%;
         derf set:  psnr: -0.064%, ssim: -0.002%;
      4. At speed 4,
         stdhd set: psnr: +0.070%, ssim: +0.143%;
         derf set:  psnr: -0.104%, ssim: +0.039%;
      
      The speedup ranges from several percent to 60+%.
                       speed1    speed2    speed3    speed4
      (1080p, 100f):
      old_town_cross:  48.2%     23.9%     20.8%     16.5%
      park_joy:        11.4%     17.8%     29.4%     18.2%
      pedestrian_area: 10.7%      4.0%      4.2%      2.4%
      (720p, 200f):
      mobcal:          68.1%     36.3%     34.4%     17.7%
      parkrun:         15.8%     24.2%     37.1%     16.8%
      shields:         45.1%     32.8%     30.1%      9.6%
      (cif, 300f)
      bus:              3.7%     10.4%     14.0%      7.9%
      deadline:        13.6%     14.8%     12.6%     10.9%
      mobile:           5.3%     11.5%     14.7%     10.7%
      
      Change-Id: I246c38fb952ad762ce5e365711235b605f470a66
      4d2c3769
  14. 25 Aug, 2014 - 2 commits
  15. 15 Aug, 2014 - 2 commits
    • Pengchong Jin's avatar
      Add a speed feature to give the tighter search range · eca93642
      Pengchong Jin authored
      Add a speed feature to give the tighter partition search
      range. Before partition search, calculate the histogram
      of the partition sizes of the left, above and previous
      co-located blocks of the current block. If the variance of
      observed partition sizes is small enough, adjust the search
      range around the mean partition size, which will be tigher.
      
      The feature is currently turned on at speed 2. Experiments on
      sample youtube clips show on average the runtime is reduced
      by 3-7%.
      
      For hard stdhd clips:
      park_joy_1080p @ 15000kbps:       509251 ms -> 491953 ms (3.3%)
      pedestrian_area_1080p @ 2000kbps: 223941 ms -> 214226 ms (4.3%)
      
      The PSNR performance is changed:
      derf: -0.112%
      yt:   -0.099%
      hd:   -0.090%
      stdhd:-0.102%
      
      Change-Id: Ie205ec5325bf92ec5676c243e30ba9d0adca10f2
      eca93642
    • Yunqing Wang's avatar
      Remove a unused speed feature · 28b1437d
      Yunqing Wang authored
      Removed disable_split_var_thresh, which is not used anymore.
      
      Change-Id: I50119b150442e1571157433b5effc6aae0dbe0fd
      28b1437d
  16. 14 Aug, 2014 - 2 commits
  17. 13 Aug, 2014 - 1 commit
    • Yaowu Xu's avatar
      Simplify select_tx_mode() · b6a41802
      Yaowu Xu authored
      The function is called only once, right after all stats counters are
      reset to 0. Therefore all the computations have zero effect on return
      values. This commmit to removed those effectless code.
      
      Change-Id: I50d27c0802547921fa36c60aa4bd92d76247f595
      b6a41802
  18. 08 Aug, 2014 - 1 commit
    • Dmitry Kovalev's avatar
      Moving pass from VP9_COMP to VP9EncoderConfig. · 91c2f1e4
      Dmitry Kovalev authored
      We had a very complicated way to initialize cpi->pass from
      cfg->g_pass:
      switch (cfg->g_pass) {
        case VPX_RC_ONE_PASS:
          oxcf->mode = ONE_PASS_GOOD;
          break;
        case VPX_RC_FIRST_PASS:
          oxcf->mode = TWO_PASS_FIRST;
          break;
        case VPX_RC_LAST_PASS:
          oxcf->mode = TWO_PASS_SECOND_BEST;
          break;
      }
      
      cpi->pass = get_pass(oxcf->mode).
      
      Now pass is moved to VP9EncoderConfig and initialization is simple:
      switch (cfg->g_pass) {
        case VPX_RC_ONE_PASS:
          oxcf->pass = 0;
          break;
        case VPX_RC_FIRST_PASS:
          oxcf->pass = 1;
          break;
        case VPX_RC_LAST_PASS:
          oxcf->pass = 2;
          break;
      }
      
      Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
      91c2f1e4
  19. 07 Aug, 2014 - 3 commits
  20. 06 Aug, 2014 - 1 commit
    • Jingning Han's avatar
      Integrate fast txfm and quant path into skip_recode system · 8684c232
      Jingning Han authored
      This commit integrates the fast transform and quantization process
      into skip_recode scheme in the rate-distortion optimization loop.
      Previously the fast transform and quantization process was only
      enabled for non-RD coding flow.
      
      Change-Id: Ib7db4d39b7033f1495c75897271f769799198ba8
      8684c232
  21. 05 Aug, 2014 - 2 commits
    • Pengchong Jin's avatar
      Directly split the block in partition search · 74593c1e
      Pengchong Jin authored
      This patch allows the encoder to directly split the block
      in partition search, therefore skip searching NONE. It
      computes a score which measures whether 16x16 motion vectors
      from the first pass in the current block are consistent with
      each others. If they are inconsistent and we have enough Q
      to encode, split the block directly, and skip searching NONE.
      
      This feature is under flag CONFIG_FP_MB_STATS. In speed 2,
      it further gives a speedup of 3-8% on sample yt clips as
      compared to the previous version under the same flag. Overall,
      the features under the flag will give 7-15% on typical yt
      clips at up to 6000kbps data rate. The speedup at very high
      data rate is not significant.
      
      For hard stdhd clips:
      park_joy_1080p @ 15000kbps:       504541ms -> 506293ms (-0.35%)
      pedestrian_area_1080p @ 2000kbps: 326610ms -> 290090ms (+11.2%)
      
      The compression performance using the features under the flag:
      derf: -0.068%
      yt:   -0.189%
      hd:   -0.318%
      stdhd:-0.183%
      
      To use the feature, set CONFIG_FP_MB_STATS and turn on
      cpi->use_fp_mb_stats.
      
      Change-Id: Iad58a2966515c8861aa9eb211565b1864048d47f
      74593c1e
    • Jingning Han's avatar
      Extend skip_txfm flag into array to cover YUV planes · 1a8d45f3
      Jingning Han authored
      Change-Id: Ieae182d72d625d0d3fd4ed7c7d24cb521a0f21b0
      1a8d45f3
  22. 04 Aug, 2014 - 2 commits
  23. 31 Jul, 2014 - 1 commit
  24. 30 Jul, 2014 - 3 commits
    • Pengchong Jin's avatar
      Early termination after partition NONE is done in RD. · 49866baa
      Pengchong Jin authored
      This patch allows the encoder to skip the search for partition
      SPLIT, HORZ, VERT after the search for partition NONE is done
      in RD optimization. It uses the first pass block-wise statistics
      to make the decision. If all 16x16 blocks in the current partition
      have zero motions and small residues from the frist pass statistics,
      and it has small difference variance, further partition search is
      skipped.
      
      For speed 2 setting, experiments on general youtube clips show that
      the speedup varies from 1% - 10%, 5% on average. On the performance
      side in PSNR, derf 0.004%, yt -0.059%, hd -0.106%, stdhd 0.032%.
      
      For hard stdhd clips:
      park_joy_1080p, 502952 ms -> 503307 ms (-0.07%)
      pedestrian_area_1080p, 227049 ms -> 220531 ms (+3%)
      
      This feature is under the compilation flag CONFIG_FP_MB_STATS and
      it is off in current setting.
      
      Change-Id: I554537e9242178263b65ebe14a04f9c221b58bae
      49866baa
    • Jingning Han's avatar
      Refactor rd_pick_parition interface · d82ff942
      Jingning Han authored
      Remove the variable that indicates the relative block index. This
      is explicitly covered by the use of pc_tree.
      
      Change-Id: Ib13142582fff926c85e375bde656aa050add8350
      d82ff942
    • Jingning Han's avatar
      Chessboard pattern partition search · ca2dcb7f
      Jingning Han authored
      This commit enables a chessboard pattern constrained partition
      search for 720p and above resolutions. The scheme applies stricter
      partition search to alternative blocks based on its above/left
      neighboring blocks' partition range, as well as that of the
      collocated blocks in the previous frame. It is currently turned
      on at 16x16 block size level. The chessboard pattern is flipped
      per coding frame.
      
      The speed 3 runtime is reduced:
      park_joy_1080p, 652832 ms -> 607738 ms (7% speed-up)
      pedestrian_area_1080p, 215998 ms -> 200589 ms (8% speed-up)
      
      The compression performance is changed:
      hd     -0.223%
      stdhd  -0.295%
      
      Change-Id: I2d4d123ae89f7171562f618febb4d81789575b19
      ca2dcb7f
  25. 29 Jul, 2014 - 2 commits