1. 10 May, 2013 - 1 commit
  2. 06 May, 2013 - 1 commit
    • John Koleszar's avatar
      Y4M input support for 4:2:2, 4:4:4, 4:4:4:4 · 8dd8287e
      John Koleszar authored
      Adds a new experiment CONFIG_NON420 that allows other chroma subsamplings
      to be passed to the codec. This commit allows the data to be passed from
      a y4m input file through vpxenc to the codec, where they're currently
      rejected. Later commits will finish support for this inside the codec.
      
      Change-Id: Ib3aac604d8cad9e24cef395fa1067f16ba7e8e43
      8dd8287e
  3. 08 Apr, 2013 - 1 commit
    • Jingning Han's avatar
      Clamp inferred motion vectors only · 12bf0796
      Jingning Han authored
      Clamp only the motion vectors inferred from neighboring reference
      macroblocks. The motion vectors obtained through motion search in
      NEWMV mode are constrained during the search process, which allows
      a relatively larger referencing region than the inferred mvs.
      Hence further clamping the best mv provided by the motion search may
      affect the efficacy of NEWMV mode.
      
      Synchronized the decoding process. The decoded mvs in NEWMV modes
      should be guaranteed to fit in the effective range. Put a mv range
      clamping function there for security purpose.
      
      This improves the coding performance of high motion sequences, e.g.,
      derf set:
      foreman 0.233%
      husky   0.175%
      icd     0.135%
      mother_daughter 0.337%
      pamphlet        0.561%
      
      stdhd set:
      blue_sky 0.408%
      city     0.455%
      also saw sunflower goes down by -0.469%.
      
      Change-Id: I3fcbba669e56dab779857a8126a91b926e899cb5
      12bf0796
  4. 27 Mar, 2013 - 1 commit
  5. 26 Mar, 2013 - 1 commit
    • Deb Mukherjee's avatar
      Implicit weighted prediction experiment · 23144d23
      Deb Mukherjee authored
      Adds an experiment to use a weighted prediction of two INTER
      predictors, where the weight is one of (1/4, 3/4), (3/8, 5/8),
      (1/2, 1/2), (5/8, 3/8) or (3/4, 1/4), and is chosen implicitly
      based on consistency of the predictors to the already
      reconstructed pixels to the top and left of the current macroblock
      or superblock.
      
      Currently the weighting is not applied to SPLITMV modes, which
      default to the usual (1/2, 1/2) weighting. However the code is in
      place controlled by a macro. The same weighting is used for Y and
      UV components, where the weight is derived from analyzing the Y
      component only.
      
      Results (over compound inter-intra experiment)
      derf: +0.18%
      yt: +0.34%
      hd: +0.49%
      stdhd: +0.23%
      
      The experiment suggests bigger benefit for explicitly signaled weights.
      
      Change-Id: I5438539ff4485c5752874cd1eb078ff14bf5235a
      23144d23
  6. 22 Mar, 2013 - 1 commit
    • Dmitry Kovalev's avatar
      Fixing fourcc for VP8 and VP9. · 8015a9ae
      Dmitry Kovalev authored
      Changing 0x00 ('') fourcc byte to 0x30 ('0'). For VP8 from
      0x00385056 to 0x30385056, for VP9 from 0x00395056 to 0x30395056.
      
      Change-Id: I26b1b603c20dd41f7aeabf8cd7893dfd5b1c8b59
      8015a9ae
  7. 14 Mar, 2013 - 1 commit
    • John Koleszar's avatar
      Add VP9_GET_REFERENCE control · b3c350a1
      John Koleszar authored
      This is like VP8_COPY_REFERENCE, but returns a pointer to the reference
      frame rather than a copy of it. This is useful when the application
      doesn't know what the size of the reference is, as is the case when
      scaling is in effect.
      
      Change-Id: I63667109f65510364d0e397ebe56217140772085
      b3c350a1
  8. 11 Mar, 2013 - 1 commit
  9. 05 Mar, 2013 - 1 commit
  10. 04 Mar, 2013 - 4 commits
    • John Koleszar's avatar
      Fix rollover and pass 1 time estimate · 406ec6b6
      John Koleszar authored
      Fixes a rollover of the cx_time variable for encodes that take
      over ~4200 seconds. Also enable the time estimate in first pass.
      
      Change-Id: Ib5a98ee71bccd79a804d709cec7260651d0b7141
      406ec6b6
    • John Koleszar's avatar
      vpxenc: support scaling prior to encoding · 7dfec960
      John Koleszar authored
      Scales the input of the encoder using libyuv's "box filter". Each stream
      may have a different width and height specified. If the width (or
      height) parameter is missing (or is explicitly set to 0) then the value
      will be calculated based on the specified height (or width) and the
      input file's dimensions, preserving its aspect ratio. Leaving the height
      unspecified behaves similarly.
      
      Change-Id: I700ef89ce54fb87588420a71c39c0e3e73b1a40e
      7dfec960
    • Ronald S. Bultje's avatar
      Don't exit on decode errors in vpxenc. · 2d13e7b3
      Ronald S. Bultje authored
      Allows the user to specify whether decode errors should be fatal or not.
      Also makes mismatches optionally fatal.
      
      Change-Id: I58cff4a82f3d42f5653b91cf348a7f669377e632
      2d13e7b3
    • John Koleszar's avatar
      Add estimated completion time to vpxenc · 60d8c505
      John Koleszar authored
      Make the progress line more useful by providing per-frame updates of
      processing frame rate and estimated time remaining.
      
      Fixes issue #534.
      
      Change-Id: Ic91551878ff4b2f5db1cedaafb588add220cfa52
      60d8c505
  11. 27 Feb, 2013 - 2 commits
    • John Koleszar's avatar
      Fix rollover and pass 1 time estimate · ebf8b9fc
      John Koleszar authored
      Fixes a rollover of the cx_time variable for encodes that take
      over ~4200 seconds. Also enable the time estimate in first pass.
      
      Change-Id: Ib5a98ee71bccd79a804d709cec7260651d0b7141
      ebf8b9fc
    • John Koleszar's avatar
      vpxenc: support scaling prior to encoding · 34882b9b
      John Koleszar authored
      Scales the input of the encoder using libyuv's "box filter". Each stream
      may have a different width and height specified. If the width (or
      height) parameter is missing (or is explicitly set to 0) then the value
      will be calculated based on the specified height (or width) and the
      input file's dimensions, preserving its aspect ratio. Leaving the height
      unspecified behaves similarly.
      
      Change-Id: Ic7026810b13be030826be80dc6f7fc4aaf0c35d0
      34882b9b
  12. 22 Feb, 2013 - 1 commit
    • Jingning Han's avatar
      Forward butterfly hybrid transform · babbd5d1
      Jingning Han authored
      This patch includes 4x4, 8x8, and 16x16 forward butterfly ADST/DCT
      hybrid transform. The kernel of 4x4 ADST is sin((2k+1)*(n+1)/(2N+1)).
      The kernel of 8x8/16x16 ADST is of the form sin((2k+1)*(2n+1)/4N).
      
      Change-Id: I8f1ab3843ce32eb287ab766f92e0611e1c5cb4c1
      babbd5d1
  13. 21 Feb, 2013 - 1 commit
  14. 20 Feb, 2013 - 1 commit
  15. 13 Feb, 2013 - 2 commits
    • 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
    • John Koleszar's avatar
      Add estimated completion time to vpxenc · 25b6e9f4
      John Koleszar authored
      Make the progress line more useful by providing per-frame updates of
      processing frame rate and estimated time remaining.
      
      Fixes issue #534.
      
      Change-Id: Ic91551878ff4b2f5db1cedaafb588add220cfa52
      25b6e9f4
  16. 07 Feb, 2013 - 1 commit
    • Jingning Han's avatar
      Butterfly ADST based hybrid transform · d15e1da4
      Jingning Han authored
      Refactor the 8x8 inverse hybrid transform. It is now consistent
      with the new inverse DCT. Overall performance loss (due to the
      use of this variant ADST, and the rounding errors in the butterfly
      implementation) for std-hd is -0.02.
      
      Fixed BUILD warning.
      
      Devise a variant of the original ADST, which allows butterfly
      computation structure. This new transform has kernel of the
      form: sin((2k+1)*(2n+1) / (4N)). One of its butterfly structures
      using floating-point multiplications was reported in Z. Wang,
      "Fast algorithms for the discrete W transform and for the discrete
      Fourier transform", IEEE Trans. on ASSP, 1984.
      
      This patch includes the butterfly implementation of the inverse
      ADST/DCT hybrid transform of dimension 8x8.
      
      Change-Id: I3533cb715f749343a80b9087ce34b3e776d1581d
      d15e1da4
  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. 03 Feb, 2013 - 1 commit
  19. 26 Jan, 2013 - 1 commit
    • Deb Mukherjee's avatar
      Adding a frame parallel decoding mode · dfd89f2e
      Deb Mukherjee authored
      Adds a flag to disable features that would inhibit frame parallel
      decoding. This includes backward adaptation and MV sorting based
      on search in ref frame buffer.
      
      Also includes some minor clean-ups.
      
      Change-Id: I434846717a47b7bcb244b37ea670c5cdf776f14d
      dfd89f2e
  20. 24 Jan, 2013 - 2 commits
    • Paul Wilkins's avatar
      MSVS compiler error · f7597625
      Paul Wilkins authored
      Visual Studio reports and error on the line
        static const int bsize2 = bsize >> 1;
      
      "error C2099: initializer is not a constant"
      
      Also warnings on signed/unsigned mismatch
      
      Change-Id: I76cb06f736bd9c90107a26bfb3c130ec3f6c33de
      f7597625
    • Deb Mukherjee's avatar
      Adds an error-resilient mode with test · 01cafaab
      Deb Mukherjee authored
      Adds an error-resilient mode where frames can be continued
      to be decoded even when there are errors (due to network losses)
      on a prior frame. Specifically, backward updates are turned off
      and probabilities of various symbols are reset to defaults at
      the beginning of each frame. Further, the last frame's mvs are
      not used for the mv reference list, and the sorting of the
      initial list based on search on previous frames is turned off
      as well.
      
      Also adds a test where an arbitrary set of frames are skipped
      from decoding to simulate errors. The test verifies (1) that if
      the error frames are droppable - i.e. frame buffer updates have
      been turned off - there are no mismatch errors for the remaining
      frames after the error frames; and (2) if the error-frames are non
      droppable, there are not only no decoding errors but the mismatch
      PSNR between the decoder's version of the post-error frames and the
      encoder's version is at least 20 dB.
      
      Change-Id: Ie6e2bcd436b1e8643270356d3a930e8989ff52a5
      01cafaab
  21. 26 Dec, 2012 - 1 commit
  22. 29 Nov, 2012 - 1 commit
    • Deb Mukherjee's avatar
      Fixing 8x8/4x4 ADST for intra modes with tx select · 0742b1e4
      Deb Mukherjee authored
      This patch allows use of 8x8 and 4x4 ADST correctly for Intra
      16x16 modes and Intra 8x8 modes when the block size selected
      is smaller than the prediction mode. Also includes some cleanups
      and refactoring.
      
      Rebase.
      
      Change-Id: Ie3257bdf07bdb9c6e9476915e3a80183c8fa005a
      0742b1e4
  23. 18 Nov, 2012 - 1 commit
  24. 15 Nov, 2012 - 2 commits
  25. 11 Nov, 2012 - 1 commit
  26. 09 Nov, 2012 - 2 commits
  27. 06 Nov, 2012 - 2 commits
  28. 01 Nov, 2012 - 1 commit
  29. 26 Oct, 2012 - 1 commit
  30. 11 Oct, 2012 - 1 commit
  31. 20 Aug, 2012 - 1 commit