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. 29 Jan, 2014 3 commits
  3. 27 Jan, 2014 1 commit
  4. 25 Jan, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds a stand-alone resize utility for testing · cacea00f
      Deb Mukherjee authored
      Adds a stand-alone resize_util app for testing. The app
      will not be built in the shared library configurations
      so as not to require the APIs to be exposed.
      
      Change-Id: I4718c8bff1abf4e57c2ab2d84be8738fc0048200
      cacea00f
  5. 24 Jan, 2014 1 commit
  6. 18 Jan, 2014 2 commits
  7. 07 Jan, 2014 1 commit
  8. 25 Nov, 2013 1 commit
  9. 22 Nov, 2013 1 commit
  10. 19 Nov, 2013 1 commit
    • Tom Finegan's avatar
      vpxdec: Relocate WebM input support. · 2abe2d46
      Tom Finegan authored
      - Move it to webmdec.c and webmdec.h.
      - Also, tidy up obvious style nits in the vicinity of code I was
        already touching.
      
      Change-Id: Ie2898d06e73c1e9030d9c8d465b73ee7edc3c02a
      2abe2d46
  11. 15 Nov, 2013 1 commit
    • Tom Finegan's avatar
      vpx[dec|enc]: Extract IVF support from the apps. · 00a35aab
      Tom Finegan authored
      - Move IVF reading support into ivfdec.c and ivfdec.h
      - Move IVF writing support into ivfenc.c and ivfenc.h
      - Removed IVF writing code from the SVC example in favor of ivfenc.
      
      Change-Id: I70adf6240d0320fdd232d8546ed573f0f68dd793
      00a35aab
  12. 12 Nov, 2013 1 commit
  13. 06 Nov, 2013 2 commits
    • 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
    • Tom Finegan's avatar
      Move WebM writing support out of vpxenc.c. · 03848f5c
      Tom Finegan authored
      This is mainly a clean up patchset. It moves the WebM writing support
      out of vpxenc and into its own source file. Changes to tools_common and
      vpxdec result from relocation of shared bits of code.
      
      Change-Id: Iee55d3285f56e0a548f791094fb14c5ac5346a26
      03848f5c
  14. 07 Oct, 2013 1 commit
  15. 18 Sep, 2013 1 commit
  16. 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
  17. 21 May, 2013 3 commits
  18. 04 Mar, 2013 2 commits
    • John Koleszar's avatar
      vpxdec: support scaling output · 7d8fc26c
      John Koleszar authored
      Adds an option, --scale, that will rescale any frames produced by
      the decoder that don't match the resolution of the first frame to
      that resolution. This is useful for playback of files that use
      spatial resampling.
      
      Change-Id: I867adc650d535df7ec5b107549359712ea3aaaa0
      7d8fc26c
    • 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
  19. 27 Feb, 2013 2 commits
    • John Koleszar's avatar
      vpxdec: support scaling output · 0d2517ce
      John Koleszar authored
      Adds an option, --scale, that will rescale any frames produced by
      the decoder that don't match the resolution of the first frame to
      that resolution. This is useful for playback of files that use
      spatial resampling.
      
      Change-Id: I867adc650d535df7ec5b107549359712ea3aaaa0
      0d2517ce
    • 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
  20. 28 Nov, 2012 1 commit
  21. 15 Nov, 2012 2 commits
    • John Koleszar's avatar
      support building vp8 and vp9 into a single lib · a9c7597a
      John Koleszar authored
      Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
      a9c7597a
    • John Koleszar's avatar
      make: flatten object file directories · b72373de
      John Koleszar authored
      Rather than building an object file directory heirarchy matching the
      source tree's layout, rename the object files so that the object
      file name contains the path in the source file tree. The intent here
      is to allow two files in different parts of the source tree to have
      the same name and still not collide when put into an ar archive.
      
      Change-Id: Id627737dc95ffc65b738501215f34a995148c5a2
      b72373de
  22. 01 Nov, 2012 1 commit
  23. 26 Jul, 2012 1 commit
  24. 23 Jul, 2012 1 commit
  25. 03 May, 2012 1 commit
  26. 02 Apr, 2012 1 commit
    • Johann's avatar
      Allow disabling disabled codecs · c459d37c
      Johann authored
      When using 'make dist' after --disable-vp8[encoder|decoder] it would
      fail to recognize the option. This would only occur when also specifying
      --enable-install-docs and --enable-install-srcs but not
      --enable-codec-srcs
      
      Including vpx/ fixes builds with --enable-codec-srcs
      
      vpx_timer.h is also required for vpxenc.c
      
      Change-Id: Ie3e28b2f7ec7ee6d5961d3843f9eab869f79c35b
      c459d37c
  27. 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
  28. 15 Feb, 2012 1 commit
  29. 08 Feb, 2012 1 commit
  30. 22 Dec, 2011 1 commit
    • John Koleszar's avatar
      Add missing includes for multi-res · 09080d4e
      John Koleszar authored
      Makes the distribution tree (built with 'make dist') buildable with
      --enable-install-srcs --enable-multi-res-encoding
      
      Change-Id: If2ea7632f7b26615196e9abcfaa34618cc50112a
      09080d4e
  31. 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