1. 09 Feb, 2016 2 commits
    • 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
  2. 04 Feb, 2016 1 commit
  3. 03 Feb, 2016 2 commits
  4. 01 Feb, 2016 2 commits
  5. 20 Jan, 2016 2 commits
  6. 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
  7. 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
  8. 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
  9. 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
  10. 01 Dec, 2015 1 commit
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 27 Oct, 2015 1 commit
  17. 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
  18. 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
  19. 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
  20. 29 Sep, 2015 1 commit
    • 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
  21. 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
  22. 24 Sep, 2015 1 commit
  23. 21 Sep, 2015 1 commit
    • jackychen's avatar
      Change size on first frame and change config cause crash. · 55f092db
      jackychen authored
      Reallocation of mi buffer fails if change size on the first frame and
      change config in subsequent frames. Add a condition for resolution
      check to avoid assertion failure.
      
      BUG=1074
      
      Change-Id: Ie26ed816a57fa871ba27a72db9805baaaeaba9f3
      55f092db
  24. 16 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      Add support for color-range. · eeb5ef0a
      Ronald S. Bultje authored
      In decoder, export (eventually) into vpx_image_t.range field. In
      encoder, use oxcf->color_range to set it (same way as for
      color_space).
      
      See issue 1059.
      
      Change-Id: Ieabbb2a785fa58cc4044bd54eee66f328f3906ce
      eeb5ef0a
  25. 15 Sep, 2015 1 commit
    • Marco's avatar
      Add cyclic refresh parameters to svc-layer context. · eb53c69e
      Marco authored
      For 1 pass CBR spatial-SVC:
      Add cyclic refresh parameters to the svc-layer context.
      
      This allows cyclic refresh (aq-mode=3) to be applied to
      the whole super-frame (all spatial layers).
      This gives a performance improvement for spatial layer encoding.
      
      Addd the aq_mode mode on/off setting as command line option.
      
      Change-Id: Ib9c3b5ba3cb7851bfb8c37d4f911664bef38e165
      eb53c69e
  26. 14 Sep, 2015 1 commit
  27. 11 Sep, 2015 1 commit
    • Marco's avatar
      Avoid scaling last_source, unless needed. · e8a4a3e2
      Marco authored
      Save some encoding time, for the case of spatial layers
      or under dynamic resizing mode.
      
      Change-Id: If4a8eb6f0376c3d2dde8465fde6bfd86ab704920
      e8a4a3e2
  28. 10 Sep, 2015 1 commit
  29. 03 Sep, 2015 1 commit
    • Marco's avatar
      Fix to dynamic resize mode under change_config(). · be3489ea
      Marco authored
      If the encoder dynamic resize is triggered and change config()
      is then called, it will reset the current (resized) codec width/height
      back to the the config (unresized) width/height (which will then
      prevent the resizing action from occurring in encoder_loop).
      
      Avoid this by checking for a change in the config width/height
      before resetting the cm->width/height.
      
      Change-Id: Id9d50c0ee8a943abe4b6c72bbaa02d9696f93177
      be3489ea
  30. 02 Sep, 2015 1 commit
  31. 31 Aug, 2015 1 commit
  32. 29 Aug, 2015 1 commit
  33. 28 Aug, 2015 1 commit
    • Marco's avatar
      Fix to golden update in cyclic_refresh. · bc0a9743
      Marco authored
      For one pass CBR: only check for updating refresh_golden
      if ext_refresh_frame_flags_pending is not set (i.e., == 0).
      And move the resetting of ext_refresh_frame_flags_pending = 0
      down to after the encode_loop (and account for dropped frames).
      
      This is to prevent changing refresh_golden flga when the user
      supplies the reference/update flags.
      
      Change-Id: I4d87b3e705ba43f243667e367503b585c61e2a54
      bc0a9743
  34. 27 Aug, 2015 1 commit