1. 23 Oct, 2015 1 commit
    • Marco's avatar
      VP9: Estimate noise level for denoiser. · d162934b
      Marco authored
      Periodically estiamte noise level in source, and only denoise
      if estimated noise level is above threshold.
      
      Change-Id: I54f967b3003b0c14d0b1d3dc83cb82ce8cc2d381
      d162934b
  2. 21 Oct, 2015 1 commit
    • Geza Lore's avatar
      Optimize vp9_highbd_block_error_8bit assembly. · aa8f8522
      Geza Lore authored
      A new version of vp9_highbd_error_8bit is now available which is
      optimized with AVX assembly. AVX itself does not buy us too much, but
      the non-destructive 3 operand format encoding of the 128bit SSEn integer
      instructions helps to eliminate move instructions. The Sandy Bridge
      micro-architecture cannot eliminate move instructions in the processor
      front end, so AVX will help on these machines.
      
      Further 2 optimizations are applied:
      
      1. The common case of computing block error on 4x4 blocks is optimized
      as a special case.
      2. All arithmetic is speculatively done on 32 bits only. At the end of
      the loop, the code detects if overflow might have happened and if so,
      the whole computation is re-executed using higher precision arithmetic.
      This case however is extremely rare in real use, so we can achieve a
      large net gain here.
      
      The optimizations rely on the fact that the coefficients are in the
      range [-(2^15-1), 2^15-1], and that the quantized coefficients always
      have the same sign as the input coefficients (in the worst case they are
      0). These are the same assumptions that the old SSE2 assembly code for
      the non high bitdepth configuration relied on. The unit tests have been
      updated to take this constraint into consideration when generating test
      input data.
      
      Change-Id: I57d9888a74715e7145a5d9987d67891ef68f39b7
      aa8f8522
  3. 17 Oct, 2015 1 commit
  4. 16 Oct, 2015 3 commits
    • Yaowu Xu's avatar
      Add a new enum type vpx_color_range_t · 56842951
      Yaowu Xu authored
      to make meaning of color_range obvious.
      
      Change-Id: I303582e448b82b3203b497e27b22601cc718dfff
      56842951
    • Marco's avatar
      Adjustment on limiting cyclic refresh on steady blocks. · b44c5cf6
      Marco authored
      Adjust the qp threshold and consec_zeromv threshold for
      limiting cyclic refresh. Also increase the refresh period
      when the limit amount is significant, and some code-cleanup.
      
      Small gain in PSNR/SSIM metrics: ~0.25/0.3 gain on RTC set, speed 7.
      
      Change only affects non-screen content.
      
      Change-Id: I1ced87a89a132684c071e722616e445b2d18236a
      b44c5cf6
    • Yaowu Xu's avatar
      Restore partial changes from previous commit · 1832ba75
      Yaowu Xu authored
      This portion was tested to have no effect on asan test failures.
      
      Change-Id: I3de1dab7479148bdffc24c4568cb2e7e9963f099
      1832ba75
  5. 15 Oct, 2015 4 commits
  6. 13 Oct, 2015 1 commit
    • paulwilkins's avatar
      Changes to partition breakout rules. · cdc35998
      paulwilkins authored
      Changes to the breakout behavior for partition selection.
      The biggest impact is on speed 0 where encode speed in
      some cases more than doubles with typically less than 1%
      impact on quality.
      
      Speed 0 encode speed impact examples
      Animation test clip: +128%
      Park Joy:  +59%
      Old town Cross: + 109%
      
      Change-Id: I222720657e56cede1b2a5539096f788ffb2df3a1
      cdc35998
  7. 12 Oct, 2015 1 commit
  8. 10 Oct, 2015 1 commit
  9. 08 Oct, 2015 4 commits
  10. 07 Oct, 2015 5 commits
  11. 06 Oct, 2015 2 commits
    • Alex Converse's avatar
      vp9: simplify extrabits encoding · 2f7f482c
      Alex Converse authored
      Change-Id: I5a2abd35cb303d8f6354b3119ab95acf90405116
      2f7f482c
    • Marco's avatar
      Add first_spatial_layer_to_encode to SVC. · 7266bedc
      Marco authored
      Use the existing VP9_SET_SVC control to set the
      first spatial layer to encode.
      
      Since we loop over all spatial layers inside the encoder, the
      setting of spatial_layer_id via VP9_SET_SVC has no relevance.
      Use it instead to set the first_spatial_layer_to_encode,
      which allows an application to skip encoding lower layer(s).
      
      Change only affects the 1 pass CBR SVC.
      
      Change-Id: I5d63ab713c3e250fdf42c637f38d5ec8f60cd1fb
      7266bedc
  12. 05 Oct, 2015 1 commit
  13. 02 Oct, 2015 4 commits
    • JackyChen's avatar
      Turn on two-steps scaling in VP9 encoder dynamic resizing. · 87b2495f
      JackyChen authored
      First do a 3/4 scaling and then go down to 1/2 when necessary.
      
      Change-Id: I5689c5228ca7e1606baea7f960eb24d0dab04d4d
      87b2495f
    • Marco's avatar
      Fix to denoiser with dynamic resize. · 86ede509
      Marco authored
      Temporary fix to denoiser when dynamic resizing is on.
       -Reallocate denoiser buffers on resized frame.
       -Force golden update on resized frame.
       -Don't denoise resized frame, and copy source into denoised buffers.
      
      Change-Id: Ife7638173b76a1c49eac7da4f2a30c9c1f4e2000
      86ede509
    • Marco's avatar
      Stabilize the encoder buffer from going too negative. · 37293583
      Marco authored
      For screen-content mode, with frame dropper off, put a limit
      on how low encoder buffer can go.
      
      Under hard slide changes, the buffer level can go too low and then
      take long time to come back up (in particular when frame-dropping
      is not used), which will affect the active_worst and target frame size.
      
      Change-Id: Ie9fca097e05cd71141f978ec687f852daf9de332
      37293583
    • jackychen's avatar
      Two-steps scaling in VP9 encoder dynamic resizing. · ba06be38
      jackychen authored
      Dynamic resizing now support two-steps scaling: first go down to
      3/4 and then 1/2. This feature is under a flag which controls the
      switch between two-steps scaling and one-step scaling (1/2 only).
      
      Change-Id: I3a6c1d3d5668cf8e016a0a02aeca737565604a0f
      ba06be38
  14. 01 Oct, 2015 1 commit
    • hui su's avatar
      Small cleanup · 06bdc7f6
      hui su authored
      Change-Id: I5aeaa94b743f84738d288f8b027fec4c164f2ec3
      06bdc7f6
  15. 30 Sep, 2015 3 commits
  16. 29 Sep, 2015 5 commits
  17. 26 Sep, 2015 2 commits
    • Ronald S. Bultje's avatar
      vp9/10: improve support for render_width/height. · 812945a8
      Ronald S. Bultje authored
      In the decoder, map this to the output variable vpx_image_t.r_w/h.
      This is intended as an improved version of VP9D_GET_DISPLAY_SIZE,
      which doesn't work with parallel frame decoding. In the encoder,
      map this to a codec control func (VP9E_SET_RENDER_SIZE) that takes
      a w/h pair argument in a int[2] (identical to VP9D_GET_DISPLAY_SIZE).
      
      Also add render_size to the encoder_param_get_to_decoder unit test.
      
      See issue 1030.
      
      Change-Id: I12124c13602d832bf4c44090db08c1009c94c7e8
      812945a8
    • Ronald S. Bultje's avatar
      Rename display_{size,width,height} to render_*. · 36ffe644
      Ronald S. Bultje authored
      The name "display_*" (or "d_*") is used for non-compatible information
      (that is, the cropped frame dimensions in pixels, as opposed to the
      intended screen rendering surface size). Therefore, continuing to use
      display_* would be confusing to end users. Instead, rename the field
      to render_*, so that struct vpx_image can include it.
      
      Change-Id: Iab8d2eae96492b71c4ea60c4bce8121cb2a1fe2d
      36ffe644