1. 22 Aug, 2013 - 7 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
      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
    • Dmitry Kovalev's avatar
      Cleaning up foreach_transformed_block_in_plane. · 4172d7c5
      Dmitry Kovalev authored
      Change-Id: I9f45af3894c57f35cb266c255e2b904295d39c34
      4172d7c5
    • James Zern's avatar
      vp9_peek_si: add bitstream v1 support · 61673553
      James Zern authored
      currently protected by CONFIG_NON420 as v1 is still not entirely stable
      
      Change-Id: Id1c5081b04a2c47a842822048b8804be67d23a6d
      61673553
  2. 21 Aug, 2013 - 10 commits
    • Dmitry Kovalev's avatar
      Cleaning up optimize_init_b function. · be60924f
      Dmitry Kovalev authored
      Change-Id: Ib2c975e1d96deefb7ac4d6b600c8c5388035d111
      be60924f
    • Dmitry Kovalev's avatar
      Cleaning up reset_skip_context function. · c43da352
      Dmitry Kovalev authored
      Change-Id: Ib3e72671eb8da6f2e9767a6de292ec7c7cde6bc7
      c43da352
    • Dmitry Kovalev's avatar
      Cleaning up sum_intra_stats function. · 048ccb28
      Dmitry Kovalev authored
      Using size_group_lookup table and better variable names.
      
      Change-Id: I6e67f2ce091845db43ace7d21b7ae31c6f165aec
      048ccb28
    • Dmitry Kovalev's avatar
      Removing PLANE_TYPE argument from cost_coeffs function. · 2f1a0a0e
      Dmitry Kovalev authored
      We can determine plane_type for another function arguments.
      
      Change-Id: I85331877aedb357632ae916a37b5b15f22c0bb1f
      2f1a0a0e
    • Deb Mukherjee's avatar
      Make "good" quality 2-pass vpxenc encoding default · 0d8723f8
      Deb Mukherjee authored
      Currently, the best quality mode in VP9 is not very well developed,
      and unnecessarily makes the encode too slow. Hence the command line
      default is changed to "good" quality. Also, the number of passes
      default is changed to 2 passes as well, since 1-pass encoding is
      not very efficient in VP9.
      
      Besides, a number of VP9 defaults are set to the currently
      recommended settings. With these changes, vpxenc
      run with --codec=vp9 --kf-max-dist=9999 --cpu-used=0 should
      work about the same as our borg results.
      Note when the --cpu-used=0 option is dropped there will be a slight
      difference in the output, because of a difference in the cpu-used
      value for the first pass. Specifically, the default when unspecified
      is to use cpu_used=1 for the first pass and cpu_used=0 for the
      second pass. But when specified, both passes will use the cpu-used
      value specified.
      
      Note that this also changes the default for VP8 as being "good"
      but other options stay unchanged.
      
      Change-Id: Ib23c...
      0d8723f8
    • Dmitry Kovalev's avatar
      Removing a lot of duplicated code. · 27a984fb
      Dmitry Kovalev authored
      Adding set_contexts contexts function and call it instead of
      set_contexts_on_border. Calling txfrm_block_to_raster_xy to get aoff and
      loff.
      
      Change-Id: I41897e344afd2cae1f923f4fdbe63daccf6fe80e
      27a984fb
    • Dmitry Kovalev's avatar
      Adding scale factor check. · a3ae4c87
      Dmitry Kovalev authored
      We support only [1/16, 2] scale factors, enforcing this now.
      
      Change-Id: I0822eb7cea51720df6814e42d3f35ff340963061
      a3ae4c87
    • Adrian Grange's avatar
      Fix typos and minor stylistic cleanup · ce28d0ca
      Adrian Grange authored
      Change-Id: I32e43474e8651ef2eb181d24860a8f118cfea7bf
      ce28d0ca
    • James Zern's avatar
      vp9 rtcd: remove non-existent sad functions · ae455fab
      James Zern authored
      vp9_sad32x3, vp9_sad3x32
      
      + remove unnecessary sad include from vp9_findnearmv.c
      
      Change-Id: Idef2a89cadc3fec64eff82ba9be60ffff50b3468
      ae455fab
    • Dmitry Kovalev's avatar
      Removing unused foreach_predicted_block function. · 90027be2
      Dmitry Kovalev authored
      Moving foreach_predicted_block_in_plane function to vp9_reconinter.c
      because there is only one usage.
      
      Change-Id: I9852feae43fc3cf809b817fc541d043bc5496209
      90027be2
  3. 20 Aug, 2013 - 11 commits
    • Dmitry Kovalev's avatar
      Using has_second_ref function to simplify the code. · 27de4fe9
      Dmitry Kovalev authored
      Updating implementation of vp9_get_pred_context_single_ref_p2 using
      has_second_ref function to make code easier to read.
      
      Change-Id: I5ba642712f59861a48aab974e73aa01640d086fe
      27de4fe9
    • Dmitry Kovalev's avatar
      vp9_filter.{h, c} cleanup + adding SUBPEL_TAPS constant. · d19ac4b6
      Dmitry Kovalev authored
      Change-Id: Ib394ea23f464591dad50b5c65c316701378d06d7
      d19ac4b6
    • hkuang's avatar
      Add neon optimize vp9_short_idct10_8x8_add. · 37cda6dc
      hkuang authored
      vp9_short_idct10_8x8_add is used to handle the block that only have valid data
      at top left 4x4 block. All the other datas are 0. So we could cut several
      unnecessary calculations in order to save instructions.
      
      Change-Id: I34fda95e29082b789aded97c2df193991c2d9195
      37cda6dc
    • 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
    • Jim Bankoski's avatar
      fix the mv_ref_idx issue · f167433d
      Jim Bankoski authored
      The following issue was reported :
      https://code.google.com/p/webm/issues/detail?id=601&q=jimbankoski&sort=-id&colspec=ID%20Pri%20mstone%20ReleaseBlock%20Type%20Component%20Status%20Owner%20Summary
      
      This code makes the choice and code cleaner and removes any question
      about whether the border needs to be checked.
      
      Change-Id: Ia7aecfb3168e340618805bd318499176c2989597
      f167433d
    • 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
    • Dmitry Kovalev's avatar
      Adding VP9_FILTER_BITS constant. · 2612b99c
      Dmitry Kovalev authored
      Removing VP9_FILTER_WEIGHT, VP9_FILTER_SHIFT, BLOCK_WIDTH_HEIGHT
      constants. Using ROUND_POWER_OF_TWO for rounding.
      
      Change-Id: I2e8d6858dcd600a87096138209731137d7decc24
      2612b99c
    • Dmitry Kovalev's avatar
      Adding has_second_ref function. · d8286dd5
      Dmitry Kovalev authored
      Updating implementation of vp9_get_pred_context_single_ref_p1 using
      has_second_ref function to make code easier to read.
      
      Change-Id: Ie8f60403a7195117ceb2c6c43176ca9a9e70b909
      d8286dd5
    • 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
  4. 19 Aug, 2013 - 6 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
    • Adrian Grange's avatar
      Further correct bug in loopfilter initialization · 5a1a269f
      Adrian Grange authored
      The intent was to initialize the deltas for the
      segment to the computed value, irrespective of mode
      and reference frame if (mode_ref_delta_enabled == 0).
      
      (In response to bug posted by Manjit Hota to codec-devel
      and webm-discuss lists)
      
      Change-Id: I10435cb63d0f88359bb4c14f22181878a1988e72
      5a1a269f
    • 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
  5. 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
  6. 16 Aug, 2013 - 5 commits