1. 15 Oct, 2013 4 commits
    • Alexander Voronov's avatar
      Updated encoder to handle intra-only frames · d6a59fb1
      Alexander Voronov authored
      Updated the encoder to handle frames that are coded
      intra-only. Intra-only frames must be non-showable,
      that is, the "show frame" flag must be set to 0 in
      the frame header.
      
      Tested by forcing the ARF frames to be coded intra-
      only.
      
      Note: The rate control code will need to be modified
      to account for intra-only frames better than they
      are currently handled.
      
      Change-Id: I6a9dd5337deddcecc599d3a44a7431909ed21079
      d6a59fb1
    • Jingning Han's avatar
      Remove unused variable vp9_64x64_zeros · 9115d845
      Jingning Han authored
      Remove the unused variable vp9_64x64_zeros from vp9_encodeframe_.
      
      Change-Id: I34bfdcab9a9105440ad05154c1e0516e70258785
      9115d845
    • Jingning Han's avatar
      Remove unused comment · 96222710
      Jingning Han authored
      Change-Id: I2d96940fae4c7a16661a43c2bf6907d8b1c1a127
      96222710
    • Dmitry Kovalev's avatar
      Removing unused 8x4 transform from the encoder. · a4585285
      Dmitry Kovalev authored
      Change-Id: Icbcf68b5b685a56f255ebc3859c9692accdadf9e
      a4585285
  2. 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
  3. 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
  4. 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
  5. 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
  6. 01 Oct, 2013 1 commit
  7. 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
  8. 26 Sep, 2013 1 commit
  9. 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
  10. 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
  11. 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
  12. 20 Sep, 2013 1 commit
  13. 19 Sep, 2013 1 commit
  14. 17 Sep, 2013 1 commit
  15. 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
  16. 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
  17. 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
  18. 10 Sep, 2013 3 commits
    • Yunqing Wang's avatar
      Stop partition checking when distortion is small · 0607abc3
      Yunqing Wang authored
      If the current obtained distortion is very small, which happens
      for static image case, we pick the current partition type without
      further split checking.
      
      This won't affect regular videos. For static videos, we got 10%~12%
      encoding speed gain. PSNR was better for some clips, and worse for
      others. Overall it was even.
      
      Change-Id: If787a57bedf46fc595ca4f5ded2b0c0a69e9fdef
      0607abc3
    • 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
    • Paul Wilkins's avatar
      Added extra check to rd_auto_partition_range() · 901c4954
      Paul Wilkins authored
      Added check that the returned max and minimum are
      valid in bottom and right border cases.
      
      Change-Id: I2d6cdc9b5f04c7d0ff512ddcf3228331e028bf9b
      901c4954
  19. 09 Sep, 2013 2 commits
  20. 08 Sep, 2013 1 commit
  21. 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
  22. 03 Sep, 2013 1 commit
    • Paul Wilkins's avatar
      Attempt to fix speed 4 · 49317cdd
      Paul Wilkins authored
      Speed 4 fixed partition size. Use fixed size unless it does not
      fit inside image, in which case use the largest size that does.
      
      Change-Id: I250f7a80506750dd82ab355721624a1344247223
      49317cdd
  23. 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
  24. 27 Aug, 2013 1 commit
  25. 26 Aug, 2013 1 commit
  26. 24 Aug, 2013 1 commit