1. 09 Nov, 2012 1 commit
  2. 06 Nov, 2012 2 commits
  3. 01 Nov, 2012 1 commit
  4. 26 Oct, 2012 1 commit
  5. 11 Oct, 2012 1 commit
  6. 20 Aug, 2012 1 commit
  7. 14 Aug, 2012 1 commit
  8. 24 Jul, 2012 1 commit
  9. 23 Jul, 2012 1 commit
  10. 17 Jul, 2012 1 commit
  11. 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
  12. 20 Jun, 2012 1 commit
  13. 11 Jun, 2012 1 commit
    • John Koleszar's avatar
      Fix pedantic compiler warnings · 0164a1cc
      John Koleszar authored
      Allows building the library with the gcc -pedantic option, for improved
      portabilty. In particular, this commit removes usage of C99/C++ style
      single-line comments and dynamic struct initializers. This is a
      continuation of the work done in commit 97b766a4, which removed most
      of these warnings for decode only builds.
      
      Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
      0164a1cc
  14. 04 Jun, 2012 1 commit
  15. 19 May, 2012 1 commit
    • James Zern's avatar
      examples: use alignment > 1 w/vpx_img_alloc · 1e1799c9
      James Zern authored
      aligned buffers improve performace. this change brings vpxenc &
      vp8_scalable_patterns in line with the other examples.
      
      Change-Id: I4cf9f3e4728b901161905dd7ccb092e774ffb15f
      1e1799c9
  16. 01 May, 2012 1 commit
  17. 27 Apr, 2012 2 commits
  18. 26 Apr, 2012 2 commits
  19. 11 Apr, 2012 1 commit
    • Adrian Grange's avatar
      Superblock encoding order · 9daf3154
      Adrian Grange authored
      This is the first patch to add superblock (32x32) coding
      order capabilities. It does not yet do any mode selection
      at the SB level, that will follow in a further patch.
      
      This patch encodes rows of SBs rather than
      MBs, each SB contains 2x2 MBs.
      
      Two intra prediction modes have been disabled since they
      require reconstructed data for the above-right MB which
      may not have been encoded yet (e.g. for the bottom right
      MB in each SB).
      
      Results on the one test clip I have tried (720p GIPS clip)
      suggest that it is somewhere around 0.2dB worse than the
      baseline version, so there may be bugs.
      
      It has been tested with no experiments enabled and with
      the following 3 experiments enabled:
        --enable-enhanced_interp
        --enable-high_precision_mv
        --enable-sixteenth_subpel_uv
      in each case the decode buffer matches the recon buffer
      (using "cmp" to compare the dumped/decoded frames).
      Note: Testing these experiments individually created
      errors.
      
      Some problems were found with other experiments but it
      is unclear what state these experiments are in:
        --enable-comp_intra_pred
        --enable-newentropy
        --enable-uvintra
      
      This code has not been extensively tested yet, so there
      is every likelihood that further bugs remain. I also
      intend to do some code cleanup & refactoring in tandem
      with the next patch that adds the 32x32 modes.
      
      Change-Id: I1eba7f740a70b3510df58db53464535ef881b4d9
      9daf3154
  20. 26 Mar, 2012 1 commit
  21. 15 Mar, 2012 4 commits
    • Yaowu Xu's avatar
      Added encode/decode recon buffer match test to vpxenc · f85084a9
      Yaowu Xu authored
      The commit added a new command line option --test-decode to vpxenc.
      The option enables encoder to decode compressed frames and test recon
      buffers from the decode against those from encode for mismatch.
      
      There are a few limitations on this option currently, one of them
      being the match test is not done on a number of lagged frames at
      the end of an encoding.
      
      Change-Id: I80c29b46dcdcea9f48107a506b235743068862fe
      f85084a9
    • Yaowu Xu's avatar
      Added option to skip first n frame to vpxenc · 44f5f33b
      Yaowu Xu authored
      this commit added a command line option to skip first n frames from
      input file to facilitate debugging and testing.
      
      Change-Id: I4ffc5f85fa7e193ea4bdee08cb236717de8beef1
      44f5f33b
    • 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
    • Yaowu Xu's avatar
      Added encode/decode recon buffer match test to vpxenc · f798f9e4
      Yaowu Xu authored
      The commit added a new command line option --test-decode to vpxenc.
      The option enables encoder to decode compressed frames and test recon
      buffers from the decode against those from encode for mismatch.
      
      There are a few limitations on this option currently, one of them
      being the match test is not done on a number of lagged frames at
      the end of an encoding.
      
      Change-Id: I80c29b46dcdcea9f48107a506b235743068862fe
      f798f9e4
  22. 14 Mar, 2012 1 commit
    • Yaowu Xu's avatar
      Added option to skip first n frame to vpxenc · 03d5d693
      Yaowu Xu authored
      this commit added a command line option to skip first n frames from
      input file to facilitate debugging and testing.
      
      Change-Id: I4ffc5f85fa7e193ea4bdee08cb236717de8beef1
      03d5d693
  23. 08 Mar, 2012 1 commit
    • Yaowu Xu's avatar
      Changed MAX_PSNR to be consistent with internal stats · 8cf28d34
      Yaowu Xu authored
      The maximum psnr has a marginal impact on the overall output in high
      quality encodings, the change will make sure the psnr output to be
      consistent with encoder internal stats.
      
      Change-Id: I35cf2f85008ec127a7d91c9eb69fa7811798ae32
      8cf28d34
  24. 02 Mar, 2012 1 commit
    • Johann's avatar
      Fix encoder debug setting · 87c40b35
      Johann authored
      Propagate debug setting to the EBML struct. When writing the application
      name, this allows us to strip the version code and keep the output
      metadata static.
      
      Change-Id: I8e06c6abd743bedbff5af6242bbdae5d55754538
      87c40b35
  25. 29 Feb, 2012 2 commits
    • Yunqing Wang's avatar
      vpxenc: fix time and fps calculation in 2-pass encoding · aabae97e
      Yunqing Wang authored
      When we do 2-pass encoding, elapsed time is accumulated through
      whole 2-pass process, which gives incorrect time and fps results
      for second pass. This change fixed that by resetting the time
      accumulator for second pass.
      
      Change-Id: Ie6cbf0d0e66e6874e7071305e253c6267529cf20
      aabae97e
    • Attila Nagy's avatar
      Packing bitstream on-the-fly with delayed context updates · 52cf4dca
      Attila Nagy authored
      Produce the token partitions on-the-fly, while processing each MB.
      Context is updated at the beginning of each frame based on the
      previoud frame's counters. Optimally encoder outputs partitions in
      separate buffers. For frame based output, partitions are concatenated
      internally.
      
      Limitations:
          - enabled just in combination with realtime-only mode
          - number of encoding threads has to be equal or less than the
          number of token partitions. For this reason, by default the encoder
          will do 8 token partitions.
          - vpxenc supports partition output (-P) just in combination with
          IVF output format (--ivf)
      
      Performance:
          - Realtime encoder can be up to 13% faster (ARM) depending on the number
          of threads and bitrate settings. Constant gain over the 5-16 speed
          range.
          - Token buffer reduced from one frame to 8 MBs
      
      Quality:
          - quality is affected by the delayed context updates. This again
          dependents on input material, speed and bitrate settings. For VC
          style input the loss seen is up to 0.2dB. If error-resilient=2
          mode is used than the effect of this change is negligible.
      
      Example:
      ./configure --enable-realtime-only --enable-onthefly-bitpacking
      ./vpxenc --rt --end-usage=1 --fps=30000/1000 -w 640 -h 480
      --target-bitrate=1000 --token-parts=3 --static-thresh=2000
      --ivf -P -t 4 -o strm.ivf tanya_640x480.yuv
      
      Change-Id: I127295cb85b835fc287e1c0201a67e378d025d76
      52cf4dca
  26. 16 Feb, 2012 4 commits
    • John Koleszar's avatar
      vpxenc: initial implementation of multistream support · 9e50ed7f
      John Koleszar authored
      Add the ability to specify multiple output streams on the command line.
      Streams are delimited by --, and most parameters inherit from previous
      streams.
      
      In this implementation, resizing streams is still not supported. It
      does not make use of the new multistream support in the encoder either.
      Two pass support runs all streams independently, though it's
      theoretically possible that we could combine firstpass runs in the
      future. The logic required for this is too tricky to do as part of this
      initial implementation. This is mostly an effort to get the parameter
      passing and independent streams working from the application's
      perspective, and a later commit will add the rescaling and
      multiresolution support.
      
      Change-Id: Ibf18c2355f54189fc91952c734c899e5c072b3e0
      9e50ed7f
    • John Koleszar's avatar
      vpxenc: factor out input open/close · 732cb9a6
      John Koleszar authored
      Simplify some of the file I/O for later commits which will add multistream
      support
      
      Change-Id: Idf1a05f3a29c95331d0c4a6ea5960904e4897fd4
      732cb9a6
    • John Koleszar's avatar
      vpxenc: add warning()/fatal() helpers · c535025c
      John Koleszar authored
      Cosmetic. Allows exiting with an error message without opening a new
      scope.
      
      Change-Id: If227b29b825f0241acea79dd38f19e524552ee18
      c535025c
    • John Koleszar's avatar
      vpxenc: factor out global config options · efd54f8f
      John Koleszar authored
      This is a first step towards specifying multiple output streams
      with one command line.
      
      Change-Id: Iac784d3911bf553694d024bbd0c3d547261e914b
      efd54f8f
  27. 18 Jan, 2012 1 commit
  28. 21 Dec, 2011 1 commit
  29. 28 Nov, 2011 1 commit
  30. 09 Nov, 2011 1 commit
    • James Zern's avatar
      vpxenc: use off64_t for mingw · 87953d11
      James Zern authored
      fixes fseek errors on large files resulting in corrupt/truncated output
      (issue #364).
      
      Change-Id: If0e189a1591d0e95d7d237332e0bea1cf2ec5aa1
      87953d11