1. 19 Sep, 2013 1 commit
  2. 18 Sep, 2013 2 commits
  3. 17 Sep, 2013 2 commits
  4. 16 Sep, 2013 1 commit
    • Yaowu Xu's avatar
      fix a problem where an invalid mv used in search · eeae6f94
      Yaowu Xu authored
      The commit added reset of pred_mv at the beginning of each SB64x64
      partition mv search, also limited the usage of pred_mv only when
      search on the largest partition is already done. This is to fix
      a crash at speed 1/2 encoder where an invalid mv is used in mv
      search.
      
      Change-Id: I39010177da76d054e3c90b7899a44feb2e3a5b1b
      eeae6f94
  5. 13 Sep, 2013 2 commits
    • Jingning Han's avatar
      Adaptive motion search control · c4826c59
      Jingning Han authored
      This commit enables adaptive constraint on motion search range for
      smaller partitions, given the motion vectors of collocated larger
      partition as a candidate initial search point.
      
      It makes speed 0 runtime of bus at CIF and 2000 kbps goes from
      167s down to 162s (3% speed-up), at 0.01dB performance gains. In
      the settings of speed 1, this makes the runtime goes from 33687 ms
      to 32142 ms (4.5% speed-up), at 0.03dB performance gains.
      
      Compression performance wise, it gains at speed 1:
      derf  0.118%
      yt    0.237%
      hd    0.203%
      stdhd 0.438%
      
      Change-Id: Ic8b34c67810d9504a9579bef2825d3fa54b69454
      c4826c59
    • Paul Wilkins's avatar
      Fix VP9_mode_order[] · 1407cf85
      Paul Wilkins authored
      Mis-merge of the following change managed to break mode order
      and delete two mode options (new alt ref and near alt ref)
      It also created a situation where we could test two undefined
      modes off the end of the VP9_mode_order[] data structure.
        "clang warnings : remove split and i4x4_pred fake modes"
        "Change Id: I8ef3c*"
      
      Initial testing on Akiyo at speed 2.
      101.35	 44.567	 44.447 improves to
      96.82	 44.915	 44.815
      
      Approx 0.3-0.4db gain and 2.5% size reduction
      
      Change-Id: Icff813e7c0778d140ad4f0eea18cf1ed203c4e34
      1407cf85
  6. 12 Sep, 2013 1 commit
  7. 11 Sep, 2013 2 commits
  8. 10 Sep, 2013 2 commits
    • Yunqing Wang's avatar
      Modify encode breakout for static frames · 939791a1
      Yunqing Wang authored
      Thank Paul for the suggestions. While turning on static-thresh
      for static-image videos, a big jump on bitrate was seen. In this
      patch, we detected static frames in the video using first-pass
      stats. For different cases, disable encode breakout or reduce
      encode breakout threshold to limit the skipping.
      
      More modification need be done to break incorrect partition
      picking pattern for static frames while skipping happens.
      
      Change-Id: Ia25f47041af0f04e229c70a0185e12b0ffa6047f
      939791a1
    • Paul Wilkins's avatar
      Modified mode skip functionality. · 4f660cc0
      Paul Wilkins authored
      A previous speed feature skipped modes not used in earlier
      partitions but this not longer worked as intended following
      changes to the partition coding order and in conjunction
      with some other speed features (Especially speed 2 and above).
      
      This modified mode skip feature sets a mask after the first X
      modes have been tested in each partition depending on the
      reference frame of the current best case.
      
      This patch also makes some changes to the order modes are
      tested to fit better with this skip functionality.
      
      Initial testing suggests speed and rd hit count improvements
      of up to 20% at speed 1. Quality results. (derf -1.9%, std hd  +0.23%).
      
      Change-Id: Idd8efa656cbc0c28f06d09690984c1f18b1115e1
      4f660cc0
  9. 09 Sep, 2013 2 commits
    • Ivan Maltz's avatar
      API extensions and sample app for spacial scalable encoder · 01b35c3c
      Ivan Maltz authored
      Sample app: vp9_spatial_scalable_encoder
      vpx_codec_control extensions:
        VP9E_SET_SVC
        VP9E_SET_WIDTH, VP9E_SET_HEIGHT, VP9E_SET_LAYER
        VP9E_SET_MIN_Q, VP9E_SET_MAX_Q
      expanded buffer size for vp9_convolve
      
      modified setting of initial width in vp9_onyx_if.c so that layer size
      can be set prior to initial encode
      
      Default number of layers set to 3 (VPX_SS_DEFAULT_LAYERS)
      Number of layers set explicitly in vpx_codec_enc_cfg.ss_number_layers
      
      Change-Id: I2c7a6fe6d665113671337032f7ad032430ac4197
      01b35c3c
    • James Zern's avatar
      Revert "New mode_info_context storage" · 54a03e20
      James Zern authored
      This reverts commit dae17734
      
      Encode crashes, leaks and increases integer overflow errors.
      
      Change-Id: I595aa2649bb8d0b6552ff91652837a74c103fda2
      54a03e20
  10. 06 Sep, 2013 1 commit
    • Scott LaVarnway's avatar
      New mode_info_context storage · dae17734
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of a pointer to a MODE_INFO struct and
      a "in the image" flag.  The MODE_INFO structs are now stored
      as a stream, eliminating unnecessary copies and is a little
      more cache friendly.
      
      For the test clips used, the decoder performance improved
      by ~4.3% (1080p) and ~9.7% (720p).
      
      Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p)
      and 5.9% (720p).
      
      Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
      dae17734
  11. 30 Aug, 2013 1 commit
  12. 29 Aug, 2013 2 commits
    • Paul Wilkins's avatar
      Added per pixel inter rd hit count stats · 1f4bf79d
      Paul Wilkins authored
      Added some code to output normalized rd hit count stats.
      In effect this approximates to the average number of rd
      operations/tests per pixel for the sequence.
      
      The results are not quite accurate and I have not bothered
      to account for partial SB64s at frame edges and for key frames
      However they do give some idea of the number of modes /
      prediction methods being tested for each pixel across the
      different partition sizes. This indicates how much scope their
      is for further gains either by reducing the number of partitions
      examined or the modes per partition through heuristics.
      
      Patch 3 moved place where count incremented so partial rd
      tests that are aborted with INT_MAX return are also counted.
      
      Example numbers for first 50 frames of Akiyo.
      Speed 0 ~84.4 rd operations / pixel
      Speed 1 ~28.8
      Speed 2 ~11.9
      
      Change-Id: Ib956e787e12f7fa8b12d3a1a2f6cda19a65a6cb8
      1f4bf79d
    • Yaowu Xu's avatar
      Fixed potential overflows · aaa7b444
      Yaowu Xu authored
      The two arrays are typically initialized to INT64_MAX, if they are not
      filled with valid values before the addition, the values can overflow
      and lead to wrong results.
      
      Change-Id: I515de22cf3e8f55af4b74bdb2c8eb821a02d3059
      aaa7b444
  13. 28 Aug, 2013 2 commits
    • Dmitry Kovalev's avatar
      General code cleanup. · b62ddd5f
      Dmitry Kovalev authored
      Switching from mi_{width, height}_log2 and b_{width, height}_log2 to
      num_8x8_blocks_{wide, high} and num_4x4_blocks_{wide, high}. Removing
      redundant code, adding const.
      
      Change-Id: Iaab2207590fd24d0b76999071778d1395dc5cd5d
      b62ddd5f
    • Dmitry Kovalev's avatar
      Renaming txfm_size to tx_size. · 851a2fd7
      Dmitry Kovalev authored
      Change-Id: I752e374867d459960995b24d197301d65ad535e3
      851a2fd7
  14. 27 Aug, 2013 2 commits
  15. 26 Aug, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up model_rd_for_sb_y_tx. · 657ee2d7
      Dmitry Kovalev authored
      Removing references to plane_block_width and plane_block_height (we are
      going to delete the latter ones).
      
      Change-Id: I7982da4d373aebb54d2209dc8886f6192df4d287
      657ee2d7
  16. 24 Aug, 2013 2 commits
  17. 23 Aug, 2013 3 commits
    • Dmitry Kovalev's avatar
      Cleanup in mvref_common.{h, c}. · 21d8e859
      Dmitry Kovalev authored
      Making code more compact, adding consts, removing redundant arguments,
      adding do/while(0) for macros.
      
      Change-Id: Ic9ec0bc58cee0910a5450b7fb8cfbf35fa9d0d16
      21d8e859
    • Paul Wilkins's avatar
      Changes to adaptive inter rd thresholds. · aa5b67ad
      Paul Wilkins authored
      Values now carried over frame to frame.
      Change to algorithm for decreasing threshold after
      a hit and to max threshold (now based on speed)
      
      Removed some old commented out code relating to
      VP8 adaptive thresholds.
      
      The impact of these changes tested on Akiyo (50 frames)
      and measured in terms of unit rd hits is as follows:
      
      Speed 0 84.36 -> 84.67
      Speed 1 29.48 -> 22.22
      Speed 2 11.76 -> 8.21
      Speed 3 12.32 -> 7.21
      
      Encode speed impact is broadly in line with these.
      
      Change-Id: I5b886efee3077a11553fa950d796fd6d00c8cb19
      aa5b67ad
    • Paul Wilkins's avatar
      Limit Key frame Intra modes checks. · f76f52df
      Paul Wilkins authored
      Most of the focus so far has been on inter frames.
      
      At high speed settings the key frame is now taking a high %
      of the cycles.
      
      This patch puts in some masking to reduce the number
      of INTRA modes searched during key frame coding (as already
      happens for inter frames) at higher speed settings
      
      TODO: Develop this further with either adaptive rd thresholds
      when choosing which intra modes to consider or some other
      heuristic.
      
      Impact.
      At high speed settings on some clips the key frame was starting
      to dominate. In a coding of the first 50 frames of AKIYO at speed
      2 limiting the key frame intra modes to DC or TM_PRED resulted in
      ~30% overall speedup. For Bus the number was lower at ~4-5%.
      
      Change-Id: I7bde68aee04995f9d9beb13a1902143112e341e2
      f76f52df
  18. 22 Aug, 2013 1 commit
  19. 21 Aug, 2013 2 commits
  20. 20 Aug, 2013 2 commits
    • Jingning Han's avatar
      Enable zero coeff check in sub8x8 UV rd loop · 1bf14286
      Jingning Han authored
      Check the minimum rate-distortion cost of regular quantization and
      all zero coeffs cases in the sub8x8 inter prediction rd loop for
      luma components. Use this as the cumulative rdcost sent to UV rd
      estimation.
      
      Change-Id: Ia4bc7700437d5e13d7cdad4cf9ae57ab036d3e97
      1bf14286
    • Deb Mukherjee's avatar
      Cleanup/enhancements of switchable filter search · 2ffe64ad
      Deb Mukherjee authored
      Cleans up the switchable filter search logic. Also adds a
      speed feature - a variance threshold - to disable filter search
      if source variance is lower than this value.
      
      Results: derfraw300
      threshold = 16, psnr -0.238%, 4-5% speedup (tested on football)
      threshold = 32, psnr -0.381%, 8-9% speedup (tested on football)
      threshold = 64, psnr -0.611%, 12-13% speedup (tested on football)
      threshold = 96, psnr -0.804%, 16-17% speedup (tested on football)
      
      Based on these results, the threshold is chosen as 16 for speed 1,
      32 for speed 2, 64 for speed 3 and 96 for speed 4.
      
      Change-Id: Ib630d39192773b1983d3d349b97973768e170c04
      2ffe64ad
  21. 19 Aug, 2013 4 commits
    • Jingning Han's avatar
      Enable early termination in uv rd loop · 3275ad70
      Jingning Han authored
      This commit enables early termination in the rate-distortion
      optimization search loop for chroma components. When the cumulative
      rd cost is above the current best value, skip the rest per-block
      transform/quantization/coeff_cost and continue to the next
      prediction mode.
      
      For bus_cif at 2000 kbps, the average run-time goes down from
      168546ms -> 164678ms, (2% speed-up) at speed 0
       36197ms ->  34465ms, (4% speed-up) at speed 1
      
      Change-Id: I9d3043864126e62bd0166250d66b3170d520b3c0
      3275ad70
    • Dmitry Kovalev's avatar
      Passing plane_bsize to foreach_transformed_block_visitor. · 82d4d9a0
      Dmitry Kovalev authored
      Updating all foreach_transformed_block_visitor functions to work with
      plane block size instead of general block. Removing a lot of duplicated
      code.
      
      Change-Id: I6a9069e27528c611f5a648e1da0c5a5fd17f1bb4
      82d4d9a0
    • Dmitry Kovalev's avatar
      Using plane_bsize instead of bsize. · 2e3478a5
      Dmitry Kovalev authored
      This change set is intermediate. The next one will remove all repetitive
      plane_bsize calculations, because it will be passed as argument to
      foreach_transformed_block_visitor.
      
      Change-Id: Ifc12e0b330e017c6851a28746b3a5460b9bf7f0b
      2e3478a5
    • Jingning Han's avatar
      Fix potential use of uninitialized value · b34ce043
      Jingning Han authored
      Initialize the best mode and tx_size values in the rate-distortion
      optimization search loop.
      
      Change-Id: Ibfb5c0895691f172abcd4265c23aef4cb99fa8af
      b34ce043
  22. 17 Aug, 2013 1 commit
    • Jingning Han's avatar
      Fix the returned distortion value in rd_pick_intra · f67919ae
      Jingning Han authored
      Return the distortion value in vp9_rd_pick_intra_mode_sb as sum of
      dist_y and dist_uv. Remove the right shift operation on dist_uv,
      and make it consistent with that of vp9_rd_pick_inter_mode_sb.
      
      Change-Id: I9d564e242d9add38e32595d33b0e0dddb1d55e5b
      f67919ae
  23. 16 Aug, 2013 1 commit