1. 04 Feb, 2011 1 commit
    • John Koleszar's avatar
      correct quantizer initialization · 63fc44df
      John Koleszar authored
      The encoder was not correctly catching transitions in the quantizer
      deltas. If a delta_q was set, then the quantizer would be reinitialized
      on every frame, but if they transitioned to 0, the quantizer would
      not be reinitialized, leading to a encode-decode mismatch.
      
      This bug was triggered by commit 999e155f, which sets a Y2 delta Q
      for very low base Q levels.
      
      Change-Id: Ia6733464a55ee4ff2edbb82c0873980d345446f5
      63fc44df
  2. 01 Feb, 2011 4 commits
    • Scott LaVarnway's avatar
      Moved rd calculation into vp8_pick_intra4x4mby_modes · b18df82e
      Scott LaVarnway authored
      Then removed unnecessary code.
      
      Change-Id: I142658815d843c9396b07881dbdd8d387c43c90e
      b18df82e
    • Scott LaVarnway's avatar
      Removed intra_modes from vp8cx_encode_intra_macro_block · 4e7e79f7
      Scott LaVarnway authored
      Restructured function in order to eliminate the prediction
      modes save/restore.  Code cleanup also.
      
      Change-Id: I816e3b910de64d0f0f0ddc2398805c63263191e8
      4e7e79f7
    • Attila Nagy's avatar
      Improved encoder threading · 385c2a76
      Attila Nagy authored
      Reduce the number of sync points by letting each thread
      continue imediatly with a new MB row.
      Better multicore scaling, improves performance by 5-20% on ARM multicore.
      
      Change-Id: Ic97e4d1c4886a842c85dd3539a93cb217188ed1b
      385c2a76
    • Scott LaVarnway's avatar
      Removed prediction_error accumulation · 9e7fec21
      Scott LaVarnway authored
      from vp8cx_encode_intra_macro_block.  prediction_error is used when
      deciding if a frame should be a keyframe.  After reviewing this with
      Yaowu, it was pointed out that vp8cx_encode_intra_macro_block
      is only called for keyframes, so the accumulation is unnecessary.
      
      Change-Id: Id79dc81b80d4f5d124f3a0dba1b923887e2e1ec8
      9e7fec21
  3. 31 Jan, 2011 1 commit
    • Scott LaVarnway's avatar
      Possible bug in vp8cx_encode_intra_macro_block · 4a15e557
      Scott LaVarnway authored
      vp8_pick_intra4x4mby_modes uses the passed in distortion
      for an early breakout.  The best distortion was never saved
      and the distortion for TM_PRED was always used.
      
      Change-Id: Idbaf73027408a4bba26601713725191a5d7b325e
      4a15e557
  4. 28 Jan, 2011 1 commit
    • Adrian Grange's avatar
      Changed condition for using RD in Intra Mode · e9f513d7
      Adrian Grange authored
      The condition for using RD when selecting the intra coding mode
      for a MB is that the RD flag is set AND we're not in real-time
      mode.
      
      Previously the code used RD if either the RD flag was set OR
      we were not using real-time mode.
      
      Change-Id: Ic711151298468a3f99babad39ba8375f66d55a08
      e9f513d7
  5. 24 Jan, 2011 1 commit
    • Scott LaVarnway's avatar
      Added vp8_update_zbin_extra · 0ee525d6
      Scott LaVarnway authored
      vp8cx_mb_init_quantizer was being called for every mode checked
      in vp8_rd_pick_inter_mode.  zbin_extra is the only value that
      really needs to be recalculated.  This calculation is disabled
      when using the fast quantizer for mode selection.
      This gave a small performance boost (~.5% to 1%).
      Note: This needs to be verified with segmentation_enabled.
      
      Change-Id: I62716a870b3c82b4a998bdf95130ff0b02106f1e
      0ee525d6
  6. 18 Jan, 2011 1 commit
    • Paul Wilkins's avatar
      Further CQ, Key frame and ARF changes · 57136a26
      Paul Wilkins authored
      This code fixes a bug in the calculation of
      the minimum Q for alt ref frames.
      
      It also allows an extended gf/arf interval for sections
      of clips that completely static (or nearly so).
      
      Change-Id: I1a21aaa16d4f0578e5f99b13bebd78d59403c73b
      57136a26
  7. 11 Jan, 2011 1 commit
    • Henrik Lundin's avatar
      Remove unused local variables · 48c28fc4
      Henrik Lundin authored
      Removing unused local variables causing compiler warnings in
      Visual Studio.
      
      Change-Id: I0e2096303be1fdbc01428a6e57cca9796bb32c8a
      48c28fc4
  8. 07 Jan, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed cpi->target_bits_per_mb · 6dbdfe34
      Scott LaVarnway authored
      cpi->target_bits_per_mb is currently not being used,
      so delete it.  Also removed other unused code in rdopt.c.
      
      Change-Id: I98449f9030bcd2f15451d9b7a3b9b93dd1409923
      6dbdfe34
  9. 28 Dec, 2010 1 commit
    • Scott LaVarnway's avatar
      Use the fast quantizer for inter mode selection · 516ea846
      Scott LaVarnway authored
      Use the fast quantizer for inter mode selection and the
      regular quantizer for the rest of the encode for good quality,
      speed 1.  Both performance and quality were improved.  The
      quality gains will make up for the quality loss mentioned in
      I9dc089007ca08129fb6c11fe7692777ebb8647b0.
      
      Change-Id: Ia90bc9cf326a7c65d60d31fa32f6465ab6984d21
      516ea846
  10. 17 Dec, 2010 1 commit
    • John Koleszar's avatar
      Add psnr/ssim tuning option · b0da9b39
      John Koleszar authored
      Add a new encoder control, VP8E_SET_TUNING, to allow the application
      to inform the encoder that the material will benefit from certain
      tuning. Expose this control as the --tune option to vpxenc. The args
      helper is expanded to support enumerated arguments by name or value.
      
      Two tunings are provided by this patch, PSNR (default) and SSIM.
      Activity masking is made dependent on setting --tune=ssim, as the
      current implementation hurts speed (10%) and PSNR (2.7% avg,
      10% peak) too much for it to be a default yet.
      
      Change-Id: I110d969381c4805347ff5a0ffaf1a14ca1965257
      b0da9b39
  11. 11 Nov, 2010 1 commit
    • John Koleszar's avatar
      quantizer: fix assertion in fast quantizer path · 0a49747b
      John Koleszar authored
      The fast quantizer assembly code has not been updated to match the new
      exact quantizer, which was made the default in commit 6adbe090.
      Specifically, they are not aware of the potential for the coefficient
      to be scaled, which results in the quantized result exceeding the range
      of the DCT. This patch restores the previous behavior of using the
      non-shifted coefficients when in the fast quantizer code path, but
      unfortunately requires rebuilding the tables when switching between the
      two.
      
      Change-Id: I0a33f5b3850335011a06906f49fafed54dda9546
      0a49747b
  12. 10 Nov, 2010 1 commit
    • Paul Wilkins's avatar
      Tuning for the more exact quantizer. · 6adbe090
      Paul Wilkins authored
      Small changes to the default zero bin and rounding tables.
      Though the tables are currently the same for the Y1 and Y2 cases
      I have left them as separate tables in case we want to tune this later.
      
      There is now some adjustment of the zbin based on the prediction mode.
      Previously this was restricted to an adjustment for gf/arf 0,0 MV.
      
      The exact quantizer now marginal outperforms and is the default.
      
      The overall average gain is about 0.5%
      
      Change-Id: I5e4353f3d5326dde4e86823684b236a1e9ea7f47
      6adbe090
  13. 22 Oct, 2010 1 commit
    • Timothy B. Terriberry's avatar
      Convert [4][4] matrices to [16] arrays. · 8f75ea6b
      Timothy B. Terriberry authored
      Most of the code that actually uses these matrices indexes them as
       if they were a single contiguous array, and coverity produces
       reports about the resulting accesses that overflow the static
       bounds of the first row.
      This is perfectly legal in C, but converting them to actual [16]
       arrays should eliminate the report, and removes a good deal of
       extraneous indexing and address operators from the code.
      
      Change-Id: Ibda479e2232b3e51f9edf3b355b8640520fdbf23
      8f75ea6b
  14. 12 Oct, 2010 2 commits
    • John Koleszar's avatar
      Centralize mb skip state calculation · 13685747
      John Koleszar authored
      This patch moves the scattered updates to the mb skip state
      (mode_info_context->mbmi.mb_skip_coeff) to vp8_tokenize_mb. Recent
      changes to the quantizer exposed a bug where if a macroblock
      could be coded as a skip but isn't, the encoder would run the
      loopfilter but the decoder wouldn't, causing a reference buffer
      mismatch.
      
      The loopfilter is controlled by a flag called dc_diff. The decoder
      looks at the number of decoded coefficients when setting this flag.
      The encoder sets this flag based on the skip state, since any
      skippable macroblock should be transmitted as a skip. The coefficient
      optimization pass (vp8_optimize_b()) could change the coefficients
      such that a block that was not a skip becomes one. The encoder was
      not updating the skip state in this situation for intra coded blocks.
      
      The underlying issue predates it, but this bug was recently triggered
      by enabling trellis quantization on the Y2 block in commit dcd29e36,
      and by changing the quantizer range control in commit 305be4e4.
      
      Change-Id: I5cce5da0dbc2d22f7d79ee48149f01e868a64802
      13685747
    • Timothy B. Terriberry's avatar
      Add simple version of activity masking. · 8d0f7a01
      Timothy B. Terriberry authored
      This uses MB variance to change the RDO weight for mode decision
       and quantization.
      Activity is normalized against the average for the frame, which is
       currently tracked using feed-forward statistics.
      This could also be used to adjust the quantizer for the entire
       frame, but that requires more extensive rate control changes.
      This does not yet attempt to adapt the quantizer within the frame,
       but the signaling cost means that will likely only be useful at
       very high rates.
      
      Change-Id: I26cd7c755cac3ff33cfe0688b1da50b2b87b9c93
      8d0f7a01
  15. 29 Sep, 2010 1 commit
  16. 28 Sep, 2010 1 commit
  17. 09 Sep, 2010 1 commit
  18. 03 Sep, 2010 1 commit
    • Scott LaVarnway's avatar
      Reduced the size of MB_MODE_INFO · 0de458f6
      Scott LaVarnway authored
      Moved partition_bmi and partition_count out of MB_MODE_INFO and
      placed into MACROBLOCK.  Also reduced the size of other members
      of the MB_MODE_INFO struct.  For 1080p, the memory was reduced
      by 1,209,516 bytes.  The decoder performance appeared to improve
      by 3% for the clip used.
      Note:  The main goal for this change is to improve the decoder
      performance.  The encoder will be revisited at a later date for
      further structure cleanup.
      
      Change-Id: I4733621292ee9cc3fffa4046cb3fd4d99bd14613
      0de458f6
  19. 02 Sep, 2010 2 commits
  20. 31 Aug, 2010 1 commit
    • Scott LaVarnway's avatar
      Changed above and left context data layout · e85e6315
      Scott LaVarnway authored
      The main reason for the change was to reduce cycles in the token
      decoder. (~1.5% gain for 32 bit)  This layout should be more
      cache friendly.
      
      As a result of this change, the encoder had to be updated.
      
      Change-Id: Id5e804169d8889da0378b3a519ac04dabd28c837
      Note: dixie uses a similar layout
      e85e6315
  21. 13 Aug, 2010 1 commit
    • John Koleszar's avatar
      move segmentation_common to encoder · 80d3923a
      John Koleszar authored
      vp8_update_gf_useage_maps() is only used by the encoder. This patch
      fixes the ability to build in decode-only or encode-only
      configurations.
      
      Change-Id: I3a5211428e539886ba998e09e8abd747ac55c9aa
      80d3923a
  22. 12 Aug, 2010 1 commit
    • Scott LaVarnway's avatar
      Removed unnecessary MB_MODE_INFO copies · 9c7a0090
      Scott LaVarnway authored
      These copies occurred for each macroblock in the encoder and decoder.
      Thetemp MB_MODE_INFO mbmi was removed from MACROBLOCKD.  As a result,
      a large number compile errors had to be fixed.
      
      Change-Id: I4cf0ffae3ce244f6db04a4c217d52dd256382cf3
      9c7a0090
  23. 11 Aug, 2010 2 commits
    • Scott LaVarnway's avatar
      Moved gf_active code to encoder only · 99f46d62
      Scott LaVarnway authored
      The gf_active code is only used by the encoder, so it was moved from
      common and decoder.
      
      Change-Id: Iada15acd5b2b33ff70c34668ca87d4cfd0d05025
      99f46d62
    • Yaowu Xu's avatar
      Normalize quantizer's zero bin and rounding factors · 3b95a46c
      Yaowu Xu authored
      This patch changes a few numbers in the two constant arrays
      for quantizer's zerobin and rounding factors, in general to
      make the sum of the two factors for any Q to be 128.  While
      it might be beneficial to calibrate the two arrays for best
      quantizer performance, it is not the purpose of this patch.
      Normalizing the two arrays will enable quick optimization
      of the current faster quantizer, i.e .zerobin check can be
      removed.
      
      Change-Id: If9abfd7929bf4b8e9ecd64a79d817c6728c820bd
      3b95a46c
  24. 28 Jul, 2010 1 commit
    • Yaowu Xu's avatar
      Enable the switch between two versions of quantizer · f95c80b6
      Yaowu Xu authored
      To facilitate more testing related to quantizer and rate
      control, the old version quantizer is added back. old and
      new quantizer can be switched back and forth by define or
      un-define the macro "EXACT_QUANT".
      
      Change-Id: Ia77e687622421550f10e9d65a9884128a79a65ff
      f95c80b6
  25. 23 Jul, 2010 2 commits
    • Fritz Koenig's avatar
      Swap alt/gold/new/last frame buffer ptrs instead of copying. · 0ce39012
      Fritz Koenig authored
      At the end of the decode, frame buffers were being copied.
      The frames are not updated after the copy, they are just
      for reference on later frames.  This change allows multiple
      references to the same frame buffer instead of copying it.
      
      Changes needed to be made to the encoder to handle this.  The
      encoder is still doing frame buffer copies in similar places
      where pointer reference could be done.
      
      Change-Id: I7c38be4d23979cc49b5f17241ca3a78703803e66
      0ce39012
    • Timothy B. Terriberry's avatar
      Make the quantizer exact. · e04e2935
      Timothy B. Terriberry authored
      This replaces the approximate division-by-multiplication in the
       quantizer with an exact one that costs just one add and one
       shift extra.
      The asm versions have not been updated in this patch, and thus
       have been disabled, since the new method requires different
       multipliers which are not compatible with the old method.
      
      Change-Id: I53ac887af0f969d906e464c88b1f4be69c6b1206
      e04e2935
  26. 18 Jun, 2010 1 commit
    • John Koleszar's avatar
      cosmetics: trim trailing whitespace · 94c52e4d
      John Koleszar authored
      When the license headers were updated, they accidentally contained
      trailing whitespace, so unfortunately we have to touch all the files
      again.
      
      Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
      94c52e4d
  27. 04 Jun, 2010 1 commit
  28. 18 May, 2010 1 commit