1. 30 Nov, 2012 1 commit
  2. 28 Nov, 2012 1 commit
  3. 27 Nov, 2012 1 commit
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
  4. 01 Nov, 2012 2 commits
  5. 31 Oct, 2012 3 commits
  6. 17 Jul, 2012 1 commit
  7. 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
  8. 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
  9. 04 Jun, 2012 1 commit
    • Johann's avatar
      Remove extra enum · 965d8686
      Johann authored
      VP8_REFFRAME is the same as vpx_ref_frame_type
      
      Change-Id: I63c2ddfb39f6ec87d1e5eb6a8852846464552b1b
      965d8686
  10. 11 May, 2012 1 commit
  11. 02 May, 2012 3 commits
  12. 21 Mar, 2012 1 commit
  13. 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
  14. 28 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Code Simplification · b6f02c85
      Paul Wilkins authored
      Removal of code relating to token partitioning
      
      Change-Id: Iaf3c88d6758639a55bd92c3be5c51e6bed407a3c
      b6f02c85
  15. 26 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Code Cleanup. · 646e6221
      Paul Wilkins authored
      Removal of error_resilient_mode features.
      The interface has been left in place but does nothing.
      
      Change-Id: I2407863bd0d3c98407354507423ca48d29f63b17
      646e6221
  16. 25 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Removal of temporal re sampling code. · 80b873e3
      Paul Wilkins authored
      For now the interface elements have been left in place
      to make sure existing parameter files work but parameters
      relating to drop frame wont do anything.
      
      Change-Id: I579ee614726387381c546845dac4bc03c74c6a07
      80b873e3
  17. 24 Feb, 2012 2 commits
  18. 14 Jan, 2012 1 commit
    • Adrian Grange's avatar
      Fixed bugs in multi-layer code related to changing params · e479379a
      Adrian Grange authored
      When running multi-layer (ML) encodes and dynamically
      changing coding parameters on the fly (e.g. frame
      duration/rate, bandwidths allocated to each layer)
      the encoder would not produce sensible output.
      
      In certain cases the rate targeting would be
      hideously inaccurate.
      
      These fixes make it possible to change these coding
      parameters correctly and to maintain accurate control
      of the rate targeting.
      
      I also added the specification of the input timebase
      into the test program, vp8_scalable_patterns.c.
      
      Patch 2: Moved declaration to appease MS compiler)
      
      Change-Id: Ic8bb5a16daa924bb64974e740696e040d07ae363
      e479379a
  19. 22 Dec, 2011 1 commit
    • John Koleszar's avatar
      Remove legacy integer types · f56918ba
      John Koleszar authored
      Remove BOOL, INTn, UINTn, etc, in favor of C99-style fixed width
      types.
      
      Change-Id: I396636212fb5edd6b347d43cc940186d8cd1e7b5
      f56918ba
  20. 21 Dec, 2011 1 commit
    • John Koleszar's avatar
      Remove opaque pointer VP8_PTR · b0056c3b
      John Koleszar authored
      Use an opaque struct rather than typecasting through VP8_PTR, an int*.
      
      Change-Id: I5ed4d9238ba2e8d51bfa07a8da87a2eb4c8fa43a
      b0056c3b
  21. 05 Dec, 2011 1 commit
    • Yunqing Wang's avatar
      Multiple-resolution encoder · aa7335e6
      Yunqing Wang authored
      The example encoder down-samples the input video frames a number of
      times with a down-sampling factor, and then encodes and outputs
      bitstreams with different resolutions.
      
      Support arbitrary down-sampling factor, and down-sampling factor
      can be different for each encoding level.
      
      For example, the encoder can be tested as follows.
      1. Configure with multi-resolution encoding enabled:
      ../libvpx/configure --target=x86-linux-gcc --disable-codecs
      --enable-vp8 --enable-runtime_cpu_detect --enable-debug
      --disable-install-docs --enable-error-concealment
      --enable-multi-res-encoding
      2. Run make
      3. Encode:
      If input video is 1280x720, run:
      ./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1
      (output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180).
      The last parameter is set to 1/0 to show/not show PSNR.)
      4. Decode:
      ./simple_decoder 1.ivf 1.yuv
      ./simple_decoder 2.ivf 2.yuv
      ./simple_decoder 3.ivf 3.yuv
      5. View video:
      mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30
      mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30
      mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30
      
      The encoding parameters can be modified in vp8_multi_resolution_encoder.c,
      for example, target bitrate, frame rate...
      
      Modified API. John helped a lot with that. Thanks!
      
      Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
      aa7335e6
  22. 11 Nov, 2011 1 commit
    • John Koleszar's avatar
      avoid resetting framerate during vpx_codec_enc_config_set() · bdd35c13
      John Koleszar authored
      The calculated frame_rate is a state variable in the codec, and
      shouldn't be maintained in the configuration struct. Move it to the
      main part of cpi so that it isn't clobbered when the configuration
      struct is updated. The initial framerate estimate is moved from the
      vp8_cx_iface.c wrapper into the body of init_config() in onyx_if.c, so
      that it is only called once and not reset on every call to
      vp8_change_config().
      
      Change-Id: I8d9a3d1283330d1ee297d07e9d78d1f2875f2465
      bdd35c13
  23. 20 Oct, 2011 1 commit
    • James Berry's avatar
      Fix: check cx_data buffer prior to write · bc715113
      James Berry authored
      check to make sure that cx_data buffer has enough room before
      writting to it, prior behavior did not which could result in a crash.
      
      Change-Id: I3fab6f2bc4a96d7c675ea81acd39ece121738b28
      bc715113
  24. 11 Oct, 2011 1 commit
    • Adrian Grange's avatar
      Added rate-targeted temporal scalability · 217591fd
      Adrian Grange authored
      Added the ability to create rate-targeted, temporally
      scalable, VP8 compatible bitstreams.
      
      The application vp8_scalable_patterns.c demonstrates how
      to use this capability. Users can create output bitstreams
      containing upto 5 temporally separable streams encoded
      as a single VP8 bitstream.
      (previously abandoned as:
      I92d1483e887adb274d07ce9e567e4d0314881b0a)
      
      Change-Id: I156250a3fe930be57c069d508c41b6a7a4ea8d6a
      217591fd
  25. 10 Oct, 2011 1 commit
  26. 26 Jul, 2011 1 commit
  27. 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
  28. 20 Jul, 2011 1 commit
  29. 28 Jun, 2011 1 commit
    • Stefan Holmer's avatar
      Adding support for independent partitions · 4cb0ebe5
      Stefan Holmer authored
      Adding support in the encoder for generating
      independent residual partitions by forcing
      equal probabilities over the prev coef entropy
      contexts.
      
      Change-Id: I402f5c353255f3ca20eae2620af739f6a498cd21
      4cb0ebe5
  30. 25 Apr, 2011 1 commit
  31. 13 Apr, 2011 1 commit
    • John Koleszar's avatar
      Change rc undershoot/overshoot semantics · c99f9d7a
      John Koleszar authored
      This patch changes the rc_undershoot_pct and rc_overshoot_pct controls
      to set the "aggressiveness" of rate adaptation, by limiting the
      amount of difference between the target buffer level and the actual
      buffer level which is applied to the target frame rate for this frame.
      
      This patch was initially provided by arosenberg at logitech.com as
      an attachment to issue #270. It was modified to separate these controls
      from the other unrelated modifications in that patch, as well as to
      use the pre-existing variables rather than introducing new ones.
      
      Change-Id: Id542e3f5667dd92d857d5eabf29878f2fd730a62
      c99f9d7a
  32. 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
  33. 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
  34. 10 Nov, 2010 1 commit
    • Fritz Koenig's avatar
      postproc : Re-work posproc calling to allow more flags. · 647df00f
      Fritz Koenig authored
      Debugging in postproc needs more flags to allow for specific
      block types to be turned on or off in the visualizations.
      
      Must be enabled with --enable-postproc-visualizer during
      configuration time.
      
      Change-Id: Ia74f357ddc3ad4fb8082afd3a64f62384e4fcb2d
      647df00f