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
      2ff6d350
  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
      c6fd0a5d
  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
      complexity.
      
      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
      64075c9b
  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
      24c346df
    • Scott LaVarnway's avatar
      Added row based extend borders · fa0f4185
      Scott LaVarnway authored
      Required for frame-based multithreading
      
      Change-Id: I361ec468b5bda7836116c5f0bf3a83f60c214a73
      fa0f4185
    • 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
      8ee88da0
  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
      a497cb59
    • Johann's avatar
      Use intra4x4_predict_d parameter names · 41aede61
      Johann authored
      Rename the local variables for consistency.
      
      Change-Id: Ic202ff54551332f706d97da9b67b2e0959ee7f61
      41aede61
    • 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
      a82c58c4
    • Johann's avatar
      use RTCD pointer for intra4x4_predict · 3c208a5a
      Johann authored
      Change-Id: I4161389ff02aa37636540ac0fe0fe9763d52ebdc
      3c208a5a
    • 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
      03b3fcec
    • 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
      cbc249ba
  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
      ef4a9670
  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
      11610551
    • 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
      e66e9ddf
  15. 26 Jul, 2012 2 commits
    • Johann's avatar
      SAD cosmetic cleanup · dd0100dd
      Johann authored
      Change-Id: Iae915f2988081697cca6b65943afaca1d8de8df3
      dd0100dd
    • 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
      information.
      
      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
      4066c8b2
  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
      occurs.
      
      Change-Id: Ia5d65a645381cad1a49940ab3a19bb5696c39c09
      7f009975
  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
      147e8646
    • 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
      b2936985
  21. 28 Jun, 2012 1 commit