1. 06 Dec, 2012 1 commit
    • Scott LaVarnway's avatar
      added work buffer for denoiser · ef2248a2
      Scott LaVarnway authored
      The denoiser was writing to LAST_FRAME buffer.   If LAST_FRAME isn't being
      updated,  the reference frame buffers were out of sync between the encoder and the
      denoised raw buffers. This patch resolves the discrepancy by always writing to a work
      buffer (INTRA_FRAME) and then copying from that buffer to any buffers that needs to
      be updated.
      
      Change-Id: I6dd855b9749978b542bc3d515914d5f16faf25df
      ef2248a2
  2. 05 Dec, 2012 2 commits
  3. 07 Nov, 2012 2 commits
  4. 06 Nov, 2012 2 commits
  5. 11 Oct, 2012 1 commit
  6. 08 Oct, 2012 1 commit
    • Yunqing Wang's avatar
      post-proc: deblock filter optimization · 4c53bacc
      Yunqing Wang authored
      1. Algorithm modification:
      Instead of having same filter threshold for a whole frame, now we
      allow the thresholds to be adjusted for each macroblock. In current
      implementation, to avoid excessive blur on background as reported
      in issue480(http://code.google.com/p/webm/issues/detail?id=480), we
      reduce the thresholds for skipped macroblocks.
      
      2. SSE2 optimization:
      As started in issue479(http://code.google.com/p/webm/issues/detail?id=479),
      the filter calculation was adjusted for better performance. The c
      code was also modified accordingly. This made the deblock filter
      2x faster, and the decoder was 1.2x faster overall.
      
      Next, the demacroblock filter will be modified similarly.
      
      Change-Id: I05e54c3f580ccd427487d085096b3174f2ab7e86
      4c53bacc
  7. 01 Oct, 2012 1 commit
    • Jim Bankoski's avatar
      Disable keyframe in real time that's placed one frame after a cut. · 6f35b195
      Jim Bankoski authored
      The codec as it stood placed a keyframe one frame after a
      real cut scene - and ignored datarate and other considerations.
      
      TODO: Its possible that we should detect a keyframe and recode
      the frame ( in certain circumstances) to improve quality.
      
      Change-Id: Ia1fd6d90103f4da4d21ca5ab62897d22e0b888a8
      6f35b195
  8. 27 Sep, 2012 1 commit
    • Marco Paniconi's avatar
      Resetting of the cyclic_refresh_mode_index: · 9704cdec
      Marco Paniconi authored
      Reset the cyclie refresh mode index in alloc_compressor_data().
      This is needed to handle both cases of internal and
      external spatial resizing.
      
      Change-Id: I2697e12d45135eae2e8f0d45161811f24722312a
      9704cdec
  9. 26 Sep, 2012 1 commit
  10. 24 Sep, 2012 2 commits
    • Jim Bankoski's avatar
      disable segmentation on enhancement layers · 22141d9d
      Jim Bankoski authored
      This should avoid problems with blocks gettings high quality
      improvement despite having recently moved:
      
      Change-Id: Ic0af0de2d6577807fa3c553f47b55d547ef36359
      22141d9d
    • Marco Paniconi's avatar
      Update to cyclic refresh: · b501251e
      Marco Paniconi authored
      Set the seg map to 0 for key frame.
      
      In previous commit on cyclic refresh, the seg map for key frame
      was not reset, and instead used the seg map from last frame.
      
      Change-Id: I848eb2face420dfcd2f7daca6f070b9127ca938b
      b501251e
  11. 22 Sep, 2012 1 commit
    • Marco Paniconi's avatar
      Update to cyclic refresh. · 5979b89b
      Marco Paniconi authored
      -Increase the amount of mbs to be refreshed.
      -Replace the delta qp with a fixed and reduced delta.
      -Change to the mb update loop to try to always update same amount of mbs.
      
      Change-Id: I93ac88002fd8dc677d2337f77998ff93f64e4ff9
      5979b89b
  12. 21 Aug, 2012 2 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
    • 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
  13. 20 Aug, 2012 2 commits
  14. 14 Aug, 2012 1 commit
  15. 02 Aug, 2012 1 commit
  16. 01 Aug, 2012 1 commit
    • 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
  17. 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
  18. 27 Jul, 2012 1 commit
    • 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
  19. 26 Jul, 2012 1 commit
    • 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
  20. 20 Jun, 2012 2 commits
    • John Koleszar's avatar
      Fix compilation with -werror · 6291dd4c
      John Koleszar authored
      Fix a last few warnings with multithread, arm, 32 bit
      
      Change-Id: Ic7c67616c370d0ff87562a232fb1e5df0702dc86
      6291dd4c
    • Paul Wilkins's avatar
      Fix segmentation updates with vp8_set_roimap() · 7c32cb52
      Paul Wilkins authored
      Changes relating to Issue 411
      
      Removed code that was clearing down the segmentation data each
      frame.
      
      Added range/parameter checking in vp8_set_roimap(); Return error
      if called when cyclic_refresh is enabled.
      
      Correct setup_features() so that it sets or clears the segment update
      flags as appropriate.
      
      Change-Id: Ib31ac53006640ddf1ba7b9ec8f8b952e3eff860a
      7c32cb52
  21. 12 Jun, 2012 1 commit
  22. 11 Jun, 2012 1 commit
    • John Koleszar's avatar
      Fix pedantic compiler warnings · 0164a1cc
      John Koleszar authored
      Allows building the library with the gcc -pedantic option, for improved
      portabilty. In particular, this commit removes usage of C99/C++ style
      single-line comments and dynamic struct initializers. This is a
      continuation of the work done in commit 97b766a4, which removed most
      of these warnings for decode only builds.
      
      Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
      0164a1cc
  23. 07 Jun, 2012 2 commits
    • Yunqing Wang's avatar
      Fix decimation_count in drop_frame · 53d92e61
      Yunqing Wang authored
      Frame dropping decision is made by evaluating both current frame
      and next frame's buffer_level. If both buffer_levels are less
      than drop_mark, next frame is dropped. When frame dropping is
      over, namely, buffer_level becomes normal again, we need to
      reset decimation_count to 0.
      
      Change-Id: Iae182612e61e0da367fbd43afdc90738d975d1a3
      53d92e61
    • Yunqing Wang's avatar
      Remove unused code in drop_frame · 9904c28f
      Yunqing Wang authored
      Removed unused parameters and code related to drop_frame.
      
      Change-Id: I594e050d49b1805c6f72abf06005ef624256bb57
      9904c28f
  24. 06 Jun, 2012 1 commit
    • Marco Paniconi's avatar
      Reset Q for key frame when spatial resizing occurs. · baedcedc
      Marco Paniconi authored
      The logic for spatial resizing is done after the Q is selected for the
      frame. This causes a problem that the Q we select for the (resized)
      key frame may be based on a different resolution than the frame we
      will encode.
      
      This fix is to ensure that, when resize is on, the selected Q is still
      based on the resolution of the frame to be encoded.
      
      Change-Id: Ia49a9eac5f64e48d1c00dfc7ed4ce26fe84d3fa1
      baedcedc
  25. 04 Jun, 2012 1 commit
    • Johann's avatar
      Remove extra enum · 965d8686
      Johann authored
      VP8_REFFRAME is the same as vpx_ref_frame_type
      
      Change-Id: I63c2ddfb39f6ec87d1e5eb6a8852846464552b1b
      965d8686
  26. 30 May, 2012 1 commit
    • Jim Bankoski's avatar
      fix denoiser for temporal patterns and rd · f78e5a04
      Jim Bankoski authored
      This extends the denoiser to work for temporally scalable
      coding.
      
      I believe this also fixes a very rare but really bad bug in the original
      implementation.
      
      Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
      f78e5a04
  27. 24 May, 2012 1 commit
    • Jim Bankoski's avatar
      fix denoiser for temporal patterns and rd · 57faddb7
      Jim Bankoski authored
      This extends the denoiser to work for temporally scalable
      coding.
      
      I believe this also fixes a very rare but really bad bug in the original
      implementation.
      
      
      Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
      57faddb7
  28. 23 May, 2012 3 commits
    • Attila Nagy's avatar
      Fix another multithreaded encoder loopfilter race condition · 48908530
      Attila Nagy authored
      After a key frame encoding, the frame type could change while
      filtering is still going on. Pass the frame type as parameter to the
      loopfilter function and don't read it from common storage.
      
      vp8cx_set_alt_lf_level has to be done before packing the stream.
      Currently alt_lf_level is not used so there hasn't been any visible
      problem here.
      
      Change-Id: Ia114162158cd833c2b16e3b89303cc9c91f19165
      48908530
    • John Koleszar's avatar
      Fix memory leak in vpx_codec_enc_config_set() · cf097015
      John Koleszar authored
      Resolution changes in calls to vpx_codec_enc_config_set() would cause
      a memory leak due to failing to release the lookahead and alt ref
      buffers.
      
      Change-Id: I48392ea25e71fe2760d60cfde3fb3874598cc85f
      cf097015
    • Attila Nagy's avatar
      Fix another multithreaded encoder loopfilter race condition · ea392d47
      Attila Nagy authored
      After a key frame encoding, the frame type could change while
      filtering is still going on. Pass the frame type as parameter to the
      loopfilter function and don't read it from common storage.
      
      vp8cx_set_alt_lf_level has to be done before packing the stream.
      Currently alt_lf_level is not used so there hasn't been any visible
      problem here.
      
      Change-Id: Ia114162158cd833c2b16e3b89303cc9c91f19165
      ea392d47
  29. 16 May, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: force Key frame sychronization · 65dd157c
      Yunqing Wang authored
      In multi-resolution encoding, frame_type decision for each frame
      is made by the lowest-resolution encoder. For all other higher-
      resolution encoders, kf_mode is always set to VPX_KF_DISABLED,
      and they are forced to use the same frame_type picked by the
      lowest-resolution encoder.
      
      Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
      65dd157c
  30. 11 May, 2012 1 commit