1. 27 May, 2011 1 commit
    • 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
  2. 20 May, 2011 1 commit
  3. 19 May, 2011 4 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
    • John Koleszar's avatar
      Move quantizer init functions to quantize.c · 87254e0b
      John Koleszar authored
      Group related functions together.
      
      Change-Id: I92fd779225b75a7204650f1decb713142c655d71
      87254e0b
  4. 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
  5. 12 May, 2011 2 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
  6. 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
  7. 09 May, 2011 1 commit
    • 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
  8. 06 May, 2011 1 commit
    • 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
  9. 05 May, 2011 1 commit
    • Yunqing Wang's avatar
      Fix rare hang in multi-thread encoder on Windows · eb16f00c
      Yunqing Wang authored
      This patch is to fix a rare hang in multi-thread encoder that was
      only seen on Windows. Thanks for John's help in debugging the
      problem. More test is needed.
      
      Change-Id: Idb11c6d344c2082362a032b34c5a602a1eea62fc
      eb16f00c
  10. 03 May, 2011 1 commit
  11. 29 Apr, 2011 1 commit
  12. 26 Apr, 2011 2 commits
    • John Koleszar's avatar
      Refactor calc_iframe_target_size · db5057c7
      John Koleszar authored
      Combine calc_iframe_target_size, previously only used for forced
      keyframes, with calc_auto_iframe_target_size, which handled most
      keyframes.
      
      Change-Id: I227051361cf46727caa5cd2b155752d2c9789364
      db5057c7
    • John Koleszar's avatar
      Move pick_frame_size() to ratectrl.c · 81d2206f
      John Koleszar authored
      This is a first step in cleaning up the redundancies between
      vp8_calc_{auto_,}iframe_target_size. The pick_frame_size() function is
      moved to ratectrl.c, and made to be the primary interface. This means
      that the various calc_*_target_size functions can be made private.
      
      Change-Id: I66a9a62a5f9c23c818015e03f92f3757bf3bb5c8
      81d2206f
  13. 25 Apr, 2011 4 commits
    • Johann's avatar
      remove simpler_lpf · 01527e74
      Johann authored
      the decision to run the regular or simple loopfilter is made outside the
      function and managed with pointers
      
      stop tracking the option in two places. use filter_type exclusively
      
      Change-Id: I39d7b5d1352885efc632c0a94aaf56b72cc2fe15
      01527e74
    • John Koleszar's avatar
      Remove unused functions · 47bc1c70
      John Koleszar authored
      Remove estimate_min_frame_size() and calc_low_ss_err(), as they are
      never referenced.
      
      Change-Id: I3293363c14ef70b79c4678ca27aa65b345077726
      47bc1c70
    • John Koleszar's avatar
      Limit size of initial keyframe in one-pass. · 454cbc96
      John Koleszar authored
      Rather than using a default size of 1/2 or 3/2 seconds for the first
      frame, use a fraction of the initial buffer level to give the
      application some control.
      
      This will likely undergo further refinement as size limits on key
      frames are currently under discussion on codec-devel@, but this gives
      much better behavior for small buffer sizes as a starting point.
      
      Change-Id: Ieba55b86517b81e51e6f0a9fe27aabba295acab0
      454cbc96
    • John Koleszar's avatar
      Add rc_max_intra_bitrate_pct control · aa926fbd
      John Koleszar authored
      Adds a control to limit the maximum size of a keyframe, as a function of
      the per-frame bitrate. See this thread[1] for more detailed discussion:
      
      [1]: http://groups.google.com/a/webmproject.org/group/codec-devel/browse_thread/thread/271b944a5e47ca38
      
      Change-Id: I7337707642eb8041d1e593efc2edfdf66db02a94
      aa926fbd
  14. 21 Apr, 2011 1 commit
  15. 20 Apr, 2011 1 commit
    • Attila Nagy's avatar
      Do not copy data between encoder reference buffers. · 43464e94
      Attila Nagy authored
      Golden and ALT reference buffers were refreshed by copying from
      the new buffer. Replaced this by index manipulation.
      Also moved all the reference frame updates to one function for
      easier tracking.
      
      Change-Id: Icd3e534e7e2c8c5567168d222e6a64a96aae24a1
      43464e94
  16. 19 Apr, 2011 1 commit
    • John Koleszar's avatar
      Remove unused kf rate variables · ad6a8ca5
      John Koleszar authored
      Remove tot_key_frame_bits and prior_key_frame_size[] as they were
      tracked but never used. Remove intra_frame_target, as it was only
      used to initialize prior_key_frame_size.
      
      Refactor vp8_adjust_key_frame_context() some to remove unnecessary
      calculations.
      
      Change-Id: Icbc2c83d2b90e184be03e6f9679e678f3a4bce8f
      ad6a8ca5
  17. 13 Apr, 2011 2 commits
    • Fritz Koenig's avatar
      Use consistent delimiters. · 33cefd6f
      Fritz Koenig authored
      opsnr.stt file was using \t for delimiters on everything
      except between VPXSSIM and Time.
      
      Change-Id: I6284c4e40c05ff642bf4b0170dca062c279a42df
      33cefd6f
    • John Koleszar's avatar
      Refactor lookahead ring buffer · 88841f10
      John Koleszar authored
      This patch cleans up the source buffer storage and copy mechanism to
      allow access through a standard push/pop/peek interface. This approach
      also avoids an extra copy in the case where the source is not a
      multiple of 16, fixing issue #102.
      
      Change-Id: I05808c39f5743625cb4c7af54cc841b9b10fdbd9
      88841f10
  18. 11 Apr, 2011 1 commit
  19. 01 Apr, 2011 1 commit
    • Yunqing Wang's avatar
      Use full-pixel MV in mvsadcost calculation · 3d681581
      Yunqing Wang authored
      MV sad cost error is only used in full-pixel motion search,
      which only need full-pixel resolution instead of quarter-pixel
      resolution. This change reduced mvsadcost table size, and
      removed unneccessary pamameter passing since this table is
      constant once it is generated.
      
      Change-Id: I9f931e55f6abc3c99011321f1dfb2f3562e6f6b0
      3d681581
  20. 30 Mar, 2011 1 commit
  21. 18 Mar, 2011 1 commit
    • John Koleszar's avatar
      Increase static linkage, remove unused functions · 429dc676
      John Koleszar authored
      A large number of functions were defined with external linkage, even
      though they were only used from within one file. This patch changes
      their linkage to static and removes the vp8_ prefix from their names,
      which should make it more obvious to the reader that the function is
      contained within the current translation unit. Functions that were
      not referenced were removed.
      
      These symbols were identified by:
      
        $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \
          | sort | grep '^ *1 '
      
      Change-Id: I59609f58ab65312012c047036ae1e0634f795779
      429dc676
  22. 11 Mar, 2011 5 commits
    • Paul Wilkins's avatar
      Clean up of vp8_init_config() · 6e737484
      Paul Wilkins authored
      Clean up vp8_init_config() a bit and remove null pointer case,
      as this code can't be called any more and is not an adequate
      trap anyway, as a null pointer would cause exceptions before
      hitting the test.
      
      Change-Id: I937c00167cc039b3aa3f645f29c319d58ae8d3ee
      6e737484
    • Paul Wilkins's avatar
      1 Pass CQ and VBR bug fixes · 2ae91fbe
      Paul Wilkins authored
      Issue 291 highlighted  the fact that CQ mode was not working
      as expected in 1 pass mode,
      
      This commit fixes that specific problem but in so doing I also
      uncovered an overflow issue in the VBR code for 1 pass and
      some data values not being correctly initialized.
      
      For some clips (particularly short clips), the resulting
      improvement is dramatic.
      
      Change-Id: Ieefd6c6e4776eb8f1b0550dbfdfb72f86b33c960
      2ae91fbe
    • Jim Bankoski's avatar
      vp8cx - psnr converted to call assemblerized sse · 3dc38229
      Jim Bankoski authored
      Change-Id: Ie388d4618c44b131f96b9fe526618b457f020dfa
      3dc38229
    • Jim Bankoski's avatar
      vp8cx- alternate ssim function with optimizations · 3f6f7289
      Jim Bankoski authored
      Change-Id: I91921b0a90dbaddc7010380b038955be347964b3
      3f6f7289
    • Attila Nagy's avatar
      Encoder loopfilter running in its own thread · 3ae24657
      Attila Nagy authored
      In multithreaded mode the loopfilter is running in its own thread (filter level
      calculation and frame filtering). Filtering is mostly done in parallel with the
      bitstream packing. Before starting the packing the loopfilter level has
      to be calculated. Also any needed reference frame copying is done in the
      filter thread.
      
      Currently the encoder will create n+1 threads, where n > 1 is the number of
      threads specified by application  and 1 is the extra filter thread. With n = 1
      the encoder runs in single thread mode. There will never be more than n threads
      running concurrently.
      
      Change-Id: I4fb29b559a40275d6d3babb8727245c40fba931b
      3ae24657
  23. 10 Mar, 2011 1 commit
    • Adrian Grange's avatar
      Removed firstpass motion map · ed40ff9e
      Adrian Grange authored
      The firstpass motion map consists of an 8-bit flag for
      each MB indicating how strongly the firstpass code
      believes it should be filtered during the second pass
      ARNR filtering.
      
      For long or large format material the motion map can
      become extremely large and hamper the operation of
      the encoding process.
      
      This change removes the motion map altogether, leaving
      the second pass to rely on the magnitude of the motion
      compensated error to determine the filter weight to
      use for the MB during ARNR filtering.
      
      Tests on the derf set indicate that the effect of this
      change is neutral, with some small wins and losses. The
      motion map has therefore been removed based on
      a cost/benefit evaluation.
      
      Change-Id: I53e07d236f5ce09a6f0c54e7c4ffbb490fb870f6
      ed40ff9e
  24. 03 Mar, 2011 2 commits
  25. 25 Feb, 2011 2 commits