1. 25 Oct, 2013 2 commits
  2. 24 Oct, 2013 1 commit
  3. 23 Oct, 2013 1 commit
  4. 21 Oct, 2013 1 commit
    • Dmitry Kovalev's avatar
      Inlining set_partition_seg_context function. · a0be71c7
      Dmitry Kovalev authored
      We used set_partition_seg_context() only before calls to:
       1. update_partition_context()
       2. partition_plane_context()
      
      Moving these functions from vp9_blockd.h to vp9_onyxc_int.h and
      inlining  set_partition_seg_context into them. After that it is not
      necessary to have {above, left}_seg_context fields in MACROBLOCKD struture,
      so removing them also.
      
      Change-Id: I4723f59e1c8f3788432b7f51185d8d747b3a97f9
      a0be71c7
  5. 18 Oct, 2013 2 commits
    • Jingning Han's avatar
      Make memory alloc in pick_mode_context bsize aware · 72033fcf
      Jingning Han authored
      This commit makes the buffer allocation of zcoeff_blk array in
      pick_mode_context block size aware. It calculates the number of
      4x4 blocks in the partition and assigns the memory space accordingly.
      This process (and the uninitialization) is done once for each encoding
      pass. It allows memory copy of smaller buffer when possible.
      
      For football at 600kbps, the runtimes improve by about 1%:
      speed 1, 45961ms -> 45472ms
      speed 2, 23863ms -> 23598ms
      
      Change-Id: Id2ca24906fa89f46fa5fe742ec4b8efc2a61f877
      72033fcf
    • Dmitry Kovalev's avatar
      Passing block index explicitly instead of using get_sb_index(). · a8ffa96e
      Dmitry Kovalev authored
      That makes decoder and encoder (only bitstream writing part) a little bit
      simpler and faster. Moving get_sb_index() function to the encoder.
      
      Change-Id: Ie91aaeefd69c84b085948267b33556a7666c6278
      a8ffa96e
  6. 17 Oct, 2013 2 commits
  7. 16 Oct, 2013 3 commits
  8. 15 Oct, 2013 5 commits
  9. 09 Oct, 2013 1 commit
    • Jingning Han's avatar
      Deprecate the use of PARTITION_INFO from encoder · 03fe08ca
      Jingning Han authored
      Use b_mode_info to store the inter prediction mode of sub8x8 block,
      in replacement of the use of partition_info. Remove redundant buffer
      update for partition_info. For bus_cif at 2000 kbps, this seem to make
      speed 0 about 1% faster.
      
      Change-Id: Id1b3be45e75a24fb4b42335ac480c23e440978f6
      03fe08ca
  10. 08 Oct, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing inv_txm4x4_1_add and inv_txm4x4_add function pointers. · c983c966
      Dmitry Kovalev authored
      We already have itxm_add member in MACROBLOCKD structure. Both
      inv_txm4x4_1_add and inv_txm4x4_add are just its special cases for
      different eob values. But eob logic is already implemented in
      vp9_iwht4x4_add and vp9_idct4x4_add (that's why also removing
      inverse_transform_b_4x4_add).
      
      Change-Id: I80bec9b6f7d40c5e5033c613faca5c819c3e6326
      c983c966
  11. 04 Oct, 2013 2 commits
    • Jim Bankoski's avatar
      vp9_encodeframe.c cpplint issues resolved · de5cb8b1
      Jim Bankoski authored
      Change-Id: Id9d837e062d9c4a94def4b4ed1f49a67c75d3618
      de5cb8b1
    • Dmitry Kovalev's avatar
      Giving consistent names to IDCT/IWHT functions. · 3a060257
      Dmitry Kovalev authored
      The idea is to have the following names for each transform size:
      
      vp9_idct4x4_add
        vp9_idct4x4_1_add
        vp9_idct4x4_10_add
        vp9_idct4x4_16_add
      
      vp9_idct8x8_add
        vp9_idct8x8_1_add
        vp9_idct8x8_10_add
        vp9_idct8x8_64_add
      
      etc for 16x16, 32x32
      
      The actual list of renames in this patch:
      
      vp9_idct_add_lossless     -> vp9_iwht4x4_add
      vp9_short_iwalsh4x4_add   -> vp9_iwht4x4_16_add
      vp9_short_iwalsh4x4_1_add -> vp9_iwht4x4_1_add
      
      vp9_idct_add            -> vp9_idct4x4_add
      vp9_short_idct4x4_add   -> vp9_idct4x4_16_add
      vp9_short_idct4x4_1_add -> vp9_idct4x4_1_add
      
      Change-Id: I6f43f7437c68dd30cdd05d72e213765578ed30b1
      3a060257
  12. 03 Oct, 2013 4 commits
    • Jingning Han's avatar
      Refactor inter mode rate-distortion search · 11abab35
      Jingning Han authored
      This commit separates the rate-distortion optimization loop of
      superblocks from that of sub8x8 blocks. This allows better design
      rate-distortion optimization search loop for each setting. It also
      removes the use of SPLITMV and I4X4_PRED therein.
      
      No performance change in speed 0 settings. For bus@CIF at 2000kbps,
      the speed 1 runtime goes from 48009ms to 43894ms (about 10% faster).
      The overall compression performance on derf changed by -0.021%.
      
      Speed 2 runtime goes from 27114ms to 28700ms (6% slower), while the
      overall coding efficiency goes up by 1.629% for derf, 1.236% for yt.
      
      Change-Id: Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
      11abab35
    • Dmitry Kovalev's avatar
      Using vp9_zero instead of vpx_memset. · 9250d152
      Dmitry Kovalev authored
      Change-Id: I9a0d0e9c3459954aa7b9c68f92cc5d56385ebd18
      9250d152
    • Paul Wilkins's avatar
      Speed setting review. · 6253cc92
      Paul Wilkins authored
      Substantial reworking of the speed vs quality trade offs for
      speed 1 and 2.
      
      In this patch I am attempting to freeze the "quality" meaning of
      speeds 1 and 2 relative to speed 0 so that in future we can
      better evaluate progress.
      
      I am targeting :
      Speed 1 quality ~-5% vs speed 0.
      Speed 2 quality ~-10% vs speed 0
      
      It is inevitable that quality will still fluctuate a little as we adjust
      settings and add new features, but we will attempt to keep as
      close as possible to these values. Above speed 2 things will remain
      a bit more fluid for now.
      
      In this patch speed 1 is approximately 4-5x as fast as speed 0. This
      is similar to before but the quality hit is a lot less. Likewise speed 2
      is approximately 2x as fast as speed 1 but is similar in quality to the
      previous speed 1 configuration.
      
      Also slight change to behavior of FLAG_EARLY_TERMINATE to insure
      all reference frames get at least one rd test. Important for very low
      variance regions.
      
      WIP :- Added a new speed level with old speed 4 becoming speed 5.
      Speed 3 and 4 tradeoffs still WIP
      
      Change-Id: Ic7a38dd7b5b63ab1501f9352411972f480ac6264
      6253cc92
    • Jim Bankoski's avatar
      make use last partition consider motion · f1d3e5e4
      Jim Bankoski authored
      This commit causes use last partition to consider whether a 64x64 has
      motion that might make a new partitioning worth while.
      
      Change-Id: I3a57bedef4f3cd961fadbfa96651c206fa36da4a
      f1d3e5e4
  13. 01 Oct, 2013 1 commit
  14. 30 Sep, 2013 3 commits
    • Jingning Han's avatar
      Fix rectangular partition check in speed 1 · 195061fe
      Jingning Han authored
      Make encoder skip rectangular partition check in speed 1 and above,
      when early termination was triggered in partition split.
      Thanks Guillaume (gmartres@) for catching this issue.
      
      This change makes bus_cif at 2000kbps speed 1 runtime goes down from
      25612ms to 23438ms (about 9% speed-up), at the expense of -0.235%
      performance down.
      
      Change-Id: I98613fad081a261d30d5fa206f934ca70601c180
      195061fe
    • Paul Wilkins's avatar
      Improved auto_partition_range. · 65b93c7e
      Paul Wilkins authored
      The code now takes into account temporal and spatial
      information to determine the partition size range, but the
      frequency counts have been removed.
      
      The net effect is similar in quality but about 10% faster.
      
      Change-Id: I39a513fb79cec9177b73b2a7218f0da70963ae95
      65b93c7e
    • Paul Wilkins's avatar
      Alter Speed 3. · a76caa7f
      Paul Wilkins authored
      This patch deletes the variance based speed three partitioning.
      Speed 3 now uses the same partitioning method as speed 2
      but with some stricter conditions.
      
      The speed and quality are now somewhere between speeds 2 and 4
      whereas before it was worse in both than speed 4.
      
      Change-Id: Ia142e7007299d79db3ceee6ca8670540db6f7a41
      a76caa7f
  15. 26 Sep, 2013 1 commit
  16. 25 Sep, 2013 1 commit
    • Dmitry Kovalev's avatar
      Replacing txfm with tx. · d0365c4a
      Dmitry Kovalev authored
      Renaming txfm_stepdown_count to tx_stepdown_count and max_txfm_size to
      max_tx_size.
      
      Change-Id: Ifc173e22c78240e561a57c4c741b64b1b8fc6fef
      d0365c4a
  17. 24 Sep, 2013 2 commits
    • Dmitry Kovalev's avatar
      Cleaning up vp9_update_nmv_count function. · 450cbfe5
      Dmitry Kovalev authored
      Using best_mv[2] array instead of two separate variables.
      
      Change-Id: Iefa0a41f5c42c42f2c66cef26750da68405f0f25
      450cbfe5
    • Yaowu Xu's avatar
      Change to prevent invalid memory access · 92a29c15
      Yaowu Xu authored
      After change of MI context storage , mi_8x8[]  pointer may be null for
      a block outside of image border. The commit changes to access the data
      only after validation of mi_row and mi_col.
      
      Change-Id: I039c4eb486a228ea9d8e5f35ab9ae6717d718bf3
      92a29c15
  18. 23 Sep, 2013 1 commit
    • Jingning Han's avatar
      Enable per transformed block zero coeffs forcing · a517343c
      Jingning Han authored
      This commit enables forcing all coefficients zero per transformed
      block, when its rate-distortion cost is lower than regular coeff
      quantization.
      
      The overall performance improvement (including its parent patch on
      calculating rd cost per transformed block) at speed 1:
      derf:  0.298%
      yt:    0.452%
      hd:    0.741%
      stdhd: 0.006%
      
      Change-Id: I66005fe0fd7af192c3eba32e02fd6d77952accb5
      a517343c
  19. 20 Sep, 2013 1 commit
  20. 19 Sep, 2013 1 commit
  21. 17 Sep, 2013 1 commit
  22. 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
  23. 13 Sep, 2013 1 commit
    • 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
  24. 11 Sep, 2013 1 commit
    • Scott LaVarnway's avatar
      New mode_info_context storage -- undo revert · ac6093d1
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of pointers to MODE_INFO structs.  The
      MODE_INFO structs are now stored as a stream (decoder only),
      eliminating unnecessary copies and is a little more cache
      friendly.
      
      Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
      ac6093d1