1. 02 Feb, 2014 1 commit
    • Marco Paniconi's avatar
      Layer based rate control for CBR mode. · 6be2b750
      Marco Paniconi authored
      This patch adds a buffer-based rate control for temporal layers,
      under CBR mode.
      
      Added vpx_temporal_scalable_patters.c encoder for testing temporal
      layers, for both vp9 and vp8 (replaces the old vp8_scalable_patterns).
      
      Updated datarate unittest with tests for temporal layer rate-targeting.
      
      Change-Id: I9cb6cce2494390ae6096ee17774af7fb9308bde7
      6be2b750
  2. 27 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing vpx_codec_vp9x_cx and internal experimental flag. · 116e0a1a
      Dmitry Kovalev authored
      vpx_codec_vp9x_cx is not used internally. Experimental flag from
      vp9_extracfg is also not really used. YUV 4:4:4 just works after these
      changes (you have to specify --profile=1 for the encoder).
      
      Change-Id: Ib1c8461d0d19d159827e005efe868f891eea0140
      116e0a1a
  3. 17 Dec, 2013 1 commit
  4. 16 Dec, 2013 1 commit
  5. 21 Nov, 2013 1 commit
  6. 15 Nov, 2013 1 commit
  7. 06 Nov, 2013 1 commit
    • Ivan Maltz's avatar
      Move SVC per-frame loop from sample app into libvpx proper · 1ed0e1be
      Ivan Maltz authored
      SVC multiple layer per frame encoding is invoked with vpx_svc_init and
      vpx_svc_encode. These interfaces are designed to be invoked from ffmpeg.
      Additional improvements:
      - make dummy frame handling a bit more explicit
      - fixed bug with single layer encodes
      - track individual frame sizes and psnrs instead of averages
      - parameterized quantizer, 16th scalefactors, more logging,
      - enabled single layer encodes to generate baseline
      - include new mode for 3 layer I frame with 5 total layers
      
      Change-Id: I46cfa600d102e208c6af8acd6132e0cc25cda8d4
      1ed0e1be
  8. 29 Oct, 2013 1 commit
    • Adrian Grange's avatar
      Resolved Doxygen warnings. · f58eca90
      Adrian Grange authored
      Added comments to make the codebase build cleanly in Doxygen.
      
      Change-Id: I01e000ceac57dbafa04342858c8f1be250ba20d1
      f58eca90
  9. 22 Oct, 2013 1 commit
    • 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
  10. 21 Oct, 2013 1 commit
    • 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
  11. 30 Sep, 2013 1 commit
  12. 09 Sep, 2013 1 commit
    • Ivan Maltz's avatar
      API extensions and sample app for spacial scalable encoder · 01b35c3c
      Ivan Maltz authored
      Sample app: vp9_spatial_scalable_encoder
      vpx_codec_control extensions:
        VP9E_SET_SVC
        VP9E_SET_WIDTH, VP9E_SET_HEIGHT, VP9E_SET_LAYER
        VP9E_SET_MIN_Q, VP9E_SET_MAX_Q
      expanded buffer size for vp9_convolve
      
      modified setting of initial width in vp9_onyx_if.c so that layer size
      can be set prior to initial encode
      
      Default number of layers set to 3 (VPX_SS_DEFAULT_LAYERS)
      Number of layers set explicitly in vpx_codec_enc_cfg.ss_number_layers
      
      Change-Id: I2c7a6fe6d665113671337032f7ad032430ac4197
      01b35c3c
  13. 24 Apr, 2013 1 commit
    • Paul Wilkins's avatar
      Extension of segmentation to 8 segments. · 31ee193a
      Paul Wilkins authored
      Also some further simplification following removal
      of top node code.
      
      There is an issue in regards to the shared file vp8cx.h
      in regard to the roi_map as this interface assumes that
      there are only 4 segments. I have left the value here as
      4 for now meaning that the roi_map interface is broken
      for VP9.
      
      Note that this change would have been easier if I hadn't
      had to search for hard wire instances of the number 4
      and <= 3.
      
      Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
      31ee193a
  14. 27 Mar, 2013 1 commit
  15. 13 Feb, 2013 1 commit
    • Ronald S. Bultje's avatar
      Add support for tile rows. · 89a206ef
      Ronald S. Bultje authored
      These allow sending partial bitstream packets over the network before
      encoding a complete frame is completed, thus lowering end-to-end
      latency. The tile-rows are not independent.
      
      Change-Id: I99986595cbcbff9153e2a14f49b4aa7dee4768e2
      89a206ef
  16. 12 Feb, 2013 1 commit
  17. 05 Feb, 2013 1 commit
    • Ronald S. Bultje's avatar
      [WIP] Add column-based tiling. · 1407bdc2
      Ronald S. Bultje authored
      This patch adds column-based tiling. The idea is to make each tile
      independently decodable (after reading the common frame header) and
      also independendly encodable (minus within-frame cost adjustments in
      the RD loop) to speed-up hardware & software en/decoders if they used
      multi-threading. Column-based tiling has the added advantage (over
      other tiling methods) that it minimizes realtime use-case latency,
      since all threads can start encoding data as soon as the first SB-row
      worth of data is available to the encoder.
      
      There is some test code that does random tile ordering in the decoder,
      to confirm that each tile is indeed independently decodable from other
      tiles in the same frame. At tile edges, all contexts assume default
      values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode),
      and motion vector search and ordering do not cross tiles in the same
      frame.
      t log
      
      Tile independence is not maintained between frames ATM, i.e. tile 0 of
      frame 1 is free to use motion vectors that point into any tile of frame
      0. We support 1 (i.e. no tiling), 2 or 4 column-tiles.
      
      The loopfilter crosses tile boundaries. I discussed this briefly with Aki
      and he says that's OK. An in-loop loopfilter would need to do some sync
      between tile threads, but that shouldn't be a big issue.
      
      Resuls: with tiling disabled, we go up slightly because of improved edge
      use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf,
      ~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5%
      on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is
      concentrated in the low-bitrate end of clips, and most of it is because
      of the loss of edges at tile boundaries and the resulting loss of intra
      predictors.
      
      TODO:
      - more tiles (perhaps allow row-based tiling also, and max. 8 tiles)?
      - maybe optionally (for EC purposes), motion vectors themselves
        should not cross tile edges, or we should emulate such borders as
        if they were off-frame, to limit error propagation to within one
        tile only. This doesn't have to be the default behaviour but could
        be an optional bitstream flag.
      
      Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
      1407bdc2
  18. 15 Nov, 2012 1 commit
  19. 06 Nov, 2012 1 commit
  20. 01 Nov, 2012 1 commit
  21. 14 Aug, 2012 1 commit
  22. 24 Jul, 2012 1 commit
  23. 23 Jul, 2012 1 commit
  24. 17 Jul, 2012 1 commit
  25. 13 Jul, 2012 1 commit
  26. 23 Jun, 2012 1 commit
  27. 02 May, 2012 2 commits
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 22ae1403
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      22ae1403
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 28f54515
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      28f54515
  28. 28 Jul, 2011 1 commit
    • John Koleszar's avatar
      Convert rc_max_intra_bitrate_pct to control · 1654ae9a
      John Koleszar authored
      Since this is the only ABI incompatible change since the last release,
      convert it to use the control interface instead. The member of the
      configuration struct is replaced with the VP8E_SET_MAX_INTRA_BITRATE_PCT
      control.
      
      More significant API changes were expected to be forthcoming when this
      control was first introduced, and while they continue to be expected,
      it's not worth breaking compatibility for only this change.
      
      Change-Id: I799d8dbe24c8bc9c241e0b7743b2b64f81327d59
      1654ae9a
  29. 28 Jun, 2011 1 commit
    • Johann's avatar
      use relative include path · 4e4f8352
      Johann authored
      Files are already in vpx/
      
      Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
      4e4f8352
  30. 11 Apr, 2011 1 commit
  31. 24 Feb, 2011 1 commit
  32. 17 Feb, 2011 1 commit
    • James Zern's avatar
      documentation: minor cosmetics · f42d52e6
      James Zern authored
      - correct spelling
      - remove explicit file name w/\file (unnecessary when contained in the
        same file and prone to desync)
      
      Change-Id: I68a3960ac5ab84d0f2e5c9b2e29799f26dfccf23
      f42d52e6
  33. 07 Jan, 2011 1 commit
    • Paul Wilkins's avatar
      CQ Mode · e0846c9c
      Paul Wilkins authored
      The merge includes hooks to for CQ mode and other code
      changes merged from the test branch.
      
      CQ mode attempts to maintain a more stable quantizer within a clip
      whilst also trying to adhere to a guidline maximum bitrate.
      
      The existing target data rate parameter is used to specify the
      guideline maximum bitrate.
      
      A new parameter allows the user to specify a target CQ level.
      
      For normal (non kf/gf/arf) frames, the quantizer will not drop BELOW the
      user specified value (0-63). However, in some cases the encoder may
      choose to impose a target CQ that is above that specified by the user,
      if it estimates that consistent use of the target value is not compatible
      with guideline maximum bitrate.
      
      Change-Id: I2221f9eecae8cc3c431d36caf83503941b25e4c1
      e0846c9c
  34. 17 Dec, 2010 1 commit
    • John Koleszar's avatar
      Add psnr/ssim tuning option · b0da9b39
      John Koleszar authored
      Add a new encoder control, VP8E_SET_TUNING, to allow the application
      to inform the encoder that the material will benefit from certain
      tuning. Expose this control as the --tune option to vpxenc. The args
      helper is expanded to support enumerated arguments by name or value.
      
      Two tunings are provided by this patch, PSNR (default) and SSIM.
      Activity masking is made dependent on setting --tune=ssim, as the
      current implementation hurts speed (10%) and PSNR (2.7% avg,
      10% peak) too much for it to be a default yet.
      
      Change-Id: I110d969381c4805347ff5a0ffaf1a14ca1965257
      b0da9b39
  35. 23 Sep, 2010 1 commit
    • John Koleszar's avatar
      Add getter functions for the interface data symbols · fa7a55bb
      John Koleszar authored
      Having these symbols be available as functions rather than data is
      occasionally more convenient. Implemented this way rather than a
      get-codec-by-id style to avoid creating a link-time dependency
      between the encoder and the decoder.
      
      Fixes issue #169
      
      Change-Id: I319f281277033a5e7e3ee3b092b9a87cce2f463d
      fa7a55bb
  36. 09 Sep, 2010 1 commit
  37. 18 Jun, 2010 1 commit
    • John Koleszar's avatar
      cosmetics: trim trailing whitespace · 94c52e4d
      John Koleszar authored
      When the license headers were updated, they accidentally contained
      trailing whitespace, so unfortunately we have to touch all the files
      again.
      
      Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
      94c52e4d
  38. 04 Jun, 2010 1 commit
  39. 01 Jun, 2010 1 commit
    • John Koleszar's avatar
      setup experimental infrastructure · 0952acb7
      John Koleszar authored
      This patch creates some basic infrastructure for doing bitstream-
      incompatible changes to the VP8 encoder. The key parts are:
      
       - --enable-experimental configure switch, to enable support for this
         incompatible bitstream. This switch is required to be set to enable
         any "experiments"
      
       - A list for "experiments" which translate into --enable-<experiment>
         options and CONFIG_<experiment> macros.
      
       - The high bit of the "Version" field is used to indicate that the
         bitstream was produced by an experimental encoder. The decoder will
         fail to decode an experimental bitstream without
         --enable-experimental.
      
       - A new "vp8x" encoder interface is created to set the experimental
         bit.
      
       - The vp8x encoder interface is made the default for ivfenc in
         experimental mode.
      
      Change-Id: Idbdd5eae4cec5becf75bb4770837dcd256b2abef
      0952acb7