1. 23 Aug, 2013 - 4 commits
  2. 22 Aug, 2013 - 9 commits
    • Dmitry Kovalev's avatar
      vp9_encodeframe.c cleanup. · 604022d4
      Dmitry Kovalev authored
      Removing unused get_sbuv_perpixel_variance function, using has_second_ref/
      is_inter_block functions, organizing includes.
      
      Change-Id: I016de4af12fbbb8b4ece26a70759b2392651b095
      604022d4
    • Dmitry Kovalev's avatar
      check_bsize_coverage cleanup. · 335b1d36
      Dmitry Kovalev authored
      Change-Id: Ib7803857b35c00e317c9deb8630e777e25eb278f
      335b1d36
    • Dmitry Kovalev's avatar
      Checking scale factors on access. · 3c426572
      Dmitry Kovalev authored
      It is possible to have invalid scale factors and not access them
      during decoding. Error is reported if we really try to use invalid scale
      factors.
      
      Change-Id: Ie532d3ea7325ee0c7a6ada08269f804350c80fdf
      3c426572
    • James Zern's avatar
      rename LOG2_* defines to *_LOG2 · 40ae02c2
      James Zern authored
      gets rid of a mix of styles
      
      Change-Id: I3591d312157bc6f53a25438bf047765c671fd8a8
      40ae02c2
    • James Zern's avatar
      vp9/encoder: fix last_frame_seg_map mem leak · a5726ac4
      James Zern authored
      remove duplicate allocation from vp9_create_compressor, it was added to
      vp9_alloc_frame_buffers in:
      
      d5bec522 Added resizing & initialization of last frame segment map
      
      Change-Id: I996723226a16a62aff8f9a52ac74e0b73cc98fdf
      a5726ac4
    • Dmitry Kovalev's avatar
      Adding vp9_is_scaled function. · 640dea4d
      Dmitry Kovalev authored
      Change-Id: Ieb7077ca3586b9491912027eed450a4f6fd38d30
      640dea4d
    • Jingning Han's avatar
      Refactor rd_pick_partition for parameter control · 01a37177
      Jingning Han authored
      This commit changes the partition search order of superblocks from
      {SPLIT, NONE, HORZ, VERT} to {NONE, SPLIT, HORZ, VERT} for
      consistency with that of sub8x8 partition search. It enable the use
      of early termination in partition search for all block sizes.
      
      For ped_area_1080p 50 frames coded at 4000 kbps, it makes the runtime
      goes down from 844305ms -> 818003ms (3% speed-up) at speed 0.
      
      This will further move towards making the in-search partition types
      configurable, hence unifying various speed-up approaches.
      
      Some speed 1 and 2 features are turned off during the refactoring
      process, including:
      disable_split_var_thresh
      using_small_partition_info
      
      Stricter constraints are applied to use_square_partition_only for
      right/bottom boundary blocks. Will bring back/refine these features
      subsequently. At this point, it makes derf set at speed 1 about
      0.45% higher in compression performance, and 9% down in run-time.
      
      Change-Id: I3db9f9d1d1a0d6cbe2e50e49bd9eda1cf705f37c
      01a37177
    • Deb Mukherjee's avatar
      Fixes on feature disabling split based on variance · 8b810c7a
      Deb Mukherjee authored
      Adds a couple of minor fixes, which may be absorbed in Jingning's
      patch. Thanks to Guillaume for pointing these out.
      Also adjusts the thresholds for speed 1 and 2 to 16 and 32
      respectively, to keep quality drops small.
      
      Results:
      --------
      derfraw300:  threshold = 16, psnr -0.082%, speedup 2-3%
                   threshold = 32, psnr -0.218%, speedup 5-6%
      stdhdraw250: threshold = 16, psnr -0.031%, speedup 2-3%
                   threshold = 32, psnr -0.273%, speedup 5-6%
      
      Change-Id: I4b11ae8296cca6c2a9f644be7e40de7c423b8330
      8b810c7a
    • Scott LaVarnway's avatar
      Initialize mb_skip_coeff before picking modes · 94bfbaa8
      Scott LaVarnway authored
      It appears that the above/left mb_skip_coeff used during
      the pick modes, is left over from the previously
      encode frame.  This patch initializes the flag to the default
      value of zero.
      
      
      Change-Id: Ida4684cc99611d6e3e82628db35ed717e28ce550
      94bfbaa8
  3. 21 Aug, 2013 - 6 commits
  4. 20 Aug, 2013 - 5 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
    • Paul Wilkins's avatar
      Changes to auto partition size selection. · e8923fe4
      Paul Wilkins authored
      Changes to code to auto select a partition size range
      based on data from spatial neighbors.
      
      Now looks at the sb_type in each 8x8 block of above
      and left SB64.
      
      The effect on speed 1 is now weaker giving better
      quality but less speed gain. Now also used in speed 2.
      
      Change-Id: Iace33a97d5c3498dd2a9a8a4067351941abcbabc
      e8923fe4
    • Yaowu Xu's avatar
      Change to limit the mv search range · c4048dbd
      Yaowu Xu authored
      As the pixel values beyond image border are duplicates of pixels
      on edge, the change limits the mv search range, any mv beyond
      the limits no longer produce new/different prediction values
      as entire block with pixels used for subpel interpolation are
      outside image border.
      
      Change-Id: I4c6fdf06e33c1cef1489f5470ce0fb4e5e01fb79
      c4048dbd
    • Yaowu Xu's avatar
      fix a bug when null function pointer is used. · f70330a9
      Yaowu Xu authored
      For certain partition size, the function poniter may not be intialized
      at all. The patch prevent the call if the pointer is not set.
      
      Change-Id: I78b8c3992b639e8799a16b3c74f0973d07b8b9ac
      f70330a9
  5. 19 Aug, 2013 - 5 commits
    • Dmitry Kovalev's avatar
      Moving plane_block_idx from vp9_blockd.h to vp9_quantize.c. · 569ca37d
      Dmitry Kovalev authored
      Change-Id: Ib8af21f2e7f603c2fb407e5d15a3bba64b545b49
      569ca37d
    • 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
  6. 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
  7. 16 Aug, 2013 - 3 commits
    • Dmitry Kovalev's avatar
      Removing unused or redundant arguments from *_args structures. · 26e5b5e2
      Dmitry Kovalev authored
      Redundant dst, pre[2] from build_inter_predictors_args, unused cm from
      encode_b_args.
      
      Change-Id: I2c476cd328c5c0cca4c78ba451ca6ba2a2c37e2d
      26e5b5e2
    • Adrian Grange's avatar
      Fixed typos and formatting · 79f4c1b9
      Adrian Grange authored
      Change-Id: I3814984a624bc64147c57efa74fbdda8eda47262
      79f4c1b9
    • Dmitry Kovalev's avatar
      Moving from ss_txfrm_size to tx_size. · afd9bd3e
      Dmitry Kovalev authored
      Updating foreach_transformed_block_visitor and corresponding functions
      to accept tx_size instead of ss_txfrm_size. List of functions per file:
      
      vp9_decodframe.c
        decode_block
        decode_block_intra
      
      vp9_detokenize.c
        decode_block
      
      vp9_encodemb.c
        optimize_block
        vp9_xform_quant
        vp9_encode_block_intra
      
      vp9_rdopt.c
        dist_block
        rate_block
        block_yrd_txfm
      
      vp9_tokenize.c
        set_entropy_context_b
        tokenize_b
        is_skippable
      
      Change-Id: I351bf563eb36cf34db71c3f06b9bbc9a61b55b73
      afd9bd3e
  8. 15 Aug, 2013 - 7 commits
    • Jingning Han's avatar
      Refactor rd loop for chroma components · 68369ca8
      Jingning Han authored
      This commit makes the rate-distortion optimization search of chroma
      components consistent across all block sizes. It removes redundant
      codes.
      
      Change-Id: I7e76f54d045e8efdd41d84a164c71f55b484471b
      68369ca8
    • Dmitry Kovalev's avatar
      Converting code from using ss_txfrm_size to tx_size. · bb3b817c
      Dmitry Kovalev authored
      Updated function signatures:
        txfrm_block_to_raster_block
        txfrm_block_to_raster_xy
        extend_for_intra
        vp9_optimize_b
      
      Change-Id: I7213f4c4b1b9ec802f90621d5ba61d5e4dac5e0a
      bb3b817c
    • Dmitry Kovalev's avatar
      Using { 0 } for initialization instead of memset. · 6f4fa44c
      Dmitry Kovalev authored
      Change-Id: I4fad357465022d14bfc7e13b348c6da267587314
      6f4fa44c
    • Dmitry Kovalev's avatar
      Moving segmentation struct from MACROBLOCKD to VP9_COMMON. · b7616e38
      Dmitry Kovalev authored
      VP9_COMMON is the right place to segmentatation struct because it has
      global segmentation parameters, not something specific to macroblock
      processing.
      
      Change-Id: Ib9ada0c06c253996eb3b5f6cccf6a323fbbba708
      b7616e38
    • Jingning Han's avatar
      Remove unused RDCOST_8X8 macro · b0646f9e
      Jingning Han authored
      Change-Id: I17c7d7eaa60fe69c543403c340f7c1078bfd339f
      b0646f9e
    • Deb Mukherjee's avatar
      Speed feature to skip split partition based on var · 24856b6a
      Deb Mukherjee authored
      Adds a speed feature to disable split partition search based on a
      given threshold on the source variance. A tighter threshold derived
      from the threshold provided is used to also disable horizontal and
      vertical partitions.
      
      Results on derfraw300:
      threshold = 16, psnr = -0.057%, speedup ~1% (football)
      threshold = 32, psnr = -0.150%, speedup ~4-5% (football)
      threshold = 64, psnr = -0.570%, speedup ~10-12% (football)
      
      Results on stdhdraw250:
      threshold = 32, psnr = -0.18%, speedup is somewhat more than derf
      because of a larger number of smoother blocks at higher resolution.
      
      Based on these results, a threshold of 32 is chosen for speed 1,
      and a threshold of 64 is chosen for speeds 2 and above.
      
      Change-Id: If08912fb6c67fd4242d12a0d094783a99f52f6c6
      24856b6a
    • Jingning Han's avatar
      Unify luma and chroma rd-cost estimation · ec01f52f
      Jingning Han authored
      This commit unifies the rate-distortion cost calculation process of
      luma and chroma components. It allows early termination to be enabled
      later in the rd search loop of chroma components, in consistent with
      luma pixels.
      
      Change-Id: I2e52a7c6496176bf2a5e3ef338d34ceb8aad9b3d
      ec01f52f