1. 24 Oct, 2013 1 commit
  2. 23 Oct, 2013 1 commit
  3. 22 Oct, 2013 2 commits
    • Dmitry Kovalev's avatar
      Removing quantize_b_4x4 function pointer. · ec414372
      Dmitry Kovalev authored
      The pointer was asigned only once with vp9_regular_quantize_b_4x4, calling
      this function directly now. Also removing unused declarations:
        prototype_quantize_block
        prototype_quantize_block_pair
        prototype_quantize_mb
        vp9_regular_quantize_b_4x4_pair
        vp9_regular_quantize_b_8x8
      
      Change-Id: I14325bc2f082336820671eafbc06126651b79f73
      ec414372
    • James Zern's avatar
      Revert "Merge "SVC improvements"" · cd74a901
      James Zern authored
      This reverts commit a82001b1, reversing
      changes made to f6d870f7.
      
      This commit breaks windows builds and needs some work to fix those and
      some additional comments.
      
      Change-Id: Ic0b0228e36704b127e5e399ce59db26182cfffe7
      cd74a901
  4. 21 Oct, 2013 3 commits
    • Dmitry Kovalev's avatar
      Using stride (# of elements) instead of pitch (bytes) in fdct4x4. · 190c2b45
      Dmitry Kovalev authored
      Just making fdct consistent with iht/idct/fht functions which all use
      stride (# of elements) as input argument.
      
      Change-Id: I0ba3c52513a5fdd194f1e7e2901092671398985b
      190c2b45
    • Ivan Maltz's avatar
      SVC improvements · 663916ce
      Ivan Maltz authored
      These changes were originally made in the Stratacaster team-review repository
      
      commit e114bffcd82ad74c3696ec58e13c0ac895d6c82d
      Author: Charles 'Buck' Krasic <ckrasic@google.com>
      Date:   Mon Oct 14 16:52:13 2013 -0700
      
          Make dummy frame handling a bit more explicit, fixing bug
          with single layer encodes.
      
      Squashed commit of the following:
      
      commit 1ebbfd976c0fadb02bf1ea562a2d0e3f0206daad
      Merge: ac468dde 54e88b7
      Author: Ivan Maltz <ivanmaltz@google.com>
      Date:   Fri Oct 11 17:29:58 2013 -0700
      
          Move SVC code from vp9_spatial_scalable_encoder to libvpx module accessible from ffmpeg
      
      commit 54e88b78b160becc9569fc3c6cb6b0a8c95dc357
      Author: Ivan Maltz <ivanmaltz@google.com>
      Date:   Tue Oct 8 09:08:40 2013 -0700
      
          common svc encoding code for sample app and ffmpeg
      
          added svc_encodeframe.c, svc_context.h, svc_test.cc
      
          vp9_spatial_scalable_encoder uses vpx_svc_encode
      
      commit 5616ec8e2e3d3e8d277333d8a9242f6c70151162
      Merge: 4528014 e29137df
      Author: Ivan Maltz <ivanmaltz@google.com>
      Date:   Tue Oct 8 08:47:58 2013 -0700
      
          Merge branch 'master' into stratacaster
      
      commit 45280148450b1f3d61e390df8aadedf85cd5bce1
      Merge: bb2b675 1ab60f7b
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Fri Oct 4 10:22:31 2013 -0700
      
          Merge branch 'master' into stratacaster
      
      commit bb2b675e595dc9bfc8551e963edf56800c3aea61
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Wed Oct 2 12:37:26 2013 -0700
      
          Track individual frame sizes and psnrs instead of averages.
      
      commit c6d303b714795c81e7ceb4173967115c9f8ff5b7
      Merge: fa87df9 35830879
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Fri Sep 27 10:05:35 2013 -0700
      
          Merge branch 'master' into stratacaster
      
      commit fa87df94fba923d9f7aeb8ae20c6e15f777e00b5
      Merge: bf22d71 3c465af2
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Thu Sep 26 16:10:31 2013 -0700
      
          Merge branch 'master' into stratacaster
      
      commit bf22d7144895a82e0c348ac177c8a261b9e2b88e
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Thu Sep 26 11:10:34 2013 -0700
      
          Parameterized quantizer, 16th scalefactors, more logging, enabled single layer encodes to generate baseline.
      
      commit ceffd7e6025b765f9886b5ea0f324248aa37e327
      Author: Sujeevan Rajayogam <sujee@google.com>
      Date:   Thu Sep 19 10:04:49 2013 -0700
      
          - Include new mode for 3 layer I frame with 5 total layers.
          - Refactor svc api.
      
      Change-Id: Ie4d775e21e006fa597d884c59488dc999478e9b5
      663916ce
    • Dmitry Kovalev's avatar
      Moving allow_high_precision_mv from MACROBLOCKD to VP9_COMMON. · d1b65c6b
      Dmitry Kovalev authored
      This value is a global frame-level flag, not a macroblock-level.
      
      Change-Id: Ie8c5790a931150741c2167c00c3e3dd2cf26744d
      d1b65c6b
  5. 19 Oct, 2013 2 commits
    • Paul Wilkins's avatar
      Modified no memory rate control. · eec3def7
      Paul Wilkins authored
      This 2-pass rate control setting allocates bits based
      on first pass stats to each kf group, gf group and individual
      frame but does not correct the bits left and allocation after
      each frame.
      
      In other words it recommends a bit allocation for each frame
      but does not try and correct any over or under spend on a
      frame over the remainder of the clip. This reduces the accuracy
      of rate control in terms of hitting an average bitrate but prevents
      problems that may arise because early frames either use to many
      or too few bits. This mode is currently more inclined to undershoot
      than overshoot (particularly at higher data rates).
      
      Also minor changes to rate of adaption when recode loop is not
      enabled.
      
      This mode is currently enabled by default for VBR.
      It gives the following % performance gains.
      
      derf +0.467, +1.072
      yt 2.962, 2.645
      stdhd 1.682, 1.595,
      yt-hd 2.3, 2.174
      
      Change-Id: I3c84a9bf8884e5b345698ff0e19187f792c2f3a0
      eec3def7
    • Paul Wilkins's avatar
      Reduced delta for kf/gf/arf when at maxq. · a2769bb7
      Paul Wilkins authored
      Delta reduced because of concern about popping on some
      very hard clips.
      
      Also allow some frame recode at speed 2 for kf/gf/arf.
      
      Change-Id: Ib47dff42da41aa6eec83b7285fcaaca24abb851e
      a2769bb7
  6. 18 Oct, 2013 1 commit
    • Jingning Han's avatar
      Make memory alloc in pick_mode_context bsize aware · 72033fcf
      Jingning Han authored
      This commit makes the buffer allocation of zcoeff_blk array in
      pick_mode_context block size aware. It calculates the number of
      4x4 blocks in the partition and assigns the memory space accordingly.
      This process (and the uninitialization) is done once for each encoding
      pass. It allows memory copy of smaller buffer when possible.
      
      For football at 600kbps, the runtimes improve by about 1%:
      speed 1, 45961ms -> 45472ms
      speed 2, 23863ms -> 23598ms
      
      Change-Id: Id2ca24906fa89f46fa5fe742ec4b8efc2a61f877
      72033fcf
  7. 17 Oct, 2013 1 commit
  8. 16 Oct, 2013 5 commits
  9. 15 Oct, 2013 3 commits
    • Alexander Voronov's avatar
      Updated encoder to handle intra-only frames · d6a59fb1
      Alexander Voronov authored
      Updated the encoder to handle frames that are coded
      intra-only. Intra-only frames must be non-showable,
      that is, the "show frame" flag must be set to 0 in
      the frame header.
      
      Tested by forcing the ARF frames to be coded intra-
      only.
      
      Note: The rate control code will need to be modified
      to account for intra-only frames better than they
      are currently handled.
      
      Change-Id: I6a9dd5337deddcecc599d3a44a7431909ed21079
      d6a59fb1
    • Jingning Han's avatar
      Make vp9_zero use cases of consistent format · c8e48f4b
      Jingning Han authored
      Remove the semicolon in the definition of vp9_zero macro. Make all
      the use cases of vp9_zero of consistent format.
      
      Change-Id: Ibaf9751e8595872b12766381a93d185a4d90df8f
      c8e48f4b
    • Dmitry Kovalev's avatar
      Removing unused 8x4 transform from the encoder. · a4585285
      Dmitry Kovalev authored
      Change-Id: Icbcf68b5b685a56f255ebc3859c9692accdadf9e
      a4585285
  10. 11 Oct, 2013 3 commits
    • Yaowu Xu's avatar
      Masking intra mode choice adaptively · 8b175679
      Yaowu Xu authored
      The commit changes to mask available intra prediction modes for test
      based on prediction block size.
      
      With this patch, encoding time of CpuUsed 2 reduces from 10% to 20% for
      HD clips with a compression drop of 0.2%
      
      Change-Id: I65f320f1237c0f5ae3a355bf7caf447f55625455
      8b175679
    • Paul Wilkins's avatar
      Experimental rate control change. · 704028d4
      Paul Wilkins authored
      When the codec in VBR (or cq) mode hits its max q limits and is
      struggling to hit a target bandwidth, the bit target per frame collapses.
      
      In the first instance normal frames cap out at the maximum allowed
      Q and then the ARF and GFs do the same. This latter behavior is not
      generally desirable as GFs and ARFs are only effective from a quality
      and data rate perspective if they have at lease some level of -Q delta
      compared to the surrounding frames.
      
      In this patch I define a separate max Q for GFs and ARFs that is
      derived from but somewhat lower than that defined for normal frames.
      In effect there is a minimum Q delta that will always be available for
      GFs and ARFs regardless of the target rate and MAXQ setting.
      
      This may of course mean that the absolute lowest rate obtainable for
      a given clip is somewhat higher.
      
      Change-Id: I268868b28401900d0cd87e51e609cd3b784ab54a
      704028d4
    • Paul Wilkins's avatar
      Disable recode loop. · 8b989f5b
      Paul Wilkins authored
      For VBR coding disable the recode loop for speeds > 0.
      
      Results pending.
      
      Change-Id: I2cd9a87c3fcbe39c05b954798d0671a4ca62c37f
      8b989f5b
  11. 10 Oct, 2013 1 commit
  12. 09 Oct, 2013 1 commit
    • Jingning Han's avatar
      Deprecate the use of PARTITION_INFO from encoder · 03fe08ca
      Jingning Han authored
      Use b_mode_info to store the inter prediction mode of sub8x8 block,
      in replacement of the use of partition_info. Remove redundant buffer
      update for partition_info. For bus_cif at 2000 kbps, this seem to make
      speed 0 about 1% faster.
      
      Change-Id: Id1b3be45e75a24fb4b42335ac480c23e440978f6
      03fe08ca
  13. 08 Oct, 2013 2 commits
    • Dmitry Kovalev's avatar
      Removing inv_txm4x4_1_add and inv_txm4x4_add function pointers. · c983c966
      Dmitry Kovalev authored
      We already have itxm_add member in MACROBLOCKD structure. Both
      inv_txm4x4_1_add and inv_txm4x4_add are just its special cases for
      different eob values. But eob logic is already implemented in
      vp9_iwht4x4_add and vp9_idct4x4_add (that's why also removing
      inverse_transform_b_4x4_add).
      
      Change-Id: I80bec9b6f7d40c5e5033c613faca5c819c3e6326
      c983c966
    • Yaowu Xu's avatar
      Change to allow less rectangular partion check · e29137df
      Yaowu Xu authored
      For CpuUsed 1 & 2, this commit allow to skip retangular partition check
      when NONE is better than SPLIT. It also changed to allow such logic
      on alt ref frame coding rather than use square partition all them. The
      change has gain compressio about .3% on yt and ythd for both 1&2, It
      helped .6% compression on cif and stdhd for both CpuUsed 1&2.
      
      Change-Id: I814b653baf89f59acd20e042629a12938a1bd4e5
      e29137df
  14. 07 Oct, 2013 1 commit
    • Jim Bankoski's avatar
      cpplint errors in vp9_onyx_if.h · 7eb7dd2f
      Jim Bankoski authored
      Slightly bigger change -> broke up encode_frame_to_datarate,  lots
      of line length fixes.
      
      Change-Id: I7c53325e954de130f3fe1a6656626efc6705be82
      7eb7dd2f
  15. 05 Oct, 2013 1 commit
    • Jingning Han's avatar
      Allow sub8x8 intra modes test for alt frame coding · 0d0ed6a2
      Jingning Han authored
      This commit allows sub8x8 intra modes test in the rate-distortion
      loop for hd sequences in speed 1 and 2.
      
      For sequence y90n of hd set at 8000 kbps, speed 2 runtime goes
      from 207s to 210s. For ped_1080p at 3000 kbps, speed 2 runtim goes
      from 336s to 337s. Both are running with 300 frames.
      
      This improves compression performance by 0.24% for stdhd and 0.32%
      for hd.
      
      Change-Id: I173ca38a6411565ae6cfadd184c42b2070c5de1f
      0d0ed6a2
  16. 04 Oct, 2013 4 commits
    • Dmitry Kovalev's avatar
      Giving consistent names to IDCT/IWHT functions. · 3a060257
      Dmitry Kovalev authored
      The idea is to have the following names for each transform size:
      
      vp9_idct4x4_add
        vp9_idct4x4_1_add
        vp9_idct4x4_10_add
        vp9_idct4x4_16_add
      
      vp9_idct8x8_add
        vp9_idct8x8_1_add
        vp9_idct8x8_10_add
        vp9_idct8x8_64_add
      
      etc for 16x16, 32x32
      
      The actual list of renames in this patch:
      
      vp9_idct_add_lossless     -> vp9_iwht4x4_add
      vp9_short_iwalsh4x4_add   -> vp9_iwht4x4_16_add
      vp9_short_iwalsh4x4_1_add -> vp9_iwht4x4_1_add
      
      vp9_idct_add            -> vp9_idct4x4_add
      vp9_short_idct4x4_add   -> vp9_idct4x4_16_add
      vp9_short_idct4x4_1_add -> vp9_idct4x4_1_add
      
      Change-Id: I6f43f7437c68dd30cdd05d72e213765578ed30b1
      3a060257
    • Paul Wilkins's avatar
      Further clean up of speed 4 · 44e039b4
      Paul Wilkins authored
      Speed 4 still does not give a big gain over speed 3.
      This just cleans it up a little from the last patch and comments
      out features that do not seem to be giving much benefit.
      
      Change-Id: I5f366e6160e1dbe5dc45cf5eb90cc02712baa1b6
      44e039b4
    • Paul Wilkins's avatar
      Selective masking of split modes. · de6ecc5a
      Paul Wilkins authored
      Allow selective masking of individual split modes rather than
      just a single on / off flag.
      
      For speed 2 recovers the large speed loss seen for some derf
      clips  in change Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
      and a small quality gain.
      
      For speed 1 10 % speed increase observed locally on some derf clips
      for minimal quality change.
      
      Change-Id: If86191087b93cbc05351c26c60c7933e2149e485
      de6ecc5a
    • Paul Wilkins's avatar
      Missing threshold case for disable split. · 03dd2818
      Paul Wilkins authored
      In relation to change:
      Refactor inter mode rate-distortion search
       Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
      
      sf->thresh_mult_sub8x8[THR_INTRA] = INT_MAX missing;
      
      Change-Id: Ia86b68a5073368a3e2ca124a27b632243b525c8b
      03dd2818
  17. 03 Oct, 2013 2 commits
    • Jingning Han's avatar
      Refactor inter mode rate-distortion search · 11abab35
      Jingning Han authored
      This commit separates the rate-distortion optimization loop of
      superblocks from that of sub8x8 blocks. This allows better design
      rate-distortion optimization search loop for each setting. It also
      removes the use of SPLITMV and I4X4_PRED therein.
      
      No performance change in speed 0 settings. For bus@CIF at 2000kbps,
      the speed 1 runtime goes from 48009ms to 43894ms (about 10% faster).
      The overall compression performance on derf changed by -0.021%.
      
      Speed 2 runtime goes from 27114ms to 28700ms (6% slower), while the
      overall coding efficiency goes up by 1.629% for derf, 1.236% for yt.
      
      Change-Id: Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
      11abab35
    • Paul Wilkins's avatar
      Speed setting review. · 6253cc92
      Paul Wilkins authored
      Substantial reworking of the speed vs quality trade offs for
      speed 1 and 2.
      
      In this patch I am attempting to freeze the "quality" meaning of
      speeds 1 and 2 relative to speed 0 so that in future we can
      better evaluate progress.
      
      I am targeting :
      Speed 1 quality ~-5% vs speed 0.
      Speed 2 quality ~-10% vs speed 0
      
      It is inevitable that quality will still fluctuate a little as we adjust
      settings and add new features, but we will attempt to keep as
      close as possible to these values. Above speed 2 things will remain
      a bit more fluid for now.
      
      In this patch speed 1 is approximately 4-5x as fast as speed 0. This
      is similar to before but the quality hit is a lot less. Likewise speed 2
      is approximately 2x as fast as speed 1 but is similar in quality to the
      previous speed 1 configuration.
      
      Also slight change to behavior of FLAG_EARLY_TERMINATE to insure
      all reference frames get at least one rd test. Important for very low
      variance regions.
      
      WIP :- Added a new speed level with old speed 4 becoming speed 5.
      Speed 3 and 4 tradeoffs still WIP
      
      Change-Id: Ic7a38dd7b5b63ab1501f9352411972f480ac6264
      6253cc92
  18. 02 Oct, 2013 1 commit
  19. 30 Sep, 2013 2 commits
    • Paul Wilkins's avatar
      Improved auto_partition_range. · 65b93c7e
      Paul Wilkins authored
      The code now takes into account temporal and spatial
      information to determine the partition size range, but the
      frequency counts have been removed.
      
      The net effect is similar in quality but about 10% faster.
      
      Change-Id: I39a513fb79cec9177b73b2a7218f0da70963ae95
      65b93c7e
    • Paul Wilkins's avatar
      Alter Speed 3. · a76caa7f
      Paul Wilkins authored
      This patch deletes the variance based speed three partitioning.
      Speed 3 now uses the same partitioning method as speed 2
      but with some stricter conditions.
      
      The speed and quality are now somewhere between speeds 2 and 4
      whereas before it was worse in both than speed 4.
      
      Change-Id: Ia142e7007299d79db3ceee6ca8670540db6f7a41
      a76caa7f
  20. 27 Sep, 2013 1 commit
    • Deb Mukherjee's avatar
      Some minor changes/cleanups in rate control · 80d58223
      Deb Mukherjee authored
      Some small changes to the quantizer mapping functions.
      Also includes some cleanups.
      
      Change-Id: I9dea29b24015f6e6697012a0e4d8983049d8e5c7
      Results:
      derfraw300: +0.106%
      stdhdraw250: +0.139%
      80d58223
  21. 24 Sep, 2013 1 commit
  22. 23 Sep, 2013 1 commit
    • Deb Mukherjee's avatar
      Improves constant qual, constrained qual turned on · d11221f4
      Deb Mukherjee authored
      Adds modeled functions to decide the qp for altref frames in constant q
      mode similar to other functions in use in bitrate mode.
      
      Also turns on the constrained quality mode (end-usage=2) option which
      was turned off before. Basic testing shows the mode works in principle,
      to cap bitrate to the target-bitrate specified, while allowing lower
      bitrate depending on the cq-level specified. The mode will need to be
      improved over time.
      
      Results for constant quality vs bitrate control mode:
      derfraw300/fullderfraw: +3.0% at constant quality over bitrate control.
      fullstdhdraw: +4.341%
      stdhdraw250: +5.361%
      
      Change-Id: If5027c9ec66c8e88d33e47062c6cb84a07b1cda9
      d11221f4