1. 12 Mar, 2015 1 commit
  2. 11 Mar, 2015 2 commits
    • Jingning Han's avatar
      Prevent integer overflow in choose_partitioning · 238b6be2
      Jingning Han authored
      Re-arrange the multiplication and right shift operations to avoid
      integer overflow in choose_partitioning.
      
      Change-Id: Ib4005cafb410a67c1960486471d75b6ebe38c4e0
      238b6be2
    • Jingning Han's avatar
      Refactor to remove GLOBAL_MOTION · 1ca4d51b
      Jingning Han authored
      Make the vp9_int_pro_motion_estimation() function return zero
      motion vector if high bit depth is turned on, instead of removing
      it from compiled codes.
      
      Change-Id: Ia48f010eb590b2d517d5678c394110b326a1a95e
      1ca4d51b
  3. 10 Mar, 2015 1 commit
    • Yaowu Xu's avatar
      Enable using Golden reference in choose_partition() · 059a473b
      Yaowu Xu authored
      Choose_partition uses only the last frame as reference frame in making
      partition decision, this commit adds the check on how well Golden
      frame with (0,0) predicts the current block, and uses GF(0,0) as
      basis for partition decision if it produces better prediction.
      
      The commit improves rtc speed 6 and 7 encoding by 0.14% and 0.19%
      respectively.
      
      Change-Id: I156acf925bd6e0b586d48155d1940d27270a3915
      059a473b
  4. 09 Mar, 2015 1 commit
  5. 07 Mar, 2015 1 commit
  6. 05 Mar, 2015 3 commits
  7. 04 Mar, 2015 4 commits
    • Jingning Han's avatar
      Move integral projection motion search to vp9_mcomp.c · 2deecdd5
      Jingning Han authored
      Make it a general purpose fast motion estimation function, to be
      used in the mode search process.
      
      Change-Id: Ib354cb0e664dc61c30c0b2314297835ee75b157a
      2deecdd5
    • Jingning Han's avatar
      Use SAD value to set chroma cost flag · 7d8061a4
      Jingning Han authored
      This saves an extra 64x64 variance calculation and replaces two
      32x32 variance functions with sad functions. The compression
      performance change is unnoticeable.
      
      Change-Id: I6d33868695664ec73b56c42945162ae61c484856
      7d8061a4
    • Adrian Grange's avatar
      Make encoder buffer allocation dynamic · 3807dd82
      Adrian Grange authored
      Frame buffers are now allocated dynamically on-demand.
      
      Entries in the reference frame map, cm->ref_frame_map,
      may now be set to -1 (INVALID_IDX) to indicate that
      there is not a valid reference buffer in that "slot".
      
      All slots in the reference frame map are now initialized
      to the empty state (-1) and each buffer is initialized
      to have a reference count of 0.
      
      Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
      3807dd82
    • Jingning Han's avatar
      Properly handle the boundary blocks for integral projection search · e5fe1658
      Jingning Han authored
      Use rectangular block size for integral projection motion estimation
      if the the 64x64 block has over half block outside the frame. This
      avoids the issue that the motion information of these blocks is
      dominated by the extended pixels, instead of the pixels of interest.
      
      Change-Id: I22f4d2bb7f6a20db9b3f5e2e5463a7f4b9d1b737
      e5fe1658
  8. 03 Mar, 2015 2 commits
    • Deb Mukherjee's avatar
      dc quantizer fix for 32x32 transforms · 6910e92d
      Deb Mukherjee authored
      The rounding factor needs to be scaled down by a factor of 2.
      Also, the quantized and dequantized coefficients are memset to 0
      when dc quantizer is used.
      
      Change-Id: Ifa68bab02addbf1b83d249c5b4cbd5cda796b1cf
      6910e92d
    • Yaowu Xu's avatar
      Adapt color sensitiviy threshold to luma signal energy · 47ac3ea0
      Yaowu Xu authored
      Instead using only a fixed threshold, this commit adapts the threshold
      for color sensitivity decision to luma signal energy: chroma channel's
      sse is at least 1/6 of that in luma for color sensitivity flag to be
      set to active.
      
      This recoups a large portion of the speed loss due to accounting for
      chroma component costs in RTC mode decision.
      
      Change-Id: Ie01f747f6037dba6a1d1ed3e10b71a0ef1abc42c
      47ac3ea0
  9. 01 Mar, 2015 1 commit
    • Jingning Han's avatar
      Use variance metric for integral projection vector match · 1790d452
      Jingning Han authored
      This commit replaces the SAD with variance as metric for the
      integral projection vector match. It improves the search accuracy
      in the presence of slight light change. The average speed -6
      compression performance for rtc set is improved by 1.7%. No speed
      changes are observed for the test clips.
      
      Change-Id: I71c1d27e42de2aa429fb3564e6549bba1c7d6d4d
      1790d452
  10. 26 Feb, 2015 1 commit
  11. 25 Feb, 2015 1 commit
    • Jingning Han's avatar
      Motion compensated reference refinement · b7050c0b
      Jingning Han authored
      This commit applies one-step refinement search to the resulting
      motion vector of the integral projectiion based motion estimation,
      per 64x64 block. It improves the coding performance of speed -6.
      
      pedestrian 1080p 500 kbps
      51735 b/f, 36.794 dB, 16044 ms ->
      51382 b/f, 36.793 dB, 16282 ms
      
      cloud 1080p 500 kbps
      24081 b/f, 37.988 dB, 14016 ms ->
      23597 b/f, 38.076 dB, 12774 ms
      
      vidyo1 720p 1000 kbps
      16552 b/f, 40.514 dB, 8279 ms ->
      16553 b/f, 40.543 dB, 8510 ms
      
      The rtc set compression performance is improved by 0.5%.
      
      Change-Id: I3d09bea2caf58b2a4f3b38aa26fffafcbe9a2c17
      b7050c0b
  12. 24 Feb, 2015 1 commit
    • Jingning Han's avatar
      Re-distribute hierarchical vector match pattern · f87e315e
      Jingning Han authored
      This commit modifies the hierarchical vector match patter. It
      avoids repeated SAD computation at same points. The function
      vp9_vector_sad_sse2 is called 12 times per 64x64 block, instead
      of 15 times as before. The effective coverage remains the same.
      
      Change-Id: I91ad9d27d40db8963c907d02af84e10702136994
      f87e315e
  13. 20 Feb, 2015 1 commit
    • Marco's avatar
      Adjustments to cyclic refresh (aq-mode=3). · 0187f4b4
      Marco authored
      Target higher delta-qp for big blocks with zero motion,
      and for segment#1: avoid 64x64 partition size and force 8x8 tx size.
      
      Metrics on RTC set mostly positive: SSIM up by ~4%, PSRN by ~1.5%.
      Doesn't seem to be any change in speed.
      
      Change-Id: I1f68fa3c4f62dab3b90cc58041f05ebb048ae5ac
      0187f4b4
  14. 19 Feb, 2015 2 commits
    • Jingning Han's avatar
      Integral projection based motion estimation · ed2dc59c
      Jingning Han authored
      This commit introduces a new block match motion estimation
      using integral projection measurement. The 2-D block and the nearby
      region is projected onto the horizontal and vertical 1-D vectors,
      respectively. It then runs vector match, instead of block match,
      over the two separate 1-D vectors to locate the motion compensated
      reference block.
      
      This process is run per 64x64 block to align the reference before
      choosing partitioning in speed 6. The overall CPU cycle cost due
      to this additional 64x64 block match (SSE2 version) takes around 2%
      at low bit-rate rtc speed 6. When strong motion activities exist in
      the video sequence, it substantially improves the partition
      selection accuracy, thereby achieving better compression performance
      and lower CPU cycles.
      
      The experiments were tested in RTC speed -6 setting:
      cloud 1080p 500 kbps
      17006 b/f, 37.086 dB, 5386 ms ->
      16669 b/f, 37.970 dB, 5085 ms (>0.9dB gain and 6% faster)
      
      pedestrian_area 1080p 500 kbps
      53537 b/f, 36.771 dB, 18706 ms ->
      51897 b/f, 36.792 dB, 18585 ms (4% bit-rate savings)
      
      blue_sky 1080p 500 kbps
      70214 b/f, 33.600 dB, 13979 ms ->
      53885 b/f, 33.645 dB, 10878 ms (30% bit-rate savings, 25% faster)
      
      jimred 400 kbps
      13380 b/f, 36.014 dB, 5723 ms ->
      13377 b/f, 36.087 dB, 5831 ms  (2% bit-rate savings, 2% slower)
      
      Change-Id: Iffdb6ea5b16b77016bfa3dd3904d284168ae649c
      ed2dc59c
    • Jingning Han's avatar
      Fix a check condition in nonrd_pick_partition · 83559e73
      Jingning Han authored
      Change-Id: Ic92fb4b16948f745c218351b24fdafecf9abce3a
      83559e73
  15. 10 Feb, 2015 2 commits
    • Yaowu Xu's avatar
      Move computation up to frame level · ee5d7999
      Yaowu Xu authored
      This is to avoid redo the same calculation repeatly, and also allow
      easier adjustments for further experiments.
      
      This commit shall have no effect on quality/compression.
      
      Change-Id: I4460acf5c808ff5518da18d21e002c5da58af857
      ee5d7999
    • Jingning Han's avatar
      Fix block partition size in fill_mode_info_sb · ebb4c9e8
      Jingning Han authored
      This commit fixes the sub block partition size used in
      fill_mode_info_sb. Previous implementation effectively disabled
      the rectangular block sizes. This commit resolved this issue.
      
      Change-Id: Ic1c383ab0a9a2e7d59e85b388093f1f1f94d1e7f
      ebb4c9e8
  16. 04 Feb, 2015 7 commits
    • Yaowu Xu's avatar
      Remove unnecessary initialization · c905c42a
      Yaowu Xu authored
      loop_filter_level is always reset in loop_filter_frame() later in
      encoder.
      
      Change-Id: I608e03d905a6b23e7d5025ca747e4784c665007e
      c905c42a
    • Yaowu Xu's avatar
      Move tx_mode decision logic into select_tx_mode() · 581aee00
      Yaowu Xu authored
      Change-Id: I7f8f78c33eb3f33344b029a27bda320f4d68c577
      581aee00
    • Yaowu Xu's avatar
      Replace repeated check with single variable · 19451e6d
      Yaowu Xu authored
      Change-Id: I2f6a669bf7c6d9796388ad3f3fa3fc942635c215
      19451e6d
    • Yaowu Xu's avatar
      Adjust partitioning threshold based rtc speed · bdfb5f98
      Yaowu Xu authored
      On rtc set:
      speed 7 quality improves about 0.5%
      speed 8 quality improves about 1.0%
      
      Encoding time for speed 7 changes from 67804ms to 65889ms
      Encoding time for speed 8 changes from 58659ms to 56808ms
      
      Change-Id: Iabcfb53012fc1b9f3326cdbc167e5758b8c7ad30
      bdfb5f98
    • Jingning Han's avatar
      Unify luma and chroma inter predictors in choose_partitioning · 1b9082ec
      Jingning Han authored
      Change-Id: I8bfc80f4fffb0892e93d3326394a52d1ee3c0f37
      1b9082ec
    • Jingning Han's avatar
      Account for chroma component costs in RTC mode decision · 0c6d3a03
      Jingning Han authored
      This commit allows the encoder to account for additional chroma
      plane costs in the mode decision process, if the current block
      potentially contains significant color change. It improves the
      visual quality at very low bit-rates.
      
      The compression performance of dark720p is improved by 12.39% in
      speed 6. For jimred at 150 kbps, the PSNR of V component (red)
      increased by 0.2 dB, at the expense of about 5% increase in
      encoding time. Note that for sequences where the chroma components
      are fairly consistent, the encoding time increase is negligible.
      
      On average the rtc set compression performance is improved by
      1.172% in PSNR and 1.920% in SSIM.
      
      Change-Id: Ia55b24ef23a25304f7ec9958fbf07fd6e658505c
      0c6d3a03
    • Yaowu Xu's avatar
      Move calls to avoid unnecessary operations · 02537ebb
      Yaowu Xu authored
      Change-Id: I236f7f75ab9a4511d1b52a6a67299b0e844a103e
      02537ebb
  17. 03 Feb, 2015 1 commit
  18. 30 Jan, 2015 1 commit
    • Yaowu Xu's avatar
      Optimize coef update · 45971abd
      Yaowu Xu authored
      1. move the check of search method of USE_TX_8X8 up one level to
      avoid operations of build_tree_distributions()
      2. count tx used and avoid computaton for coef udpate when one size
      is not used at all.
      
      Change-Id: Ia3e54a2588aa531c41377a1bfaa64385d04a592c
      45971abd
  19. 27 Jan, 2015 2 commits
    • Yaowu Xu's avatar
      move clear_system_state() call before using double · 645b7cdf
      Yaowu Xu authored
      Floating point is used in vp9_convert_qindex_to_q(), so sometime unit
      test ActiveMapTest would cause run time error without properly call
      to clear_system_state to reset register status.
      
      Change-Id: I181e9395148c44a6ca8b97d6e109bd4a152143c6
      645b7cdf
    • Marco's avatar
      aq-mode=3: Update to allow for refresh on modes other than zero-mv. · 3f1af6e8
      Marco authored
      Add distortion threshold condition to refresh state of a coding block,
      and allow for qp adjustment also for some intra modes and non-zero motion modes.
      
      Also some code cleanup (remove unused variables/code).
      
      Change-Id: I735fa2b28bc64f60e0323976b82510577b074203
      3f1af6e8
  20. 26 Jan, 2015 1 commit
  21. 22 Jan, 2015 1 commit
    • Marco's avatar
      Modify variance partition selection for low resolutions. · 0dccb627
      Marco authored
      For low spatial resolutions: bias partittion selection to smaller block sizes,
      and base the variance computation on 4x4 down-sampling.
      
      Also move the threshold computations into the choose_partitioning,
      so they are computed once for each sb block.
      
      On low-res clips (RTC_derf) PSNR/SSIMetrics increase by about 4-5%.
      No change for resolutions above CIF.
      
      Change-Id: I93f8ff742c8044786977bb6e31dcf8efda6dd1b0
      0dccb627
  22. 07 Jan, 2015 1 commit
  23. 02 Jan, 2015 1 commit
  24. 25 Dec, 2014 1 commit
    • Jingning Han's avatar
      Enable sub8x8 inter block search for RTC coding mode · dad89d5c
      Jingning Han authored
      This commit enables sub8x8 inter block coding for RTC mode. The
      use of sub8x8 blocks can be turned on by allowing
      choose_partitioning function to select 4x4/4x8/8x4 block sizes.
      
      Change-Id: Ifbf1fb3888fe4c094fc85158ac3aa89867d8494a
      dad89d5c