1. 25 Jul, 2013 1 commit
    • Yaowu Xu's avatar
      fix a bug where flags are not reset · 3e386aef
      Yaowu Xu authored
      The feature that uses small partition results as a measure to skip
      mode evaluation at larger partition requires the flags to be reset.
      The reset was missing in the code path that calls rd_use_partition().
      Change-Id: Ia0a3a0aee1a862b6e2333d596808db7c48033d50
  2. 24 Jul, 2013 4 commits
  3. 23 Jul, 2013 10 commits
    • Jingning Han's avatar
      Unify the use of encode_b_args/optimize_block_args · ab77828b
      Jingning Han authored
      The struct optimize_block_args is defined same as encode_b_args.
      Remove this redundant definition, and use encode_b_args consistently.
      Change-Id: I1703aeeb3bacf92e98a34f4355202712110173d9
    • Dmitry Kovalev's avatar
      Removing LOW_PRECISION_MV_UPDATE define. · 8d13b0d1
      Dmitry Kovalev authored
      Change-Id: I78d16ee758e1fae0200b746f00031f6d9c6d6ce7
    • Adrian Grange's avatar
      Rolled-up several for loops into one · 646edbc1
      Adrian Grange authored
      Several consecutive for loops executed over the same
      index range, so I rolled them into one.
      Change-Id: I5cfcc8c38c738478965768409cca9d09adf224e1
    • Dmitry Kovalev's avatar
      Removing vp9_is_interpolating_filter array. · db7f5d28
      Dmitry Kovalev authored
      All filters are interpolating now, so we don't need this array, all
      values from this array are evaluated to true.
      Change-Id: I9af6d8219ae0eb984063cd15e4e2296374ae4961
    • Jingning Han's avatar
      Make xform_quant operations tx_type independent · e9e2fe8e
      Jingning Han authored
      The xform_quant() module is only used by inter modes, hence removing
      the redundant switches therein conditioned on tx_type.
      Change-Id: Ib87ce5b2f2e4cbf3ceb133a1108afa173c933a3f
    • Jingning Han's avatar
      Skip inverse transform when eob is zero · 0359ad7f
      Jingning Han authored
      When all the transform coefficients were quantized to zero, skip
      the inverse transform operation. For bus_cif at 1000 kbps, the
      runtime goes from 154967ms -> 149842ms, i.e., about 3% speed-up,
      at speed 0.
      Change-Id: Ic0a813fff5e28972d4888ee42d8747846a6c3cc6
    • Scott LaVarnway's avatar
      pack_inter_mode_mvs cleanup · 7bc294a3
      Scott LaVarnway authored
      xd->mode_info_context is set to m prior to this call.
      Change-Id: Ibc442529961750c29ccf0c6cae08cb2b0431415f
    • Jim Bankoski's avatar
      clean up bw, bh · 86a9dec7
      Jim Bankoski authored
      many structures use bw and bh and they have different meanings.   This cl attempts
      to start this clean up and remove unneccessary 2 step look up log and then
      shift operations...
      also removed partition type multiple operation code in bitstream.c.
      Change-Id: I7e03e552bdfc0939738e430862e3073d30fdd5db
    • Paul Wilkins's avatar
      Renaming of segment constants. · 32042af1
      Paul Wilkins authored
      The minimum unit for segmentation in the segment map
      is now 8x8 so it is misleading to use MB_ as macro-block
      traditionally refers to a 16x16 region.
      Change-Id: I0b55a6f0426bb46dd13435fcfa5bae0a30a7fa22
    • James Zern's avatar
      vp9: make some static tables const · 3c8cce35
      James Zern authored
      Change-Id: I8bcae51271673da8755c66a51aea005dfe6a3739
  4. 22 Jul, 2013 8 commits
    • Ronald S. Bultje's avatar
      More optimizations for cost_coeffs(). · e20fcd95
      Ronald S. Bultje authored
      4x4:    163 ->  123 cycles (33% faster)
      8x8:    491 ->  399 cycles (23% faster)
      16x16: 1889 -> 1763 cycles (7% faster)
      32x32: 8311 -> 8180 cycles (1.6% faster)
      Overall encoding time of first 50 frames of bus (speed 0) @ 1500kbps
      goes from 1min4.33 to 1min3.00, i.e. 2.11% faster.
      Change-Id: Ib52d1dbb5649b14de769d3e7a74af67440b5284f
    • Dmitry Kovalev's avatar
      Adding update_tx_counts function. · b2fc6fa9
      Dmitry Kovalev authored
      Moving common encoder/decoder code to update_tx_counts. Also renaming
      vp9_get_pred_probs_tx_size to get_tx_probs2 and adding get_tx_probs to
      call vp9_get_pred_context_tx_size inside read_selected_tx_size only once
      (twice before).
      Change-Id: Ia50247f3893de88ef8e9041b0d44be44a40aaa4d
    • Yaowu Xu's avatar
      fix a build error · fc186dca
      Yaowu Xu authored
      Change-Id: I3b05687f439ff6a7c426d2c97a6c58c831fa51ac
    • Deb Mukherjee's avatar
      Diamond search change to accelerate movement · a1e2d50b
      Deb Mukherjee authored
      Optional change in diamond search to continue in the best move
      direction until that move turns worse.
      This is still WIP since the exact way the new method is to be used is
      under investigation. One option is to make it an option in diamond
      search and use it only when motion is large.
      Overall slightly positive on derfraw300 +0.02%, stdhdraw +0.13%,
      but works a lot better for high motion sequences (ex. football : +1%).
      Change-Id: If88e01a6021daa0cda934680cdc70be1ee04f798
    • Jingning Han's avatar
      Optimize operation flow in sub8x8 rd loop · 409e77f2
      Jingning Han authored
      Stack the rate-distortion statistics in the sub8x8 rd loop. This allows
      the encoder to skip the forward transform, quantization, and coeff cost
      estimation, in the sub8x8 rd optimization search, if the motion
      vector(s) are of integer pixel value, and have been tested in the
      previous prediction filter type rd loops of the same block.
      This gives about 2% speed-up for bus_cif at 2000 kpbs, for speed 0.
      Its efficacy depends how frequently the motion search will select an
      integer motion vector.
      Change-Id: Iee15d4283ad4adea05522c1d40b198b127e6dd97
    • Paul Wilkins's avatar
      Re-order mode search in rd. · 1d189d64
      Paul Wilkins authored
      Mode search order in rd loop changed to better reflect
      observed hit counts.
      Also some adjustment of the baseline mode rd thresholds
      to reflect the order change and observed frequencies.
      Change-Id: I47a131cc83e11551df8add6d6d8d413d78d3a63c
    • Jim Bankoski's avatar
      fix left over overflow · 2ac8b50c
      Jim Bankoski authored
      This cl fixes issues rbultje brought up. that I somehow neglected when I
      submitted yaowu's patch.
      Change-Id: I07ad18796317822510b96e951c88d29f194a3c2e
    • Paul Wilkins's avatar
      Fix build error. · 888375d2
      Paul Wilkins authored
      When CONFIG_POSTPROC is set there was a now
      invalid reference to cm->filter_level.
      Changed to cpi->mb.e_mbd.lf.filter_level in line with
      change Iaf5fb71c33719cdfa1b991f671caf071be9ea035
      Change-Id: If746e60044903f7ba8d0d346225b3d015226c7d0
  5. 21 Jul, 2013 1 commit
    • Jingning Han's avatar
      Skip buffer update in sub8x8 rd loop · c725502b
      Jingning Han authored
      This commit allows the encoder to skip a few buffer update steps in
      rd_pick_best_mbsegmentation, when early breakout has been triggered
      in the rd_check_segment_txsize. It provides about 1% speed-up for
      bus_cif at 2000 kbps, in the settings of speed 0.
      Change-Id: Ica034f10a24dec572b397d8389a2b81020ebc0b9
  6. 20 Jul, 2013 2 commits
    • Yaowu Xu's avatar
      added checks to prevent rate/distortion overflow · ea284d62
      Yaowu Xu authored
      At speed 2, due to the threshold scheme used, it is possible the rate
      and distortion assigned with INT_MAX value. The patch added checking
      to prevent the INT_MAX value is used in further calculation of RD
      scores. The patch also changed the assertion in rd_use_partition() to
      be mirror similar assertion in rd_pick_partition().
      Change-Id: Idb52c543cc1e10abdf6e6a5d6e9cb535a42214dc
    • Dmitry Kovalev's avatar
      Removing pre probabilities from FRAME_CONTEXT. · 7e703de7
      Dmitry Kovalev authored
      Using cm->frame_contexts[cm->frame_context_idx] as source of previous
      Change-Id: Ie03778acf0e7bebdc3a1f6a51854d4a0712f24a1
  7. 19 Jul, 2013 9 commits
  8. 18 Jul, 2013 5 commits
    • Dmitry Kovalev's avatar
      Using VP9_REF_NO_SCALE instead of (1 << VP9_REF_SCALE_SHIFT). · 0b562b2d
      Dmitry Kovalev authored
      Change-Id: Ide58a74d31ff948319445a6337d2c05e98720e34
    • Ronald S. Bultje's avatar
      Add best_rd breakout to keyframe partition selection also. · 96e4db26
      Ronald S. Bultje authored
      Change-Id: I96b8058f6dfecf8aa3e152cdcbfd7e10071fbbc9
    • Ronald S. Bultje's avatar
      Merge scale_factors and scale_factors_uv. · 5ebe503f
      Ronald S. Bultje authored
      This prevents a duplicate memcpy of a 128-byte struct every time
      set_scale_factors() is called (which is a lot), thus leading to a
      decrease from 3.7 MB to 1.85 MB of struct copying per 64x64 block
      RD/partition loop.
      Overall, this decreases encoding time of the first 50 frames of bus
      @ 1500kbps (speed 0) from 1min5.9 to 1min4.9, i.e. about a 1.5%
      overall speedup. We can likely get more gains by removing the copy
      of the other struct (and replacing it with an indexing) as well.
      Change-Id: I3dceb7e79f71e6fe911b11cc994cf89a869dde7a
    • Ronald S. Bultje's avatar
      Do in-place UV intra mode selection. · df4b4fab
      Ronald S. Bultje authored
      This means we only do UV intra mode selection if we find any intra
      mode to actually be useful at all; in addition, we only do UV intra
      mode selection for the transform sizes that were selected, rather
      than all sizes available in this partition.
      First 50 frames of bus @ 1500kbps (speed 0) gains about 5% with this
      Change-Id: I7b461eb8b803247f57896c5a9505f745b55502b3
    • Ronald S. Bultje's avatar
      Change break statement in a 2d loop to a return statement. · e54a5782
      Ronald S. Bultje authored
      The break statement only breaks out of the nested loop, not the
      top-level loop, so it doesn't always work as intended. Changing it
      to a return statement does what's intended.
      Change-Id: I585419823b39a04ec8826b1c8a216099b1728ba7