1. 30 Aug, 2010 3 commits
  2. 27 Aug, 2010 2 commits
    • Timothy B. Terriberry's avatar
      Fix harmless off-by-1 error. · 7a8e0a29
      Timothy B. Terriberry authored
      The memory being zeroed in vp8_update_mode_info_border() was just
       allocated with calloc, and so the entire function is actually
       redundant, but it should be made correct in case someone expects
       it to actually work in the future.
      
      Change-Id: If7a84e489157ab34ab77ec6e2fe034fb71cf8c79
      7a8e0a29
    • Timothy B. Terriberry's avatar
      Fix two-pass framrate for Y4M input. · e105e245
      Timothy B. Terriberry authored
      The timebase was being set to the value in the Y4M file on each
       pass, but only doubled to account for the altref placement on
       the first past.
      This avoids reseting it on the second pass.
      
      Change-Id: Ie342639bad1ffe9c2214fbbaaded72cfed835b42
      e105e245
  3. 25 Aug, 2010 1 commit
  4. 24 Aug, 2010 2 commits
    • Fritz Koenig's avatar
      Allow --cpu= to work for x86. · a790906c
      Fritz Koenig authored
      --cpu was already implemented for most of our embedded
      platforms, this just extends it to x86.  Corner case for
      Atom processor as it doesn't respond to the --march=
      option under icc.
      
      Change-Id: I2d57a7a6e9d0b55c0059e9bc46cfc9bf9468c185
      a790906c
    • Johann's avatar
      clean up compiler warnings · 5c244398
      Johann authored
      did a test compile with clang and got rid of some warnings that have
      been annoying me for a while:
      vp8/decoder/detokenize.c: In function 'vp8_init_detokenizer':
      vp8/decoder/detokenize.c:121: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:122: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:123: warning: assignment from incompatible pointer type
      vp8/decoder/detokenize.c:124: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:125: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:128: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:129: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:130: warning: assignment discards qualifiers from pointer target type
      vp8/decoder/detokenize.c:131: warning: assignment discards qualifiers from pointer target type
      
      Change-Id: I78ddab176fe47cbeed30379709dc7bab01c0c2e4
      5c244398
  5. 23 Aug, 2010 2 commits
    • Johann's avatar
      update structures · d73217ab
      Johann authored
      mbmi and eob moved in previous commits
      
      Change-Id: I30a2eba36addf89ee50b406ad4afdd059a832711
      d73217ab
    • Fritz Koenig's avatar
      Rework idct calling structure. · 93c32a55
      Fritz Koenig authored
      Moving the eob structure allows for a non-struct based
      function to handle decoding an entire mb of
      idct/dequant/recon data.  This allows for SIMD functions
      to idct/dequant/recon multiple blocks at once.
      
      SSE2 implementation gives 3% gain on Atom.
      
      Change-Id: I8a8f3efd546ea4e0535f517d94f347cfb737c9c2
      93c32a55
  6. 20 Aug, 2010 1 commit
    • John Koleszar's avatar
      increase rate control buffer level precision · 8e7ebacb
      John Koleszar authored
      The external API exposes the RC initial/optimal/full buffer level in
      milliseconds, but this value was truncated internally to seconds. This
      patch allows the use of the full precision during the conversion from
      time to bits.
      
      Change-Id: If8dd2a87614c05747f81432cbe75dd9e6ed2f04e
      8e7ebacb
  7. 19 Aug, 2010 4 commits
    • Jim Bankoski's avatar
      Revert "Removed ssse3 sixtap code" · b0660457
      Jim Bankoski authored
      This reverts commit 6ea5bb85.
      b0660457
    • Johann's avatar
      cleanup simple loop filter · 52852da7
      Johann authored
      move some things around, reorder some instructions
      
      constant 0 is used several times. load it once per call in horiz,
      once per loop in vert.
      
      separate saturating instructions to avoid stalls.
      
      just use one usub8 call to set GE flags, rather than uqsub8 followed by
      usub8 w/ 0
      
      document some stalls for further consideration
      
      Change-Id: Ic3877e0ddbe314bb8a17fd5db73501a7d64570ec
      52852da7
    • Johann's avatar
      Merge "fix armv6 simpleloop filter" · a522be29
      Johann authored
      a522be29
    • Johann's avatar
      fix armv6 simpleloop filter · 467a0b99
      Johann authored
      test cases were causing a crash because the count was being read
      incorrectly. after fixing that, noticed that the output was not
      matching. fixed that.
      
      Change-Id: Idb0edb887736bd566a3cf6d4aa1a03ea8d20eb27
      467a0b99
  8. 18 Aug, 2010 1 commit
  9. 16 Aug, 2010 3 commits
  10. 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
  11. 12 Aug, 2010 4 commits
    • Johann's avatar
      framework for assembly version of the detokenizer · 9602799c
      Johann authored
      adds a compile time option: --enable-arm-asm-detok which pulls in
      vp8/decoder/arm/detokenize.asm
      
      currently about break even speed wise, but changes are pending to
      the fill code (branch and load 3 bytes versus conditionally always
      load one) and the error handling. Currently it doesn't handle zero
      runs or overrunning the buffer.
      
      this is really just so i don't have to rebase my changes all the
      time to run benchmarks - now just need to replace one file!
      
      Change-Id: I56d0e2354dc0ca3811bffd0e88fe1f952fa6c797
      9602799c
    • Johann's avatar
      update structure · 633646b7
      Johann authored
      mode_info_context->mbmi no longer gets copied up a level
      
      Change-Id: Icd2d27d381909721326c34594a1ccdc26d48a995
      633646b7
    • Johann's avatar
      remove unused definition · 1ec7981c
      Johann authored
      asm_offsets contains some definitions which are no longer used. this
      was one of them. v6 build works now
      
      Change-Id: If370cfa8acd145de4fead2d9a11b048fccc090df
      1ec7981c
    • 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
  12. 11 Aug, 2010 9 commits
    • Scott LaVarnway's avatar
      f5615b61
    • John Koleszar's avatar
      cosmetics: add missing 2D array braces · d22e2968
      John Koleszar authored
      Silences compile warning.
      
      Change-Id: I4b207d97f8570fe29aa2710e4ce4f02e7e43b57a
      d22e2968
    • John Koleszar's avatar
      avoid negative array subscript warnings · 392a9582
      John Koleszar authored
      The mv_ref and sub_mv_ref token encodings are indexed from NEARESTMV
      and LEFT4X4, respectively, rather than being zero-based like the
      other token encodings.
      
      Change-Id: I3699c3f84111209ecfb91097c4b900773e9a3ad5
      392a9582
    • Scott LaVarnway's avatar
      Finished vp8_sixtap_predict4x4_ssse3 function · b07e5b6f
      Scott LaVarnway authored
      Added vp8_filter_block1d4_h6_ssse3 and vp8_filter_block1d4_v6_ssse3
      assembly routines.  Also removed unused assembly.
      
      Change-Id: I01c1021835f2edda9da706822345f217087ca0d0
      b07e5b6f
    • Johann's avatar
      rename DETOK_[AL] · c0ba42d3
      Johann authored
      everything else uses lowercase detok
      
      Change-Id: I9671e2e90eb2961208dfa81c00b3accb5749ec04
      c0ba42d3
    • 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
      Removed duplicate functions · c404fa42
      Yaowu Xu authored
      Change-Id: Ie587972ccefd3c762b8cdf8ef39345cd22924b9b
      c404fa42
    • 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
    • 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
  13. 10 Aug, 2010 2 commits
    • Scott LaVarnway's avatar
      Added ssse3 version of sixtap filters · e4fe8669
      Scott LaVarnway authored
      Improved decoder performance by 9% for the clip used.
      
      Change-Id: I8fc5609213b7bef10248372595dc85b29f9895b9
      e4fe8669
    • Yunqing Wang's avatar
      First modification of multi-thread decoder · ba2e107d
      Yunqing Wang authored
      This is the first modification of VP8 multi-thread decoder, which uses
      same threads to decode macroblocks and then do loopfiltering for each
      frame.
      
      Inspired by Rob Clark, synchronization was done on every 8 macroblocks
      instead of every macroblock to reduce lock contention.
      
      Comparing with the original code, this implementation gave about 15%-
      20% performance gain while decoding my test clips on a Core2 Quad
      platform (Linux).
      
      The work is not done yet.
      
      Test on other platforms are needed.
      
      Change-Id: Ice9ddb0b511af1359b9f71e65066143c04fef3b5
      ba2e107d
  14. 09 Aug, 2010 1 commit
    • John Koleszar's avatar
      Mark loopfilter C functions as static · 618c7d27
      John Koleszar authored
      Clang defaults to C99 mode, and inline works differently in C99.
      (gcc, on the other hand, defaults to a special gnu-style inlining,
      which uses different syntax.)   Making the functions static makes sure
      clang doesn't decide to discard a function because it's too large to
      inline.
      
      Thanks to eli.friedman for the patch.
      
      Fixes http://code.google.com/p/webm/issues/detail?id=114
      
      Change-Id: If3c1c3c176eb855a584a60007237283b0cc631a4
      618c7d27
  15. 02 Aug, 2010 4 commits
    • John Koleszar's avatar
      cfb204ea
    • John Koleszar's avatar
      configure: support directories containing .o · 4e6827a0
      John Koleszar authored
      Fixes http://code.google.com/p/webm/issues/detail?id=96
      
      The regex which postprocesses the gcc make-deps (-M) output was too
      greedy and matching in the dependencies part of the rule rather than
      the target only. The patch provided with the issue was not correct, as
      it tried to match the .o at the end of the line, which isn't correct
      at least for my GCC version. This patch matches word characters
      instead of .*
      
      Thanks to raimue and the MacPorts community for isolating this issue.
      
      Change-Id: I28510da2252e03db910c017101d9db12e5945a27
      4e6827a0
    • Jan Kratochvil's avatar
      nasm: avoid space before the :data symbol type. · 0e8f108f
      Jan Kratochvil authored
      global label:data
                 ^^
      
      Provide nasm compatibility.  No binary change by this patch with yasm
      on {x86_64,i686}-fedora13-linux-gnu.  Few longer opcodes with nasm on
      {x86_64,i686}-fedora13-linux-gnu have been checked as safe.
      
      Change-Id:	I10f17eb1e4d4a718d4ebd1d0ccddc807c365e021
      0e8f108f
    • Jan Kratochvil's avatar
      nasm: end labels with colon (':') · 0327d3df
      Jan Kratochvil authored
      Labels should end by colon (':'), nasm requires it.
      
      Provide nasm compatibility.  No binary change by this patch with yasm
      on {x86_64,i686}-fedora13-linux-gnu.  Few longer opcodes with nasm on
      {x86_64,i686}-fedora13-linux-gnu have been checked as safe.
      
      Change-Id: I0b2ec6f01afb061d92841887affb5ca0084f936f
      0327d3df