1. 17 Feb, 2012 1 commit
    • Attila Nagy's avatar
      Update encoder mb_skip_coeff and prob_skip_false calculation · ce42e79a
      Attila Nagy authored
      mode_info_context->mbmi.mb_skip_coeff has to always reflect the
      existence or not of coeffs for a certain MB. The loopfilter needs this
      info.
      mb_skip_coeff is either set by the vp8_tokenize_mb or has to be set to
      1 when the MB is skipped by mode selection. This has to be done
      regardless of the mb_no_coeff_skip value.
      
      prob_skip_false is needed just when mb_no_coeff_skip is 1. No need to
      keep count of both skip_false and skip_true as they are complementary
      (skip_true+skip_false = total_mbs)
      
      Change-Id: I3c74c9a0ee37bec10de7bb796e408f3e77006813
      ce42e79a
  2. 13 Dec, 2011 1 commit
  3. 03 Nov, 2011 1 commit
    • Tero Rintaluoma's avatar
      Change use of eob in the encoder · e4f2ec7a
      Tero Rintaluoma authored
      Changed 'int eob' to 'char *eob' in BLOCKD so that both encoder and
      decoder will use eobs[25] array from MACROBLOCKD structure. In future,
      this will enable use of the decoder side IDCT in the encoder.
      
      Change-Id: I6e1c011628cb8864fd4a0b80f0279ce16a5ca978
      e4f2ec7a
  4. 30 Sep, 2011 1 commit
    • Scott LaVarnway's avatar
      Improved tokenize · ab00d209
      Scott LaVarnway authored
      For a realtime HD encodings, up to 1.6% gains seen.
      
      
      
      Change-Id: If45028e23db95124da63f9d38ffe06e05596cc6e
      ab00d209
  5. 15 Jul, 2011 1 commit
    • Tero Rintaluoma's avatar
      Tokenize MB optimized · 4e82f015
      Tero Rintaluoma authored
      Optimized C-code of the following functions:
       - vp8_tokenize_mb
       - tokenize1st_order_b
       - tokenize2nd_order_b
      Gives ~1-5% speed-up for RT encoding on Cortex-A8/A9
      depending on encoding parameters.
      
      Change-Id: I6be86104a589a06dcbc9ed3318e8bf264ef4176c
      4e82f015
  6. 28 Jun, 2011 1 commit
    • John Koleszar's avatar
      Use MAX_ENTROPY_TOKENS and ENTROPY_NODES more consistently · b32da7c3
      John Koleszar authored
      There were many instances in the code of vp8_coef_tokens and
      vp8_coef_tokens-1, which was a preprocessor macro despite the naming
      convention. Replace these with MAX_ENTROPY_TOKENS and ENTROPY_NODES,
      respectively.
      
      Change-Id: I72c4f6c7634c94e1fa066cd511471e5592c748da
      b32da7c3
  7. 08 Jun, 2011 1 commit
  8. 07 Jun, 2011 1 commit
  9. 21 Apr, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed dc_diff from MB_MODE_INFO · 3698c1f6
      Scott LaVarnway authored
      The dc_diff flag is used to skip loopfiltering.  Instead
      of setting this flag in the decoder/encoder, we now check
      for this condition in the loopfilter.
      
      Change-Id: Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931
      3698c1f6
  10. 20 Apr, 2011 1 commit
  11. 18 Mar, 2011 1 commit
    • John Koleszar's avatar
      Increase static linkage, remove unused functions · 429dc676
      John Koleszar authored
      A large number of functions were defined with external linkage, even
      though they were only used from within one file. This patch changes
      their linkage to static and removes the vp8_ prefix from their names,
      which should make it more obvious to the reader that the function is
      contained within the current translation unit. Functions that were
      not referenced were removed.
      
      These symbols were identified by:
      
        $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \
          | sort | grep '^ *1 '
      
      Change-Id: I59609f58ab65312012c047036ae1e0634f795779
      429dc676
  12. 14 Dec, 2010 1 commit
    • Johann's avatar
      shrink TOKENEXTRA and vp8_extra_bit_struct · 825adc46
      Johann authored
      Per John's previous change, shrink TOKENEXTRA from 20 to 8 bytes
      original: b7b1e6fb
      reverted: 41f4458a
      
      Also drop unused field from vp8_extra_bit_struct
      
      Update ARM ASM to deal with this change. In particular, Extra is signed
      and needs to be sign-extended when loaded.
      
      Change-Id: Ibd0ddc058432bc7bb09222d6ce4ef77e93a30b41
      825adc46
  13. 13 Dec, 2010 2 commits
  14. 12 Oct, 2010 1 commit
    • 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
  15. 16 Sep, 2010 1 commit
    • John Koleszar's avatar
      Reduce size of tokenizer tables · 147b125b
      John Koleszar authored
      This patch reduces the size of the global tables maintained by the
      tokenizer to 16k from 80k-96k. See issue #177.
      
      Change-Id: If0275d5f28389af11ac83c5d929d1157cde90fbe
      147b125b
  16. 09 Sep, 2010 1 commit
  17. 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
  18. 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
  19. 11 Aug, 2010 1 commit
    • Timothy B. Terriberry's avatar
      Add trellis quantization. · 8fa38096
      Timothy B. Terriberry authored
      Replace the exponential search for optimal rounding during
       quantization with a linear Viterbi trellis and enable it
       by default when using --best.
      Right now this operates on top of the output of the adaptive
       zero-bin quantizer in vp8_regular_quantize_b() and gives a small
       gain.
      It can be tested as a replacement for that quantizer by
       enabling the call to vp8_strict_quantize_b(), which uses
       normal rounding and no zero bin offset.
      Ultimately, the quantizer will have to become a function of lambda
       in order to take advantage of activity masking, since there is
       limited ability to change the quantization factor itself.
      However, currently vp8_strict_quantize_b() plus the trellis
       quantizer (which is lambda-dependent) loses to
       vp8_regular_quantize_b() alone (which is not) on my test clip.
      
      Patch Set 3:
      
      Fix an issue related to the cost evaluation of successor
      states when a coefficient is reduced to zero. With this
      issue fixed, now the trellis search almost exactly matches
      the exponential search.
      
      Patch Set 2:
      
      Overall, the goal of this patch set is to make "trellis"
      search to produce encodings that match the exponential
      search version. There are three main differences between
      Patch Set 2 and 1:
      a. Patch set 1 did not properly account for the scale of
      2nd order error, so patch set 2 disable it all together
      for 2nd blocks.
      b. Patch set 1 was not consistent on when to enable the
      the quantization optimization. Patch set 2 restore the
      condition to be consistent.
      c. Patch set 1 checks quantized level L-1, and L for any
      input coefficient was quantized to L. Patch set 2 limits
      the candidate coefficient to those that were rounded up
      to L. It is worth noting here that a strategy to check
      L and L+1 for coefficients that were truncated down to L
      might work.
      
      (a and b get trellis quant to basically match the exponential
      search on all mid/low rate encodings on cif set, without
      a, b, trellis quant can hurt the psnr by 0.2 to .3db at
      200kbps for some cif clips)
      (c gets trellis quant  to match the exponential search
      to match at Q0 encoding, without c, trellis quant can be
      1.5 to 2db lower for encodings with fixed Q at 0 on most
      derf cif clips)
      
      Change-Id:	Ib1a043b665d75fbf00cb0257b7c18e90eebab95e
      8fa38096
  20. 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
  21. 04 Jun, 2010 1 commit
  22. 18 May, 2010 1 commit