1. 10 Nov, 2012 1 commit
  2. 08 Nov, 2012 1 commit
    • Ronald S. Bultje's avatar
      Implement tx_select for superblock encoding. · 1d4fbeb3
      Ronald S. Bultje authored
      Also split superblock handling code out of decode_macroblock() into
      a new function decode_superblock(), for easier readability.
      
      Derf +0.05%, HD +0.2%, STDHD +0.1%. We can likely get further gains
      by allowing to select mb_skip_coeff for a subset of the complete SB
      or something along those lines, because although this change allows
      coding smaller transforms for bigger predictors, it increases the
      overhead of coding EOBs to skip the parts where the residual is
      near-zero, and thus the overall gain is not as high as we'd expect.
      
      Change-Id: I552ce1286487267f504e3090b683e15515791efa
      1d4fbeb3
  3. 02 Nov, 2012 2 commits
  4. 01 Nov, 2012 1 commit
  5. 31 Oct, 2012 3 commits
  6. 20 Aug, 2012 1 commit
    • Ronald S. Bultje's avatar
      Superblock coding. · 5d4cffb3
      Ronald S. Bultje authored
      This commit adds a pick_sb_mode() function which selects the best 32x32
      superblock coding mode. Then it selects the best per-MB modes, compares
      the two and encodes that in the bitstream.
      
      The bitstream coding is rather simplistic right now. At the SB level,
      we code a bit to indicate whether this block uses SB-coding (32x32
      prediction) or MB-coding (anything else), and then we follow with the
      actual modes. This could and should be modified in the future, but is
      omitted from this commit because it will likely involve reorganizing
      much more code rather than just adding SB coding, so it's better to let
      that be judged on its own merits.
      
      Gains on derf: about even, YT/HD: +0.75%, STD/HD: +1.5%.
      
      Change-Id: Iae313a7cbd8f75b3c66d04a68b991cb096eaaba6
      5d4cffb3
  7. 17 Jul, 2012 1 commit
  8. 29 Jun, 2012 1 commit
    • Hui Su's avatar
      Add lossless compression mode. · e44ee38a
      Hui Su authored
      This commit adds lossless compression capability to the experimental
      branch. The lossless experiment can be enabled using --enable-lossless
      in configure. When the experiment is enabled, the encoder will use
      lossless compression mode by command line option --lossless, and the
      decoder automatically recognizes a losslessly encoded clip and decodes
      accordingly.
      
      To achieve the lossless coding, this commit has changed the following:
          1. To encode at lossless mode, encoder forces the use of unit
      quantizer, i.e, Q 0, where effective quantization is 1. Encoder also
      disables the usage of 8x8 transform and allows only 4x4 transform;
          2. At Q 0, the first order 4x4  DCT/IDCT have been switched over
      to a pair of forward and inverse Walsh-Hadamard Transform
      (http://goo.gl/EIsfy),  with proper scaling applied to match the range
      of the original 4x4 DCT/IDCT pair;
          3. At Q 0, the second order remains to use the previous
      walsh-hadamard transform pair. However, to maintain the reversibility
      in second order transform at Q 0, scaling down is applied to first
      order DC coefficients prior to forward transform, and scaling up is
      applied to the second order output prior to quantization. Symmetric
      upscaling and downscaling are added around inverse second order
      transform;
          4. At lossless mode, encoder also disables a number of minor
      features to ensure no loss is introduced, these features includes:
              a. Trellis quantization optimization
              b. Loop filtering
              c. Aggressive zero-binning, rounding and zero-bin boosting
              d. Mode based zero-bin boosting
      
      Lossless coding test was performed on all clips within the derf set,
      to verify that the commit has achieved lossless compression for all
      clips. The average compression ratio is around 2.57 to 1.
      (http://goo.gl/dEShs)
      
      Change-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34
      e44ee38a
  9. 15 Mar, 2012 1 commit
    • Yaowu Xu's avatar
      WebM Experimental Codec Branch Snapshot · 6035da54
      Yaowu Xu authored
      This is a code snapshot of experimental work currently ongoing for a
      next-generation codec.
      
      The codebase has been cut down considerably from the libvpx baseline.
      For example, we are currently only supporting VBR 2-pass rate control
      and have removed most of the code relating to coding speed, threading,
      error resilience, partitions and various other features.  This is in
      part to make the codebase easier to work on and experiment with, but
      also because we want to have an open discussion about how the bitstream
      will be structured and partitioned and not have that conversation
      constrained by past work.
      
      Our basic working pattern has been to initially encapsulate experiments
      using configure options linked to #IF CONFIG_XXX statements in the
      code. Once experiments have matured and we are reasonably happy that
      they give benefit and can be merged without breaking other experiments,
      we remove the conditional compile statements and merge them in.
      
      Current changes include:
      * Temporal coding experiment for segments (though still only 4 max, it
        will likely be increased).
      * Segment feature experiment - to allow various bits of information to
        be coded at the segment level. Features tested so far include mode
        and reference frame information, limiting end of block offset and
        transform size, alongside Q and loop filter parameters, but this set
        is very fluid.
      * Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used
        in MBs using 16x16 prediction modes within inter frames.
      * Compound prediction (combination of signals from existing predictors
        to create a new predictor).
      * 8 tap interpolation filters and 1/8th pel motion vectors.
      * Loop filter modifications.
      * Various entropy modifications and changes to how entropy contexts and
        updates are handled.
      * Extended quantizer range matched to transform precision improvements.
      
      There are also ongoing further experiments that we hope to merge in the
      near future: For example, coding of motion and other aspects of the
      prediction signal to better support larger image formats, use of larger
      block sizes (e.g. 32x32 and up) and lossless non-transform based coding
      options (especially for key frames). It is our hope that we will be
      able to make regular updates and we will warmly welcome community
      contributions.
      
      Please be warned that, at this stage, the codebase is currently slower
      than VP8 stable branch as most new code has not been optimized, and
      even the 'C' has been deliberately written to be simple and obvious,
      not fast.
      
      The following graphs have the initial test results, numbers in the
      tables measure the compression improvement in terms of percentage. The
      build has  the following optional experiments configured:
      --enable-experimental --enable-enhanced_interp --enable-uvintra
      --enable-high_precision_mv --enable-sixteenth_subpel_uv
      
      CIF Size clips:
      http://getwebm.org/tmp/cif/
      HD size clips:
      http://getwebm.org/tmp/hd/
      (stable_20120309 represents encoding results of WebM master branch
      build as of commit#7a159071)
      
      They were encoded using the following encode parameters:
      --good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63
      --end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999
      --kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50
      --minsection-pct=0 --maxsection-pct=800 --sharpness=0
      --arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF)
      --arnr-type=3
      
      Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
      6035da54
  10. 01 Mar, 2012 1 commit
  11. 15 Dec, 2011 1 commit
    • Scott LaVarnway's avatar
      Moved dequant idct into common · a53d5a4c
      Scott LaVarnway authored
      These functions are now used by the encoder.
      This is WIP with the goal of creating a common idct/add for
      the encoder and decoder.  A boost of 1.8% was seen for
      the HD rt test clip used.
      
      [Tero] Added needed changes to ARM side.
      
      Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
      a53d5a4c
  12. 25 Nov, 2011 1 commit
    • Scott LaVarnway's avatar
      Modified the inverse walsh to output directly · 4a91541c
      Scott LaVarnway authored
      to the dqcoeff or qcoeff buffer.  The encoder would
      populate the dc coeffs of the y blocks as a separate
      stage (recon_dcblock) and the decoder would use a special
      version of the idct.  This change eliminates the extra copy
      and reduces the code footprint.
      
      [Tero] Added needed changes to armv6 and NEON assembly.
      
      Change-Id: I83202ffdbaf83f6e5dd69f4ba2519fcf0b13b3ba
      4a91541c
  13. 18 Oct, 2011 1 commit
    • Scott LaVarnway's avatar
      Remove usage of predict buffer for decode · ed9c66f5
      Scott LaVarnway authored
      Instead of using the predict buffer, the decoder now writes
      the predictor into the recon buffer.  For blocks with eob=0,
      unnecessary idcts can be eliminated.  This gave a performance
      boost of ~1.8% for the HD clips used.
      
      Tero: Added needed changes to ARM side and scheduled some
            assembly code to prevent interlocks.
      
      Patch Set 6:  Merged (I1bcdca7a95aacc3a181b9faa6b10e3a71ee24df3)
      into this commit because of similarities in the idct
      functions.
      Patch Set 7: EC bug fix.
      
      Change-Id: Ie31d90b5d3522e1108163f2ac491e455e3f955e6
      ed9c66f5
  14. 22 Sep, 2011 1 commit
  15. 21 Jul, 2011 1 commit
    • Yaowu Xu's avatar
      fix more merge issues · 8c31484e
      Yaowu Xu authored
      With this fix, the experimental branch now builds and encodes correctly
      with the following two configure options respectively:
      --enable-experimental --enable-t8x8
      --enable-experimental
      
      Change-Id: I3147c33c503fe713a85fd371e4f1a974805778bf
      8c31484e
  16. 20 Jul, 2011 1 commit
  17. 10 Feb, 2011 1 commit
    • John Koleszar's avatar
      Fix relative include paths · 02321de0
      John Koleszar authored
      Allow compiling without adding vp8/{common,encoder,decoder} to the
      include paths.
      
      Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
      02321de0
  18. 27 Oct, 2010 1 commit
    • Johann's avatar
      fix implicit declarations · b90a072f
      Johann authored
      ARM used to explicitly remove this file from the build. With the RTCD
      changes, that's no longer possible. These errors also exist for x86 w/o
      RTCD, but that's not the default configuration
      
      Change-Id: I3e10e5553ddf3278e8d3c9365ca6fb84f52f5066
      b90a072f
  19. 09 Sep, 2010 1 commit
  20. 23 Aug, 2010 1 commit
    • Fritz Koenig's avatar
      Rework idct calling structure. · 93c32a55
      Fritz Koenig authored
      Moving the eob structure allows for a non-struct based
      function to handle decoding an entire mb of
      idct/dequant/recon data.  This allows for SIMD functions
      to idct/dequant/recon multiple blocks at once.
      
      SSE2 implementation gives 3% gain on Atom.
      
      Change-Id: I8a8f3efd546ea4e0535f517d94f347cfb737c9c2
      93c32a55