1. 23 Jul, 2010 - 3 commits
    • Paul Wilkins's avatar
      Rate control bug with long key frame interval. · 9404c7db
      Paul Wilkins authored
      In two pass encodes, the calculation of the number of bits
      allocated to a KF group had the potential to overflow for high data
      rates if the interval is very long.
      
      We observed the problem in one test clip where there was one
      section where there was an 8000 frame gap between key frames.
      
      Change-Id: Ic48eb86271775d7573b4afd166b567b64f25b787
      9404c7db
    • 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
    • Paul Wilkins's avatar
      80 character line length on Arnr LUT · d576690b
      Paul Wilkins authored
      Tweaked table to fit to 80 characters.
      
      Change-Id: Ie6ba80e0b31b33e23d2bf78599abe223369fcefb
      d576690b
  2. 22 Jul, 2010 - 1 commit
    • Fritz Koenig's avatar
      Remove CONFIG_NEW_TOKENS files. · 08eed049
      Fritz Koenig authored
      These files were out of date and no longer maintained.
      Token decoding has implemented the no-crash code which
      is incompatible with this arm assembly code.
      
      Change-Id: Ibf729886c56fca48181af60b44bda896c30023fc
      08eed049
  3. 19 Jul, 2010 - 3 commits
    • Paul Wilkins's avatar
      ARNR Lookup Table. · 0ba32632
      Paul Wilkins authored
      Change submitted for Adrian Grange. Convert threshold
      calculation in ARNR filter to a lookup table.
      
      Change-Id: I12a4bbb96b9ce6231ce2a6ecc2d295610d49e7ec
      0ba32632
    • Paul Wilkins's avatar
      Parameter limit change. · 02277b8a
      Paul Wilkins authored
      Change maximum ARNR filter width to 15.
      
      Change-Id: I3b72450ea08e96287445ec18810630ee2292954c
      02277b8a
    • Paul Wilkins's avatar
      Rate control fix for ARNR filtered frames. · bf18069c
      Paul Wilkins authored
      Previously we had assumed that it was necessary to give a full frame's
      bit allocation to the alt ref frame if it has been created through temporal
      filtering. This is not the case. The active max quantizer control
      insures that sufficient bits are allocated if needed and allocating a
      full frame's worth of bits creates an excessive overhead for the ARF.
      
      Change-Id: I83c95ed7bc7ce0e53ccae6ff32db5a97f145937a
      bf18069c
  4. 16 Jul, 2010 - 1 commit
  5. 12 Jul, 2010 - 1 commit
  6. 07 Jul, 2010 - 2 commits
  7. 01 Jul, 2010 - 1 commit
    • Adrian Grange's avatar
      Fix bug in 1st pass motion compensation · 0618ff14
      Adrian Grange authored
      In the case where the best reference mv is not (0,0) a secondary
      search is carried out centered on (0,0). However, rather than
      sending tmp_err into the search function, motion_error was
      inadvertently passed.
      
      As a result tmp_err remains set at INT_MAX and the (0,0)-based
      search result will never be selected, even if it is better.
      
      Change-Id: I3c82b246c8c82ba887b9d3fb4c9e0a0f2fe5a76c
      0618ff14
  8. 30 Jun, 2010 - 2 commits
  9. 29 Jun, 2010 - 3 commits
    • Yunqing Wang's avatar
      Improve SSE2 loopfilter functions · bead039d
      Yunqing Wang authored
      Restructured and rewrote SSE2 loopfilter functions. Combined u and
      v into one function to take advantage of SSE2 128-bit registers.
      Tests on test clips showed a 4% decoder performance improvement on
      Linux desktop.
      
      Change-Id: Iccc6669f09e17f2224da715f7547d6f93b0a4987
      bead039d
    • Paul Wilkins's avatar
      Further adjustment of RD behaviour with Q and Zbin. · 1ca39bf2
      Paul Wilkins authored
      Following conversations with Tim T (Derf) I ran a large number of
      tests comparing the existing polynomial expression with a simpler
      ^2 variant. Though the polynomial was sometimes a little better at
      the extremes of Q it was possible to get close for most clips and
      even a little better on some.
      
      This code also changes the way the RD multiplier is calculated
      when the ZBIN is extended to use a variant of the same ^2
      expression.
      
      I hope that this simpler expression will be easier to tune further
      as we expand our test set and consider adjustments based on content.
      
      Change-Id: I73b2564346e74d1332c33e2c1964ae093437456c
      1ca39bf2
    • Yaowu Xu's avatar
      Improve the accuracy of forward walsh-hadamard transform · b62d093e
      Yaowu Xu authored
      Besides the slight improvement in round trip error. This
      also fixes a sign bias in the forward transform, so the
      round trip errors are evenly distributed between +1s and
      -1s. The old bias seemed to work well with the dc sign bias
      in old fdct,  which no longer exist in the improved fdct.
      
      Change-Id: I8635e7be16c69e69a8669eca5438550d23089cef
      b62d093e
  10. 28 Jun, 2010 - 1 commit
    • Adrian Grange's avatar
      Fixed buffer selection for UV in AltRef filtering · aa8fe0d2
      Adrian Grange authored
      Corrected setting of "which_buffer" for U & V cases to match that
      used for Y, i.e. to refer to the temporally most recent frame of
      those to be filtered.
      
      Change-Id: Idf94b287ef47a05f060da3e61134a0b616adcb6b
      aa8fe0d2
  11. 24 Jun, 2010 - 5 commits
    • Scott LaVarnway's avatar
      Added first-pass sse2 version of Yaowu's new fdct. · f1a3b1e0
      Scott LaVarnway authored
      Change-Id: Ib479210067510162879c368428b92690591120b2
      f1a3b1e0
    • Yaowu Xu's avatar
      Redo the forward 4x4 dct · d0dd01b8
      Yaowu Xu authored
      The new fdct lowers the round trip sum squared error for a
      4x4 block ~0.12. or ~0.008/pixel. For reference, the old
      matrix multiply version has average round trip error 1.46
      for a 4x4 block.
      
      Thanks to "derf" for his suggestions and references.
      
      Change-Id: I5559d1e81d333b319404ab16b336b739f87afc79
      d0dd01b8
    • Fritz Koenig's avatar
      vp8cx : bestsad declared and initialized incorrectly. · a5906668
      Fritz Koenig authored
      bestsad needs to be a int and set to INT_MAX because at the end
      of the function it is compared to INT_MAX to determine if there
      was a match in the function.
      
      Change-Id: Ie80e88e4c4bb4a1ff9446079b794d14d5a219788
      a5906668
    • Fritz Koenig's avatar
      vp8cx : bestsad declared and initialized incorrectly. · cecdd73d
      Fritz Koenig authored
      bestsad should be an int initialized to INT_MAX.  The optimized
      SAD function expects a signed value for bestsad to use for comparison
      and early loop termination.  When no match is made, which is
      determined by a comparison of bestsad to INT_MAX, INT_MAX is returned.
      cecdd73d
    • John Koleszar's avatar
      Remove INLINE/FORCEINLINE · 5e344614
      John Koleszar authored
      These are mostly vestigial, it's up to the compiler to decide what
      should be inlined, and this collided with certain Windows platform SDKs.
      
      Change-Id: I80dd35de25eda7773156e355b5aef8f7e44e179b
      5e344614
  12. 21 Jun, 2010 - 4 commits
    • agrange's avatar
      Fix breakout thresh computation for golden & AltRef frames · a08df455
      agrange authored
      1. Unavailability of each reference frame type should be tested
      independently,
      2. Also, only the VP8_GOLD_FLAG needs to be tested before setting
      golden frame specific thresholds, and only VP8_ALT_FLAG needs
      testing before setting thresholds relevant to the AltRef frame.
      (Raised by gbvalor, in response to Issue 47)
      
      Change-Id: I6a06fc2a6592841d85422bc1661e33349bb6c3b8
      a08df455
    • agrange's avatar
      Changed unary operator from ! to ~ · daa5d0eb
      agrange authored
      Since the intent is
      to reset the appropriate bit in ref_frame_flags not to
      test a logic condition. Prior result would always have
      been ref_frame_flags being set to 0.
      (Issue reported by dgohman, issue 47)
      
      Change-Id: I2c12502ed74c73cf38e98c9680e0249c29e16433
      daa5d0eb
    • agrange's avatar
      Moved DOUBLE_DIVIDE_CHECK to denominator (was on numerator) · d4b99b8e
      agrange authored
      The DOUBLE_DIVIDE_CHECK macro prevents from divide by 0,
      so must be on the denominator to work as intended.
      
      Change-Id: Ie109242d52dbb9a2c4bc1e11890fa51b5f87ffc7
      d4b99b8e
    • Timothy B. Terriberry's avatar
      Fix a linker error on x86-64 Linux when not using a version script. · 9f814634
      Timothy B. Terriberry authored
      If the version script produced by the libvpx build system is not
       used when linking a shared library on x86-64 Linux, the constant
       data in the subpel filters produces R_X86_64_32 relocation errors
       due to the use of wrt rip addressing instead of
       wrt rip wrt ..gotpcrel.
      Instead of adding a new macro for this addressing mode, this patch
       sets the ELF visibility of these symbols to "hidden", which
       allows wrt rip addressing to work without a text relocation.
      This allows building a shared library without using the provided
       build system or a separate version script.
      Fixes http://code.google.com/p/webm/issues/detail?id=46
      
      Change-Id: Ie108f9d9a4352e5af46938bf4750d2302c1b2dc2
      9f814634
  13. 18 Jun, 2010 - 2 commits
  14. 16 Jun, 2010 - 1 commit
    • Timothy B. Terriberry's avatar
      Change bitreader to use a larger window. · c17b62e1
      Timothy B. Terriberry authored
      Change bitreading functions to use a larger window which is refilled less
       often.
      
      This makes it cheap enough to do bounds checking each time the window is
       refilled, which avoids the need to copy the input into a large circular
       buffer.
      This uses less memory and speeds up the total decode time by 1.6% on an ARM11,
       2.8% on a Cortex A8, and 2.2% on x86-32, but less than 1% on x86-64.
      
      Inlining vp8dx_bool_decoder_fill() has a big penalty on x86-32, as does moving
       the refill loop to the front of vp8dx_decode_bool().
      However, having the refill loop between computation of the split values and
       the branch in vp8_decode_mb_tokens() is a big win on ARM (presumably due to
       memory latency and code size: refilling after normalization duplicates the
       code in the DECODE_AND_BRANCH_IF_ZERO and DECODE_AND_LOOP_IF_ZERO cases.
      Unfortunately, refilling at the end of vp8dx_bool_decoder_fill() and at the
       beginning of each decode step in vp8_decode_mb_tokens() means the latter
       requires an extra refill at the end.
      Platform-specific versions could avoid the problem, but would require most of
       detokenize.c to be duplicated.
      
      Change-Id: I16c782a63376f2a15b78f8086d899b987204c1c7
      c17b62e1
  15. 15 Jun, 2010 - 1 commit
  16. 14 Jun, 2010 - 3 commits
  17. 12 Jun, 2010 - 1 commit
    • John Koleszar's avatar
      Make this/next iiratio unsigned. · cd475da8
      John Koleszar authored
      This patch addresses issue #79, which is a regression since commit
      28de670c "Fix RD bug." If the coded error value is zero, the iiratio
      calculation effectively multiplies by 1000000 by the
      DOUBLE_DIVIDE_CHECK macro. This can result in a value larger than
      INT_MAX, giving a negative ratio. Since the error values are
      conceptually unsigned (though they're stored in a double) this patch
      makes the iiratio values unsigned, which allows the clamping to work
      as expected.
      cd475da8
  18. 11 Jun, 2010 - 5 commits