1. 13 Sep, 2012 1 commit
  2. 11 Sep, 2012 2 commits
  3. 07 Sep, 2012 1 commit
    • Jim Bankoski's avatar
      valgrind caught uninitialized cond · 2ff6d350
      Jim Bankoski authored
      If the decoder crashes and returned an error before it set up
      block offsets but after it set up frame buffers.   We had a
      problem decoding the next keyframe because the block offsets
      were never set.
      Change-Id: Ied2866e9770d80fc66241d5e0d978d4f5f9cdd89
  4. 04 Sep, 2012 1 commit
    • Deb Mukherjee's avatar
      Adjusting thresholds in mfqe post-processing · c6fd0a5d
      Deb Mukherjee authored
      Adjusts some of the qualification thresholds in mfqe to eliminate
      artifacts due to wrong decisions. Besides, a new qualification
      criteria is used to disable mfqe if the quality of the previous
      frame is itself not too good.
      Change-Id: I4097c20b7fd4fcc60cc3003c1e33e8faae2ff066
  5. 31 Aug, 2012 1 commit
    • Yunqing Wang's avatar
      Encoder denoiser performance improvement · 64075c9b
      Yunqing Wang authored
      The denoiser function was modified to reduce the computational
      1. The denoiser c function modification:
      The original implementation calculated pixel's filter_coefficient
      based on the pixel value difference between current raw frame and last
      denoised raw frame, and stored them in lookup tables. For each pixel c,
      find its coefficient using
          filter_coefficient[c] = LUT[abs_diff[c]];
      and then apply filtering operation for the pixel.
      The denoising filter costed about 12% of encoding time when it was
      turned on, and half of the time was spent on finding coefficients in
      lookup tables. In order to simplify the process, a short cut was taken.
      The pixel adjustments vs. pixel diff value were calculated ahead of time.
          adjustment = filtered_value - current_raw
                     = (filter_coefficient * diff + 128) >> 8
      The adjustment vs. diff curve becomes flat very quick when diff increases.
      This allowed us to use only several levels to get a close approximation
      of the curve. Following the denoiser algorithm, the adjustments are
      further modified according to how big the motion magnitude is.
      2. The sse2 function was rewritten.
      This change made denoiser filter function 3x faster, and improved the
      encoder performance by 7% ~ 10% with the denoiser on.
      Change-Id: I93a4308963b8e80c7307f96ffa8b8c667425bf50
  6. 28 Aug, 2012 1 commit
  7. 21 Aug, 2012 3 commits
    • Yunqing Wang's avatar
      Add biasing to ZEROMV for videos with static background · 24c346df
      Yunqing Wang authored
      For videos with big static background(such as video conferencing
      clips), the mode decision was biased to ZEROMV in order to
      obtain a stable background. The percentage of ZEROMV on last
      frame was used to predict if there is static area in current frame,
      and checking already-encoded neighboring macroblocks' motion
      vectors to make sure the local area has low motion.
      Change-Id: I05b3241d3a56a0bda88b6681e5646c1c8baf2e57
    • Scott LaVarnway's avatar
      Added row based extend borders · fa0f4185
      Scott LaVarnway authored
      Required for frame-based multithreading
      Change-Id: I361ec468b5bda7836116c5f0bf3a83f60c214a73
    • Yunqing Wang's avatar
      Fix inter_zz_count calculation bug · 8ee88da0
      Yunqing Wang authored
      The current way of counting inter_zz_count doesn't work correctly
      in multi-threaded encoding. Calculating it after the frame is
      encoded fixed the problem.
      Change-Id: Ifcb1972cde950b8cc194f75c6d7b6af09e8b0e65
  8. 20 Aug, 2012 3 commits
  9. 14 Aug, 2012 1 commit
  10. 08 Aug, 2012 2 commits
  11. 02 Aug, 2012 4 commits
  12. 01 Aug, 2012 6 commits
    • Johann's avatar
      Rename vp8_intra4x4_predict_d · a497cb59
      Johann authored
      predict_d has become canonical. Remove previous helper function.
      Disable ARM assembly pending update.
      Change-Id: Idd84ac8a28f9b0221ea97904a77de1e705d06a7d
    • Johann's avatar
      Use intra4x4_predict_d parameter names · 41aede61
      Johann authored
      Rename the local variables for consistency.
      Change-Id: Ic202ff54551332f706d97da9b67b2e0959ee7f61
    • Johann's avatar
      Change vp8_intra4x4_predict call sites · a82c58c4
      Johann authored
      Use the _d variant from the decoder. It moves the pointer calculations
      to the caller.
      Change-Id: Iae2a793433ef082980a3ffa0a1cabf0264a6a24d
    • Johann's avatar
      use RTCD pointer for intra4x4_predict · 3c208a5a
      Johann authored
      Change-Id: I4161389ff02aa37636540ac0fe0fe9763d52ebdc
    • Attila Nagy's avatar
      Fix potential encoder dead-lock after picture resize · 03b3fcec
      Attila Nagy authored
      The sync interval for the multithreaded encoder was considered as not changing
      during the encoding. This is not true if picture size is changed.
      The encoder could dead-lock because the main thread and the other threads were
      using different sync interval.
      Change-Id: I75232bbdbc6c02d77f830d870fd8b4e96697c64e
    • Attila Nagy's avatar
      Fix encoder mem allocation when picture size is changed · cbc249ba
      Attila Nagy authored
      After the picture size was changed to a bigger one, the internal memory was
      corrupted and multithreaded encoder was deadlocking.
      Memory for last frame's MVs, segmentation map and active map were allocated when
      the compressor was created (vp8_create_compressor). Buffers need to be
      reallocated when picture size is changed, so, the allocation was moved to
      vp8_alloc_compressor_data, which is called every time the picture is resized.
      Change-Id: I7ce16b8e69bbf0386d7997df57add155aada2240
  13. 28 Jul, 2012 1 commit
    • Marco Paniconi's avatar
      Remove the resetting of qp params for temporal layers. · ef4a9670
      Marco Paniconi authored
      The ambient qp and active worse/best qp were reset for every frame
      when temporal layers is on. This change removes this reset.
      As this affects the target size for forced key frames
      (it will actually lower the size somewhat), we increased the
      inital boost factor to compensate.
      Change-Id: Ie38d95f5c99ab3d447469c49e2177bc3fcc4ad28
  14. 27 Jul, 2012 2 commits
    • Johann's avatar
      Be consistent with SAD values · 11610551
      Johann authored
      SAD returns unsigned values. Make all the declarations the same.
      Remove bestsad initialization and check. It is always set to the
      result of a SAD call so it will never remain UINT_MAX
      Use ja instead of jg to test unsigned comparison instead of signed.
      Update test.
      Change-Id: I46336ab45f4e60fc37caf20bd36bc5782079c7a5
    • Attila Nagy's avatar
      Optimizes updates of encoder block ptrs · e66e9ddf
      Attila Nagy authored
      Precalculated block ptrs do not need updates during encoding.
      Set these at init stage.
      Moved the allocation of 'mt_current_mb_col' (last encoded MB on each
      row) to vp8_alloc_compressor_data(), so that it is correctly
      reallocated when frame size is changing.
      Change-Id: Idcdaa2d0cf3a7f782b7d888626b7cf22a4ffb5c1
  15. 26 Jul, 2012 2 commits
    • Johann's avatar
      SAD cosmetic cleanup · dd0100dd
      Johann authored
      Change-Id: Iae915f2988081697cca6b65943afaca1d8de8df3
    • Yunqing Wang's avatar
      multi-res: add drop_frame support · 4066c8b2
      Yunqing Wang authored
      Added drop_frame support in multi-resolution encoder.
      If one frame is dropped at a lower-resolution level, the next
      upper-resolution level encoder needs to encode that frame
      independently without any lower-resolution level motion
      Another issue is that if one frame is dropped at some but not all
      resolution levels, a frame after that one may use different set
      of reference frames at different resolution levels. This reference
      frame asynchronization could degrade motion search precision in
      upper-resolution level encoding, which uses lower-resolution level
      motion result. This change compares the lower-resolution and upper-
      resolution level's reference frames. If they are not the same, the
      upper-resolution level encoder can not use lower-resolution level
      motion result.
      Change-Id: I61afa4f313630e75b7cbdd5742e230e8724a988a
  16. 24 Jul, 2012 2 commits
  17. 14 Jul, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: add parameter validity checking · 7f009975
      Yunqing Wang authored
      Added validity checking in multi-res encoder. Disable spatial
      resampling and frame dropping before we have those supports.
      Also, deallocate the memory for all resolution levels once error
      Change-Id: Ia5d65a645381cad1a49940ab3a19bb5696c39c09
  18. 13 Jul, 2012 2 commits
  19. 10 Jul, 2012 1 commit
  20. 02 Jul, 2012 2 commits
    • Yunqing Wang's avatar
      Add 0 offsets handling in SSSE3 sixtap_predict functions · 147e8646
      Yunqing Wang authored
      This patch fixed issue 458 by calling copy function when both
      offsets are 0, which guarantees the SSSE3 functions output
      same result as the c function for all possible offsets.
      Change-Id: I209aec7a4c6b3362db2646a8887c1038493b6496
    • Yunqing Wang's avatar
      Fix subpixel_predict initialization · b2936985
      Yunqing Wang authored
      xd->subpixel_predict16x16 is called in first pass, but isn't
      initialized in first pass, which causes segfault. This patch
      fixed that problem.
      Change-Id: Ibd2cad4e2d32ea589fc3e0876d60d3079ae836e7
  21. 28 Jun, 2012 1 commit