1. 26 Jan, 2012 1 commit
    • John Koleszar's avatar
      Correct clamping in use of vp8_find_near_mvs() · 83cef816
      John Koleszar authored
      Commit e06c242b introduced a change to call vp8_find_near_mvs() only
      once instead of once per reference frame by observing that the only
      effect that the frame had was on the bias applied to the motion
      vector. By keeping track of the sign_bias value, the mv to use could
      be flip-flopped by multiplying its components by -1.
      
      This behavior was subtley wrong in the case when clamping was applied
      to the motion vectors found by vp8_find_near_mvs(). A motion vector
      could be in-bounds with one sign bias, but out of bounds after
      inverting the sign, or vice versa. The clamping must match that done
      by the decoder.
      
      This change modifies vp8_find_near_mvs() to remove the clamping from
      that function. The vp8_pick_inter_mode() and vp8_rd_pick_inter_mode()
      functions instead track the correctly clamped values for both bias
      values, switching between them by simple assignment. The common
      clamping and inversion code is in vp8_find_near_mvs_bias()
      
      Change-Id: I17e1a348d1643497eca0be232e2fbe2acf8478e1
      83cef816
  2. 24 Jan, 2012 1 commit
    • John Koleszar's avatar
      Revert "Multithreaded encoder, late sync loopfilter" · 630d3b95
      John Koleszar authored
      This commit is incomplete, as it does not synchronize the loop filter
      before returning a handle to the reconstructed frame in
      vpx_codec_get_preview_frame(), which can cause (false?) failures
      when running the test_reconstruct_buffer test.
      
      This may be related to a bug that does cause visible artifacts, which
      is also under investigation.
      
      This reverts commit 380d64ec.
      
      Change-Id: Iad710941e7731d44fc2bde63bc63d6763cc4629e
      630d3b95
  3. 20 Jan, 2012 1 commit
    • Deb Mukherjee's avatar
      Overhauling the thresholds and mixing proportions for mfqe postprocessor. · 47dcd769
      Deb Mukherjee authored
      Makes the thresholds for the multiframe quality enhancement module
      depend on the difference between the base quantizers. Also modifies
      the mixing function to weigh the current low quality frame less if
      the difference in quantizer is large. With the above modifications
      mfqe works well for both scalable patterns as well as low quality
      key frames.
      
      Change-Id: If24e94f63f3c292f939eea94f627e7ebfb27cb75
      47dcd769
  4. 18 Jan, 2012 3 commits
  5. 17 Jan, 2012 1 commit
  6. 14 Jan, 2012 1 commit
    • Adrian Grange's avatar
      Fixed bugs in multi-layer code related to changing params · e479379a
      Adrian Grange authored
      When running multi-layer (ML) encodes and dynamically
      changing coding parameters on the fly (e.g. frame
      duration/rate, bandwidths allocated to each layer)
      the encoder would not produce sensible output.
      
      In certain cases the rate targeting would be
      hideously inaccurate.
      
      These fixes make it possible to change these coding
      parameters correctly and to maintain accurate control
      of the rate targeting.
      
      I also added the specification of the input timebase
      into the test program, vp8_scalable_patterns.c.
      
      Patch 2: Moved declaration to appease MS compiler)
      
      Change-Id: Ic8bb5a16daa924bb64974e740696e040d07ae363
      e479379a
  7. 11 Jan, 2012 2 commits
  8. 10 Jan, 2012 3 commits
  9. 06 Jan, 2012 2 commits
    • Ralph Giles's avatar
      Reduce the default kf_max_dist to 128. · 2a0d7b1a
      Ralph Giles authored
      The default maximum keyframe interval is 9999, or over five minutes
      at normal video rates. When the encoder produces streams with such
      a long interval seeking (with correct output) is more expensive,
      and live streaming is impossible.
      
      Of course the encoding application should set this parameter
      based on its knowledge of the intended use of the stream, but
      reducing the default gives better results for applications
      which do not.
      
      Change-Id: I900b15d74ce72ecc3ade4d43f758c5cf97a2098a
      2a0d7b1a
    • Scott LaVarnway's avatar
      Reduced the size of Y1Dequant and friends to [128][2] · 5f25d4c1
      Scott LaVarnway authored
      This patch removes the local copies of the dequantize
      constants and implements John's idea as described
      in "Make a local copy of the dequantized data" commit.
      
      Change-Id: Ic6b7d681f00bf63263f71ff1e39ab2f80729e8b2
      5f25d4c1
  10. 05 Jan, 2012 1 commit
    • Deb Mukherjee's avatar
      Multiframe quality enhancement postprocessing · 87aa846b
      Deb Mukherjee authored
      Adds a multiframe postprocessing module to enhance the quality of
      certain frames that are coded at lower quality than preceding frames.
      The module can be invoked from the commandline by use of the --mfqe
      option, and will be most beneficial for enhancing the quality of
      frames decoded using scalable patterns.
      
      Uses the vp8_variance_var16x16 and vp8_variance_sad16x16 function
      pointers to compute SAD and Variance of blocks.
      
      Change-Id: Id73d2a6e3572d07f9f8e36bbce00a4fc5ffd8961
      87aa846b
  11. 29 Dec, 2011 1 commit
  12. 28 Dec, 2011 3 commits
  13. 22 Dec, 2011 4 commits
    • John Koleszar's avatar
      Remove unnecessary ternary constructs · 0c2b2c79
      John Koleszar authored
      The code had a number of constructs like (condition)?1:0,
      which is redundant with C's semantics. In the cases where a boolean
      operator was used in the condition, simply remove the ternary part.
      Otherwise adjust the surrounding expression to remove the condition
      (eg, for rounding up. See pickinter.c and rdopt.c)
      
      Change-Id: Icb2372defa3783cf31857d90b2630d06b2c7e1be
      0c2b2c79
    • John Koleszar's avatar
      Remove legacy integer types · f56918ba
      John Koleszar authored
      Remove BOOL, INTn, UINTn, etc, in favor of C99-style fixed width
      types.
      
      Change-Id: I396636212fb5edd6b347d43cc940186d8cd1e7b5
      f56918ba
    • John Koleszar's avatar
      Use lookup tables for mode_check_freq · aa8650dd
      John Koleszar authored
      Mostly cosmetic. Trying for a more compact representation of speed
      selection thresholds.
      
      Change-Id: I339e7840049b91ad569aabbdc9c702a496110d3b
      aa8650dd
    • John Koleszar's avatar
      Use lookup tables for thresh_mult · efb4783d
      John Koleszar authored
      Mostly cosmetic. Trying for a more compact representation of speed
      selection thresholds.
      
      Change-Id: Icaebea632c7bb71ca8e07b4def04a046d4515e27
      efb4783d
  14. 21 Dec, 2011 7 commits
  15. 19 Dec, 2011 1 commit
    • John Koleszar's avatar
      remove armv6 files from armv5 build · 056bcc87
      John Koleszar authored
      Make bilinearfilter_arm.c compiled only when HAVE_ARMV6, as its definitions
      are v6 only. This is normally not a problem for static builds as the file
      is elided at link time, but this was not being done properly for the
      --enable-shared --enable-pic build.
      
      Change-Id: Ic800a7cde751f74f22555c5b247f99f9df5e550d
      056bcc87
  16. 16 Dec, 2011 4 commits
    • Yunqing Wang's avatar
      Merge mr_pick_inter_mode and pick_inter_mode · c647ec44
      Yunqing Wang authored
      Merged multi-resolution motion estimation with regular motion
      estimation function in order to remove duplicated part. This
      caused slight changes in multi-resulotion encoder quality &
      performance.
      
      Change-Id: Ib4ecc7acfebfe5eea959b5b91febae6db7b95fd1
      c647ec44
    • James Berry's avatar
      fix: make sure ss_err is large enough · 24196dd9
      James Berry authored
      increase size of ss_err by one to make
      sure there is room for 64 elements.
      
      Change-Id: I355cb8c499aa7da3b9675f2326a8d25a74bb88d2
      24196dd9
    • John Koleszar's avatar
      Avoid heap allocation of firstpass stats · 26c6a44c
      John Koleszar authored
      The total_stats, this_frame_stats, and total_left_stats structures
      were previously create by a heap allocation, despite being of fixed
      size. These structures were allocated and deallocated during
      {de,}allocate_compressor_data, which is reinvoked whenever the frame
      size changes. Unfortunately, this clobbers the total_stats and
      total_left_stats data.
      
      Historically, these were variable size at one time, due to the first
      pass motion map, which necessitated their being created by a unique
      heap allocation. However, this bug with the total_stats being
      clobbered has probably been present since that initial implementation.
      
      These structures are instead moved to be stored within the struct
      twopass_rc directly, rather than being heap allocated separately.
      
      Change-Id: I7f9e519e25c58b92969071f0e99fa80307e0682b
      26c6a44c
    • Scott LaVarnway's avatar
      Fixed mb_skip_coeff bug · 0ccefd2c
      Scott LaVarnway authored
      When mb_skip_coeff is set, the idct is not necessary.  Prior
      to this patch, the code would call idcts based on leftover
      eob information.  This patch will now skip the idct for
      SPLIT_MV and clear out the eobs for B_PRED, forcing the idct
      to be skipped.
      
      Change-Id: If5b0d2ed3ebd07789d30ec5160df927485fcaa17
      0ccefd2c
  17. 15 Dec, 2011 2 commits
    • Scott LaVarnway's avatar
      Moved dequant idct into common · a53d5a4c
      Scott LaVarnway authored
      These functions are now used by the encoder.
      This is WIP with the goal of creating a common idct/add for
      the encoder and decoder.  A boost of 1.8% was seen for
      the HD rt test clip used.
      
      [Tero] Added needed changes to ARM side.
      
      Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
      a53d5a4c
    • Yunqing Wang's avatar
      Only call vp8_find_near_mvs() once for each macroblock · e06c242b
      Yunqing Wang authored
      While doing motion search on a macroblock, we usually call
      vp8_find_near_mvs once per reference frame. Actually, for
      different reference frames, the only difference in calculating
      these near_mvs is they may have different sign_bias, which
      causes a sign change in resulting near_mvs. In this change, we
      only do find_near_mvs for the first reference frame. For other
      reference frames, only need to adjust the near_mvs according to
      that reference frame's sign_bias value.
      
      Change-Id: I661394b49c6ad79fed7d0f2eb2be239b9c56f149
      e06c242b
  18. 14 Dec, 2011 2 commits