1. 23 Feb, 2016 1 commit
  2. 22 Feb, 2016 3 commits
    • Yaowu Xu's avatar
      Cleanup psnr.h · 38cfc45e
      Yaowu Xu authored
      Change-Id: Id026e72ee655ee5bd645a89e378da0d462be367d
      38cfc45e
    • Yaowu Xu's avatar
      Add shift stage in FASTSSIM computation · d1c5cd4a
      Yaowu Xu authored
      This commits adds a shift stage for FASTSSIM computaton when source
      bit depth is different from working bit depth, to make sure metric
      results are calculated in bit_depth consistent with source.
      
      Change-Id: I997799634076ef7b00fd051710544681ed536185
      d1c5cd4a
    • Yaowu Xu's avatar
      Move psnrhvs function declaration to psnr.h · 6e695da2
      Yaowu Xu authored
      From "ssim.h"
      
      Change-Id: Ie53378794149ef8a844b4eb47ad4f08579de4b60
      6e695da2
  3. 17 Feb, 2016 1 commit
  4. 12 Feb, 2016 2 commits
  5. 11 Feb, 2016 3 commits
    • Yaowu Xu's avatar
      Enable computing PSNRHVS for hbd build · bb8ca088
      Yaowu Xu authored
      This commit adds computation of PSNRHVS for highbitdepth build, it
      also adds tests to make sure the calculation of psnrhvs metric for
      10 and 12 bit correct.
      
      Change-Id: Iac8a8073d2b3e3ba5d368829d770793212fa63b6
      bb8ca088
    • Marco's avatar
      vp9-resize: Force reference masking off for external dynamic-resizing. · 34d12d11
      Marco authored
      An issue exists with reference_masking in non-rd pickmode for spatial
      scaling. It was kept off for internal dynamic resizing and svc, this
      change is to keep it off also for external dynamic resizing.
      
      Update to external resize test, and update TODO to re-enable this
      at frame level when references have same scale as source.
      
      Change-Id: If880a643572127def703ee5b2d16fd41bdbf256c
      34d12d11
    • Yaowu Xu's avatar
      Enable computing of FastSSIM for HBD build · c0874f24
      Yaowu Xu authored
      This commit adds the computation of fastSSIM for highbitdepth build,
      it also modifies the hbdmetric test to be more generic and applicable
      for fastSSIM.
      
      The 255 used for calculating ssim constants c1 and c2 is not exactly
      scaled by 4x and 16x to 1023 and 4095, therefore requries the metric
      test to have a thresold more tolerant than 0, currently at 0.03dB.
      
      Change-Id: I631829da7773de400e77fc36004156e5e126c7e0
      c0874f24
  6. 09 Feb, 2016 3 commits
    • Marco's avatar
      vp9-dynamic resize: Fix bug on releasing scaled reference. · f288c943
      Marco authored
      When the codec frame size is the same as the reference frame size,
      release the scaled reference before assigning it a new buf_idx.
      Only affects 1 pass non-svc mode, where the scaled references are
      release only under certain conditions (to prevent un-needed scaling
      of the references every frame).
      
      Modified a unittest that can trigger this bug without this change.
      
      https://code.google.com/p/chromium/issues/detail?id=582598
      
      Change-Id: I9a884e36ebd7608b1641ec2a469e20a4f829cf43
      f288c943
    • Marco's avatar
      vp9-aq-mode=3: Reset cyclic refresh under config/external size change. · aff0a802
      Marco authored
      If the application changes frame size (external size changes),
      and aq-mode=3 is on, reset the cyclic refresh.
      
      Modify the TestExternalResize unittest (longer run with more resize
      actions). Without this change an assert would be triggered on this
      longer test.
      
      Change-Id: I0eefd2cd7ffa0c557cca96ae30d607034a2599ce
      aff0a802
    • Yaowu Xu's avatar
      Set use_highbitdepth flag to either 1 or 0 · 5c327cb4
      Yaowu Xu authored
      This reduces the buffer allocation size for high bit depth buffers by
      more than 70%.
      
      Change-Id: Iab9007d9684e8ac30ce7fa94e61f038f01792fc5
      5c327cb4
  7. 08 Feb, 2016 1 commit
  8. 04 Feb, 2016 1 commit
  9. 03 Feb, 2016 2 commits
  10. 01 Feb, 2016 2 commits
  11. 20 Jan, 2016 2 commits
  12. 19 Jan, 2016 1 commit
    • paulwilkins's avatar
      Loop filter search resets on overlay frame. · 733bbab5
      paulwilkins authored
      This patch fixes a bug that causes the loop filter search to reset to
      a low value or zero after each arf overlay frame. We expect the overlay
      frames to need little or no loop filtering but this should not propagate.
      
      Change-Id: I895b28474cf200f20d82793f3de40b60b19579fd
      733bbab5
  13. 14 Jan, 2016 1 commit
    • Debargha Mukherjee's avatar
      Adding an aq mode for 360 videos · 02345be9
      Debargha Mukherjee authored
      Different quality levels are used for different regions in
      the frame depending on how far they are vertically from the
      center. Specifically, three segments are used based on the
      mi_row index with respect number to the number of mi_rows in
      the frame.
      
      Change-Id: Ifc8b777bc58ea8521dffc4640360c67d99f8d381
      02345be9
  14. 15 Dec, 2015 1 commit
    • paulwilkins's avatar
      Fixed interval, fixed Q 1 pass test patch. · fc50d95b
      paulwilkins authored
      For testing implemented a fixed pattern and delta, 1 pass,
      fixed Q, low delay mode.
      
      This has not in any way been tuned or optimized.
      
      Change-Id: Idf5ee179b277fa15d07a97f14f2ce5bbaae80a04
      fc50d95b
  15. 14 Dec, 2015 1 commit
    • Marco's avatar
      SVC 1 pass mode: Constrain inter mode search within superframe. · c760c33b
      Marco authored
      Keep track of frame indexes for the references, and
      constrain inter mode search for reference with same
      temporal alignment.
      
      Improves speed by about ~15%, no noticeable loss in
      compression performance.
      
      Change-Id: I5c407a8acca921234060c4fcef4afd7d734201c8
      c760c33b
  16. 01 Dec, 2015 1 commit
  17. 13 Nov, 2015 1 commit
    • paulwilkins's avatar
      Changes to exhaustive motion search. · 0149fb3d
      paulwilkins authored
      This change alters the nature and use of exhaustive motion search.
      
      Firstly any exhaustive search is preceded by a normal step search.
      The exhaustive search is only carried out if the distortion resulting
      from the step search is above a threshold value.
      
      Secondly the simple +/- 64 exhaustive search is replaced by a
      multi stage mesh based search where each stage has a range
      and step/interval size. Subsequent stages use the best position from
      the previous stage as the center of the search but use a reduced range
      and interval size.
      
      For example:
        stage 1: Range +/- 64 interval 4
        stage 2: Range +/- 32 interval 2
        stage 3: Range +/- 15 interval 1
      
      This process, especially when it follows on from a normal step
      search, has shown itself to be almost as effective as a full range
      exhaustive search with step 1 but greatly lowers the computational
      complexity such that it can be used in some cases for speeds 0-2.
      
      This patch also removes a double exhaustive search for sub 8x8 blocks
      which also contained  a bug (the two searches used different distortion
      metrics).
      
      For best quality in my test animation sequence this patch has almost
      no impact on quality but improves encode speed by more than 5X.
      
      Restricted use in good quality speeds 0-2 yields significant quality gains
      on the animation test of 0.2 - 0.5 db with only a small impact on encode
      speed. On most clips though the quality gain and speed impact are small.
      
      Change-Id: Id22967a840e996e1db273f6ac4ff03f4f52d49aa
      0149fb3d
  18. 11 Nov, 2015 1 commit
    • Geza Lore's avatar
      Add AVX vectorized vp9_diamond_search_sad · 5eefd3eb
      Geza Lore authored
      This function now has an AVX intrinsics version which is about 80%
      faster compared to the C implementation. This provides a 2-4% total
      speed-up for encode, depending on encoding parameters. The function
      utilizes 3 properties of the cost function lookup table, constructed
      in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'.
      For the joint cost:
        - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3]
      For the component costs:
        - For all i: mvsadcost[0][i] == mvsadcost[1][i]
              (equal per component cost)
        - For all i: mvsadcost[0][i] == mvsadcost[0][-i]
              (Cost function is even)
      These must hold, otherwise the AVX version of the function cannot be used.
      
      Change-Id: I6c2791d43022822a9e6ab43cd124a773946d0bdc
      5eefd3eb
  19. 06 Nov, 2015 1 commit
    • James Zern's avatar
      Revert "Add AVX vectorized vp9_diamond_search_sad" · 30466f26
      James Zern authored
      This reverts commit f1342a7b.
      
      This breaks 32-bit builds:
       runtime error: load of misaligned address 0xf72fdd48 for type 'const
      __m128i' (vector of 2 'long long' values), which requires 16 byte
      alignment
      
      + _mm_set1_epi64x is incompatible with some versions of visual studio
      
      Change-Id: I6f6fc3c11403344cef78d1c432cdc9147e5c1673
      30466f26
  20. 05 Nov, 2015 1 commit
    • Geza Lore's avatar
      Add AVX vectorized vp9_diamond_search_sad · f1342a7b
      Geza Lore authored
      This function now has an AVX intrinsics version which is about 80%
      faster compared to the C implementation. This provides a 2-4% total
      speed-up for encode, depending on encoding parameters. The function
      utilizes 3 properties of the cost function lookup table, constructed
      in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'.
      For the joint cost:
        - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3]
      For the component costs:
        - For all i: mvsadcost[0][i] == mvsadcost[1][i]
              (equal per component cost)
        - For all i: mvsadcost[0][i] == mvsadcost[0][-i]
              (Cost function is even)
      These must hold, otherwise the AVX version of the function cannot be used.
      
      Change-Id: I184055b864c5a2dc37b2d8c5c9012eb801e9daf6
      f1342a7b
  21. 02 Nov, 2015 1 commit
    • Marco's avatar
      Move noise level estimate outside denoiser. · c7da053d
      Marco authored
      Source noise level estimate is also useful for
      setting variance encoder parameters (variance thresholds,
      qp-delta, mode selection, etc), so allow it to be used also
      if denoising is not on.
      
      Change-Id: I4fe23d47607b4e17a35287057f489c29114beed1
      c7da053d
  22. 27 Oct, 2015 1 commit
  23. 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
  24. 06 Oct, 2015 1 commit
    • 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
  25. 02 Oct, 2015 2 commits
    • 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
    • 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
  26. 29 Sep, 2015 2 commits
    • Yaowu Xu's avatar
      Merged branch 'master' into nextgenv2 · 7c514e2d
      Yaowu Xu authored
      Resolved Conflicts in the following files:
              configure
              vp10/common/idct.c
              vp10/encoder/dct.c
              vp10/encoder/encodemb.c
              vp10/encoder/rdopt.c
      
      Change-Id: I4cb3986b0b80de65c722ca29d53a0a57f5a94316
      7c514e2d
    • Scott LaVarnway's avatar
      VP9: move loopfilter build masks to decode loop · 77181171
      Scott LaVarnway authored
      The loopfilter masks are now built in the decode loop.
      This is done so we can eventually reduce the number of
      MODE_INFO structs required by the decoder.
      
      The encoder builds the masks for the entire frame prior
      to calling the loopfilter.
      
      Change-Id: Ia2146b07e0acb8c50203e586dfae0c4c5b316f11
      77181171
  27. 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