1. 03 Jun, 2011 - 2 commits
    • Scott LaVarnway's avatar
      Removed unnecessary bmi motion vector stores. · f1d6cc79
      Scott LaVarnway authored
      left_block_mv and above_block_mv will return the MB
      motion vector for non SPLITMV macro blocks.
      
      Change-Id: I58dbd7833b4fdcd44b6b72e98ec732c93c2ce4f4
      f1d6cc79
    • Yunqing Wang's avatar
      Adjust bounds checking for hex search in real-time mode · e5c236c2
      Yunqing Wang authored
      Currently, hex search couldn't guarantee the motion vector(MV)
      found is within the limit of maximum MV. Therefore, very large
      motion vectors resulted from big motion in the video could cause
      encoding artifacts. This change adjusted hex search bounds
      checking to make sure the resulted motion vector won't go out
      of the range. James Berry, thank you for finding the bug.
      
      Change-Id: If2c55edd9019e72444ad9b4b8688969eef610c55
      e5c236c2
  2. 02 Jun, 2011 - 2 commits
    • Scott LaVarnway's avatar
      Removed B_MODE_INFO · 773768ae
      Scott LaVarnway authored
      Declared the bmi in BLOCKD as a union instead of B_MODE_INFO.
      Then removed B_MODE_INFO completely.
      
      Change-Id: Ieb7469899e265892c66f7aeac87b7f2bf38e7a67
      773768ae
    • Ronald S. Bultje's avatar
      Don't allow very short GF groups even when the GF is predicted from an ARF. · 9f002bee
      Ronald S. Bultje authored
      This is basically a slightly modified version of the previous patch,
      and it has a moderately positive effect (SSIM/PSNR both +0.08% avg
      on derf-set). Most clips show no change, except waterfall/coastguard,
      each ~ +0.8% SSIM/PSNR. You can see similar effects in other clips
      by shortening their length to terminate at a very short last group
      of frames.
      
      Change-Id: I7a70de99ca1f9fe6a8b6ca7a6e30e8a4b64383e4
      9f002bee
  3. 01 Jun, 2011 - 5 commits
    • Yaowu Xu's avatar
      further clean up of errorperbit and sadperbit · 5b2fb329
      Yaowu Xu authored
      this commit makes the usage errorperbit and sadperbit consistent for
      encoding modes and passes. Removed all different magic weight factors
      associated with errorperbit. Now 1/2 is used for both sadperbit16 and
      sadperbit4, the /2 operation is merged into initializations of the 2
      variables.
      
      Tests on cif set show .23%, 0.18% and 0.19% gain by avg psnr, overall
      psnr and ssim respectively.
      
      Change-Id: Ifa285c3e065ce0a5a77addfc9f95aabf54ee270d
      5b2fb329
    • Henrik Lundin's avatar
      Bugfix in vp8dx_set_reference · 69ba6bd1
      Henrik Lundin authored
      The fb_idx_ref_cnt book-keeping was in error. Added an assert to
      prevent future errors in the reference count vector. Also fixed a
      pointer syntax error.
      
      Change-Id: I563081090c78702d82199e407df4ecc93da6f349
      69ba6bd1
    • Ronald S. Bultje's avatar
      Fix code under #if CONFIG_INTERNAL_STATS. · 34ba1876
      Ronald S. Bultje authored
      Change-Id: Iccbd78d91c3071b16fb3b2911523a22092652ecd
      34ba1876
    • Yaowu Xu's avatar
      remove some magic weights associated with sad_per_bit · 50916c6a
      Yaowu Xu authored
      sad_per_bit has been used for a number of motion vector search routines
      with different magic weights: 1, 1/2 and 1/4. This commit remove these
      magic numbers and use 1/2 for all motion search routines, also reformat
      a number of source code lines to within 80 column limit.
      
      Test on cif set shows overall effect is neutral on all metrics. <=0.01%
      
      Change-Id: I8a382821fa4cffc9c0acf8e8431435a03df74885
      50916c6a
    • Tero Rintaluoma's avatar
      neon fast quantize block pair · 61f0c090
      Tero Rintaluoma authored
      vp8_fast_quantize_b_pair_neon function added to quantize
      two adjacent blocks at the same time to improve performance.
       - Additional 3-6% speedup compared to neon optimized fast
         quantizer (Tanya VGA@30fps, 1Mbps stream, cpu-used=-5..-16)
      
      Change-Id: I3fcbf141e5d05e9118c38ca37310458afbabaa4e
      61f0c090
  4. 31 May, 2011 - 2 commits
    • Scott LaVarnway's avatar
      vp8_pick_inter_mode code cleanup · 1a5a1903
      Scott LaVarnway authored
      Small code cleanups before attempting to reduce the size
      of bmi found in BLOCKD.
      
      Change-Id: Ie9c14adb53afd847716a75bcce067d0e6c04f225
      1a5a1903
    • John Koleszar's avatar
      Initialize first_time_stamp_ever · 0a72f568
      John Koleszar authored
      Misplaced #endif caused first_time_stamp_ever to only be initialized if
      CONFIG_INTERNAL_STATS was set.
      
      Change-Id: I2296a4ab00f7dfb767583edcc5d59b94f48c0621
      0a72f568
  5. 30 May, 2011 - 1 commit
    • Tero Rintaluoma's avatar
      adds preload for armv6 encoder asm · 5305e79e
      Tero Rintaluoma authored
      Added preload instructions to armv6 encoder optimizations.
      About 5% average speed-up on Tegra2 for VGA@30fps sequence.
      
      Change-Id: I41d74737720fb71ce7a316f07555357822f3347e
      5305e79e
  6. 27 May, 2011 - 3 commits
    • James Berry's avatar
      bug fix check frame buffer index before copy · 8795b525
      James Berry authored
      in onyx_if.c update_reference_frames() make
      sure that frame buffer indexes are not equal
      before preforming a buffer copy.  If two frames
      share the same buffer the flags will already be
      set correctly.
      
      Change-Id: Ida9b5516d08e3435c90f131d2dc19d842cfb536e
      8795b525
    • Yunqing Wang's avatar
      Use hex search for realtime mode speed>4 · 4d052bdd
      Yunqing Wang authored
      Test showed using hex search in realtime mode largely speed up
      encoding process, and still achieves similar quality like the
      diamond search we have. Therefore, removed the diamond search
      option.
      
      Change-Id: I975767d0ec0539f9f6ed7fdfc09506e39761b66c
      4d052bdd
    • Yunqing Wang's avatar
      Remove unused code · 2dc24635
      Yunqing Wang authored
      Hex search is not called in rdopt.c
      
      Change-Id: I67347f03e13684147a7c77fb9e9147e440bb5e8e
      2dc24635
  7. 26 May, 2011 - 1 commit
  8. 25 May, 2011 - 4 commits
    • Yaowu Xu's avatar
      fix the mix use of errorperbit and sadperbit · d8c525b8
      Yaowu Xu authored
      error_per_bit and sad_per_bit were designed as estimates of a bit worth
      of sum squared error and sum absolute difference respectively. Under
      this assumption, error_per_bit should be used in combination with 2nd
      order errors (variance or sum squared error) while sad_per_bit should
      be used in combination with 1st order SADs in motion estimation. There
      were a few places where sad_per_bit has been misused with variances,
      this commit changes to use error_per_bit for those places, also changes
      parameter names to properly indicate which constant is being used.
      
      On cif set, the change has a universal gain by all metrics: 0.13% by
      average/overall psnr and 0.1% by ssim.
      
      Change-Id: I4850fdcc3fd6886b30f784bd843f13dd401215fb
      d8c525b8
    • Yaowu Xu's avatar
      remove code not in use · 22c05c05
      Yaowu Xu authored
      Change-Id: I6e5e86235d341cce3b02abda26dbeb71940ed955
      22c05c05
    • Yunqing Wang's avatar
      Return sse value in vp8_variance SSE2 functions · b6679879
      Yunqing Wang authored
      Minor modification.
      
      Change-Id: I09511d38fd1451d5c4106a48acdb3f766ce59cb7
      b6679879
    • Attila Nagy's avatar
      Use var8x8 instead of get8x8var in VP8_UVSSE · a615c404
      Attila Nagy authored
        'sum' returned by get8x8var is not used and var8x8 has optimizations
        for more platforms.
      
      Change-Id: I4a907fb1a05f285669fb0b95dc71d42182c980f6
      a615c404
  9. 24 May, 2011 - 5 commits
    • Yunqing Wang's avatar
      Fix a bug happening while encoding at profile=3 · d75eb736
      Yunqing Wang authored
      While profile=3, there is no sub-pixel search. Distortion and SSE
      have to calculated using get_inter_mbpred_error().
      
      Change-Id: Ifb36e17eef7750af93efa7d0e2870142ef540184
      d75eb736
    • Scott LaVarnway's avatar
      Use int_mv instead of MV in vp8_mv_cont · a39321f3
      Scott LaVarnway authored
      Less operations.
      
      Change-Id: Ibb9cd5ae66b8c7c681c9a654d551c8729c31c3ae
      a39321f3
    • Scott LaVarnway's avatar
      Removed unused variable warnings · cfab2cae
      Scott LaVarnway authored
      Change-Id: I6e5e921f03dc15a72da89a457848d519647677a3
      cfab2cae
    • Scott LaVarnway's avatar
      MODE_INFO size reduction · e11f21af
      Scott LaVarnway authored
      Declared the bmi in MODE_INFO as a union instead of B_MODE_INFO.
      This reduced the memory footprint by 518,400 bytes for 1080
      resolutions.  The decoder performance improved by ~4% for the
      clip used and the encoder showed very small improvements. (0.5%)
      This reduction was first mentioned to me by John K. and in a
      later discussion by Yaowu.
      This is WIP.
      
      Change-Id: I8e175fdbc46d28c35277302a04bee4540efc8d29
      e11f21af
    • Henrik Lundin's avatar
      Fixing bug in VP8_SET_REFERENCE decoder control command · a126cd17
      Henrik Lundin authored
      In vp8dx_set_reference, the new reference image is written to an
      unused reference frame buffer.
      
      Change-Id: I9e4f2cef5a011094bb7ce7b2719cbfe096a773e8
      a126cd17
  10. 23 May, 2011 - 2 commits
  11. 20 May, 2011 - 2 commits
  12. 19 May, 2011 - 9 commits
    • James Berry's avatar
      bug fix active_worst_quality set below active_best_quality · caa1b28b
      James Berry authored
      fixed a bug where active_worst_quality could be set
      below active_best_quality which could result in an
      infinite loop.
      
      Change-Id: I93c229c3bc5bff2a82b4c33f41f8acf4dd194039
      caa1b28b
    • John Koleszar's avatar
      cleanup: collect twopass variables · 63cb1a7c
      John Koleszar authored
      This patch collects the twopass specific memebers of VP8_COMP into a
      dedicated struct. This is a first step towards isolating the two pass
      rate control and aids readability by decorating these variables with
      the 'twopass.' namespace. This makes it clear to the reader in what
      contexts the variable will be valid, and is a hint that a section of
      code might be a good candidate to move to firstpass.c in later
      refactoring. There likely will be other rate control modes that need
      their own specific data as well.
      
      This notation is probably overly verbose in firstpass.c, so an
      alternative would be to access this struct through a pointer like
      'rc->' instead of 'cpi->firstpass.' in that file. Feel free to make
      a review comment to that effect if you prefer.
      
      Change-Id: I0ab8254647cb4b493a77c16b5d236d0d4a94ca4d
      63cb1a7c
    • John Koleszar's avatar
      Remove unused members of VP8_COMP · 04849772
      John Koleszar authored
      Various members that were either completely unreferenced or written
      and not read.
      
      Change-Id: Ie41ebac0ff0364a76f287586e4fe09a68907806e
      04849772
    • Scott LaVarnway's avatar
      Using partition_info instead of blockd info for splitmv · 99b97576
      Scott LaVarnway authored
      The partition_info struct contains info just for SPLITMV,
      so it should be used instead of BLOCKD.  Eventually, I want
      to reduce the size of B_MODE_INFO struct found in BLOCKD, so
      this is the first step toward that goal.
      Also, since SPLITMV is not supported in vp8_pick_inter_mode(),
      the unnecessary mem copies and checks were removed.  For rt
      encodes, this gave a slight performance improvement.
      
      Change-Id: I5585c98fa9d5acbde1c7e0f452a01d9ecc080574
      99b97576
    • John Koleszar's avatar
      Fix segv without --enable-error-concealment · 7def9022
      John Koleszar authored
      Missed wrapping one function call in #if CONFIG_ERROR_CONCEALMENT.
      
      Change-Id: I5746b1e6e4531670dbed1130467331fe309bdcae
      7def9022
    • Stefan Holmer's avatar
      Adding error-concealment to the decoder. · d04f8523
      Stefan Holmer authored
      The error-concealer is plugged in after any motion vectors have been
      decoded. It tries to estimate any missing motion vectors from the
      motion vectors of the previous frame. Intra blocks with missing
      residual are replaced with inter blocks with estimated motion vectors.
      
      This feature was developed in a separate sandbox
      (sandbox/holmer/error-concealment).
      
      Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
      d04f8523
    • John Koleszar's avatar
      Make activity masking functions static · a84177b4
      John Koleszar authored
      These don't need extern linkage.
      
      Change-Id: I21220ada926380a75ff654f24df84376ccc49323
      a84177b4
    • John Koleszar's avatar
      Move quantizer init functions to quantize.c · 87254e0b
      John Koleszar authored
      Group related functions together.
      
      Change-Id: I92fd779225b75a7204650f1decb713142c655d71
      87254e0b
    • Attila Nagy's avatar
      Fixed iwalsh_neon build problems with RVDS4.1 · f96d56c4
      Attila Nagy authored
      rvct 4.1 was complaining about vstmia.16, store multiple expects 64 data type.
      optimized the implementation.
      
      Change-Id: I0701052cabd685c375637bbc3796ff6d88f5972c
      f96d56c4
  13. 18 May, 2011 - 1 commit
    • Yunqing Wang's avatar
      Fix a bug in vp8_clamp_mv function · 9c62f941
      Yunqing Wang authored
      Scott fixed the bug in MV clamping function in encoder, which
      could cause artifacts.
      
      Change-Id: Id05f2794c43c31cdd45e66179c8811f3ee452cb9
      9c62f941
  14. 17 May, 2011 - 1 commit