1. 27 May, 2011 2 commits
    • 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
  2. 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
  3. 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
  4. 23 May, 2011 2 commits
  5. 20 May, 2011 2 commits
  6. 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
  7. 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
  8. 17 May, 2011 1 commit
  9. 13 May, 2011 1 commit
    • Paul Wilkins's avatar
      Restructure of activity masking code. · ff52bf36
      Paul Wilkins authored
      This commit restructures the mb activity masking code
      to better facilitate experimentation using different metrics
      etc. and also allows for adjustment of the zero bin either
      for encode only or both the encode and mode selection
      stages
      
      It also uses information from the current frame rather than
      the previous frame and the default strength has been
      reduced.
      
      Change-Id: Id39b19eace37574dc429f25aae810c203709629b
      ff52bf36
  10. 12 May, 2011 5 commits
    • John Koleszar's avatar
      Improve framerate adaptation · 5ed116e2
      John Koleszar authored
      This patch improves the accuracy of frame rate estimation by using a
      larger, 1 second window. It also more quickly adapts to step changes
      in the input frame rate (ie 30fps to 15fps)
      
      Change-Id: I39e48a8f5ac880b4c4b2ebd81049259b81a0218e
      5ed116e2
    • Scott LaVarnway's avatar
      Removed mv_bits_sadcost · 71a7501b
      Scott LaVarnway authored
      This sad cost is being generated but never used.
      
      Change-Id: I562eebdcb792b743770954feca365b5b37491ecd
      71a7501b
    • Scott LaVarnway's avatar
      Using int_mv instead of MV · 6b25501b
      Scott LaVarnway authored
      The compiler produces better assembly when using int_mv
      for assignments.  The compiler shifts and ors the two 16bit
      values when assigning MV.
      
      Change-Id: I52ce4bc2bfbfaf3f1151204b2f21e1e0654f960f
      6b25501b
    • Yunqing Wang's avatar
      Modification and issue fix in full-pixel refining search · b4da1f83
      Yunqing Wang authored
      Further modification and wrong implementation fix which caused
      refining_search and refining_searchx4 result mismatching.
      
      Change-Id: I80cb3a44bf5824413fd50c972e383eebb75f9b6f
      b4da1f83
    • Yaowu Xu's avatar
      adjusting rd constant slightly by ~10% · bd9d8906
      Yaowu Xu authored
      This is to reflect the RD improvement in the encoder. The change has a
      small positive impact on quality (0.25% by VPXSSIM and 0.05% by PSNR)
      
      Change-Id: Ic66ffc19b10870645088c0624c85556f009fd210
      bd9d8906
  11. 11 May, 2011 1 commit
    • Yaowu Xu's avatar
      remove a variable no longer in use · f7cf439b
      Yaowu Xu authored
      The variable is introduced in commit 2e53e9e5 to make more use of
      trellis quantization, but this is no longer necessary after RDMULT
      was made adaptive in a number of later commits.
      
      Change-Id: I7420522ec7723f38cf77033466c25afb405d52ae
      f7cf439b
  12. 10 May, 2011 1 commit
  13. 09 May, 2011 2 commits
    • Yunqing Wang's avatar
      Use diamond search to replace full search in full-pixel refining search · cb7b1fb1
      Yunqing Wang authored
      In NEWMV mode, currently, full search is used as the refining search
      after n-step search. By replacing it with an iterative diamond search
      of radius 1 largely reduced the computation complexity, but still
      maintained the same encoding quality since the refining search is
      done for every macroblock instead of only a small precentage of
      macroblocks while using full search.
      
      Tests on the test set showed a 3.4% encoding speed increase with none
      psnr & ssim loss.
      
      Change-Id: Ife907d7eb9544d15c34f17dc6e4cfd97cb743d41
      cb7b1fb1
    • Johann's avatar
      clean up unused variable warnings · a7d4d3c5
      Johann authored
      Change-Id: I9467d7a50eac32d8e8f3a2f26db818e47c93c94b
      a7d4d3c5
  14. 06 May, 2011 4 commits
    • Yaowu Xu's avatar
      fix a bug related to gf_active_flags in multi-threaded encoder · 89c6017c
      Yaowu Xu authored
      Paul pointed out that the pointer to the gf_active_flags is not being
      properly incremented in multithreaded encoder. This commit fixes the
      issue by making sure the gf_active_ptr points to the starting of next
      group of mb rows.
      
      Change-Id: I3246e657d23beabb614dfb880733a68a5fd7e34c
      89c6017c
    • John Koleszar's avatar
      Don't override active_worst_quality in 2 pass · abc9958c
      John Koleszar authored
      Commit db5057c7 introduced a bug in that the active_worst_quality
      selected by the 2 pass rate controller was being overridden for key
      frames, causing a severe quality loss.
      
      Change-Id: I4865a6fbe3e94e9b4fb9271c7dd68b455d7b371d
      abc9958c
    • Tero Rintaluoma's avatar
      neon fast quantizer updated · 33fa7c4e
      Tero Rintaluoma authored
      vp8_fast_quantize_b_neon function updated and further optimized.
       - match current C implementation of fast quantizer
       - updated to use asm_enc_offsets for structure members
       - updated ads2gas scripts to handle alignment issues
      
      Change-Id: I5cbad9c460ad8ddb35d2970a8684cc620711c56d
      33fa7c4e
    • Aron Rosenberg's avatar
      Fix semaphore emulation on Windows · eeb81173
      Aron Rosenberg authored
      The existing emulation of posix semaphores on Windows uses SetEvent()
      and WaitForSingleObject(), which implements a binary semaphore, not a
      counting semaphore as implemented by posix. This causes deadlock when
      used with the expected posix semantics. Instead, this patch uses the
      CreateSemaphore() and ReleaseSemaphore() calls (introduced in Windows
      2000) which have the expected behavior.
      
      This patch also reverts commit eb16f00c, which split a semaphore that
      was being used with counting semantics into two binary semaphores.
      That commit is unnecessary with corrected emulation.
      
      Change-Id: If400771536a27af4b0c3a31aa4c4e9ced89ce6a0
      eeb81173