1. 15 Nov, 2012 1 commit
  2. 09 Nov, 2012 1 commit
    • Vignesh Venkatasubramanian's avatar
      Packing Altref along with succeeding frame and length encoding frames · bc9670ee
      Vignesh Venkatasubramanian authored
      The altref frame is packed along with the next P frame. So that
      outside of the codec there are now only two types of frames P and I.
      Also, now it is one frame in and one frame out with respect to the
      codec. Apart from that, all the frames are length encoded with the
      length of each frame appended to the frame itself. There are
      two categories of frames and each of them will look as follows:
      
        - Packed frames (an altref along with the succeeding p frame)
          - altref_frame_data | altref_lenngth | frame_data | length
        - Unpacked frames (all frames other than the above)
          - frame_data | length
      
      Change-Id: If1eabf5c473f7d46b3f2d026bd30c803588c5330
      bc9670ee
  3. 06 Nov, 2012 1 commit
  4. 01 Nov, 2012 1 commit
  5. 14 Aug, 2012 1 commit
  6. 24 Jul, 2012 1 commit
  7. 23 Jul, 2012 1 commit
  8. 17 Jul, 2012 1 commit
  9. 14 Jul, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: add parameter validity checking · 7f009975
      Yunqing Wang authored
      Added validity checking in multi-res encoder. Disable spatial
      resampling and frame dropping before we have those supports.
      Also, deallocate the memory for all resolution levels once error
      occurs.
      
      Change-Id: Ia5d65a645381cad1a49940ab3a19bb5696c39c09
      7f009975
  10. 13 Jul, 2012 1 commit
  11. 29 Jun, 2012 2 commits
    • John Koleszar's avatar
      Build unit test driver from the default target · acd147c5
      John Koleszar authored
      We need an easy way to build the unit test driver without running the
      tests. This enables passing options like --gtest_filter to the
      executable, which can't be done very cleanly when running under
      `make test`.
      
      Fixed a number of compiler errors/warnings when building the tests
      in various configurations by Jenkins.
      
      Change-Id: I9198122600bcf02520688e5f052ab379f963b77b
      acd147c5
    • 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. 23 Jun, 2012 1 commit
  13. 15 Jun, 2012 1 commit
    • John Koleszar's avatar
      Remove threading dependencies with --disable-multithread · 8df79e9d
      John Koleszar authored
      Avoid a pthreads dependency via pthread_once() when compiled with
      --disable-multithread.
      
      In addition, this synchronization is disabled for Win32 as well, even
      though we can be sure that the required primatives exist, so that the
      requirements on the application when built with --disable-multithread
      are consistent across platforms.
      
      Users using libvpx built with --disable-multithread in a multithreaded
      context should provide their own synchronization. Updated the
      documentation to vpx_codec_enc_init_ver() and vpx_codec_dec_init_ver()
      to note this requirement. Moved the RTCD initialization call to match
      this description, as previously it didn't happen until the first
      frame.
      
      Change-Id: Id576f6bce2758362188278d3085051c218a56d4a
      8df79e9d
  14. 16 May, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: force Key frame sychronization · 65dd157c
      Yunqing Wang authored
      In multi-resolution encoding, frame_type decision for each frame
      is made by the lowest-resolution encoder. For all other higher-
      resolution encoders, kf_mode is always set to VPX_KF_DISABLED,
      and they are forced to use the same frame_type picked by the
      lowest-resolution encoder.
      
      Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
      65dd157c
  15. 04 May, 2012 1 commit
    • John Koleszar's avatar
      remove deprecated pre-v0.9.0 API · 2bf8fb58
      John Koleszar authored
      Remove a bunch of compatibility code dating back to before the initial
      libvpx release.
      
      Change-Id: Ie50b81e7d665955bec3d692cd6521c9583e85ca3
      2bf8fb58
  16. 03 May, 2012 1 commit
    • John Koleszar's avatar
      multi-res: restore v1.0.0 API · 25a36d6b
      John Koleszar authored
      Move the notion of 0 bitrate implying skip deeper into the codec,
      rather than doing it at the multi-encoder API level. This preserves
      v1.0.0 ABI compatibility, rather than forcing a bump to v2.0.0 over a
      minor change. Also, this allows the case where the application can
      selectively enable and disable the larger resolution(s) without having
      to reinitialize the codec instace (for instance, if no target is
      receiving the full resolution stream).
      
      It's not clear how deep to push this check. It may be valuable to
      allow the framerate adaptation code to run, for example. Currently put
      the check as early as possible for simplicity, should reevaluate this
      as this feature gains real use.
      
      Change-Id: I371709b8c6b52185a1c71a166a131ecc244582f0
      25a36d6b
  17. 02 May, 2012 4 commits
    • John Koleszar's avatar
      Add VPX_TS_ prefix to MAX_LAYERS, MAX_PERIODICITY · d46ddd08
      John Koleszar authored
      Preserved the prior names for compatibility, will remove in the future.
      
      Change-Id: I8773f959ebce72f60168a2972f7a8ffe6642b9b2
      d46ddd08
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 22ae1403
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      22ae1403
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 28f54515
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      28f54515
    • Attila Nagy's avatar
      Fix compiler warnings · 14c9fce8
      Attila Nagy authored
      Fix code for following warnings:
      -Wimplicit-function-declaration
      -Wuninitialized
      -Wunused-but-set-variable
      -Wunused-variable
      
      Change-Id: I2be434f22fdecb903198e8b0711255b4c1a2947a
      14c9fce8
  18. 20 Apr, 2012 1 commit
    • John Koleszar's avatar
      multi-res: restore v1.0.0 API · d72c536e
      John Koleszar authored
      Move the notion of 0 bitrate implying skip deeper into the codec,
      rather than doing it at the multi-encoder API level. This preserves
      v1.0.0 ABI compatibility, rather than forcing a bump to v2.0.0 over a
      minor change. Also, this allows the case where the application can
      selectively enable and disable the larger resolution(s) without having
      to reinitialize the codec instace (for instance, if no target is
      receiving the full resolution stream).
      
      It's not clear how deep to push this check. It may be valuable to
      allow the framerate adaptation code to run, for example. Currently put
      the check as early as possible for simplicity, should reevaluate this
      as this feature gains real use.
      
      Change-Id: I371709b8c6b52185a1c71a166a131ecc244582f0
      d72c536e
  19. 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
  20. 15 Mar, 2012 2 commits
    • James Zern's avatar
      doxy: fix conditional usage, ref warnings · 6b7cf307
      James Zern authored
      doxygen < 1.7.? seems to have been more tolerant of single line
      \if/\endif
      
      This change fixes warnings such as:
      mainpage.dox:13: warning: unable to resolve reference to `vp8_encoder-'
      for \ref command
      vpx_decoder.h:193: warning: explicit link request to 'n' could not be
      resolved
      
      Change-Id: If3d04af5ede1b0d1e2c63021d0e4ac8f98db20b2
      6b7cf307
    • 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
  21. 15 Feb, 2012 1 commit
  22. 03 Feb, 2012 1 commit
    • Yunqing Wang's avatar
      Allow to skip highest-resolution encoding in multi-resolution encoder · fa1a9290
      Yunqing Wang authored
      Sometimes, a user doesn't have enough bandwidth to send high-resolution
      (i.e. HD) video even though the camera catches HD video. This change
      allowed users to skip highest-resolution encoding by setting that level's
      target bit rate to 0.
      
      To test it, modify the following line in vp8_multi_resolution_encoder.c.
          unsigned int  target_bitrate[NUM_ENCODERS]={1400, 500, 100};
      To skip the highest-resolution level, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 500, 100};
      To skip the first and second highest resolution levels, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 0, 100};
      
      This change also fixed a small problem in mapping, which slightly helped
      quality and performance.
      
      Change-Id: I977bae9a9fbfba85c8be4bd5af01539f2b84bc81
      fa1a9290
  23. 10 Jan, 2012 1 commit
  24. 05 Jan, 2012 1 commit
    • Deb Mukherjee's avatar
      Multiframe quality enhancement postprocessing · 87aa846b
      Deb Mukherjee authored
      Adds a multiframe postprocessing module to enhance the quality of
      certain frames that are coded at lower quality than preceding frames.
      The module can be invoked from the commandline by use of the --mfqe
      option, and will be most beneficial for enhancing the quality of
      frames decoded using scalable patterns.
      
      Uses the vp8_variance_var16x16 and vp8_variance_sad16x16 function
      pointers to compute SAD and Variance of blocks.
      
      Change-Id: Id73d2a6e3572d07f9f8e36bbce00a4fc5ffd8961
      87aa846b
  25. 13 Dec, 2011 1 commit
    • Yunqing Wang's avatar
      Align image buffer in multiple-resolution encoder · 153eec46
      Yunqing Wang authored
      Aligned the image buffer and stride to 32 bytes. This enables
      calling of optimized scaler function in libyuv, and improves
      the performance.
      
      Tested libyuv scaler(x86 optimization) on Linux and Windows,
      including: Linux 32/64bit, visual studio 32/64bit, Cygwin, and
      MinGW32.
      
      Also, fixed a wrong pointer in vpx_codec_encode().
      
      Change-Id: Ibe97d7a0a745f82c43852fa4ed719be5a4db6abc
      153eec46
  26. 09 Dec, 2011 1 commit
    • John Koleszar's avatar
      vpx_integer.h: fix incorrect type emulation · a4e410a3
      John Koleszar authored
      The previous definition of uintptr_t was incorrect on x64 with MSVC.
      Also, the ARMV6 version of int_fast16_t was defined as unsigned for
      some reason. Since the fast types are currently unused, just remove
      them.
      
      Change-Id: Idd73f77a989c77feedcb4a6802ae6bd37324ed40
      a4e410a3
  27. 06 Dec, 2011 1 commit
    • Yunqing Wang's avatar
      Allow aligning the raw image buffer · be5bbc96
      Yunqing Wang authored
      Added code to allocate aligned image buffer in vpx_img_alloc(). The
      alignment of the buffer and stride is determined by the parameter
      align.
      
      Change-Id: Idc866978484be3558551c56df39130ab7f74ddd4
      be5bbc96
  28. 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
  29. 01 Nov, 2011 1 commit
    • Stefan Holmer's avatar
      Changing decoder input partition API to input fragments. · 14272052
      Stefan Holmer authored
      Adding support for several partitions within one input fragment.
      This is necessary to fully support all possible packetization
      combinations in the VP8 RTP profile. Several partitions can
      be transmitted in the same packet, and they can only be split
      by reading the partition lengths from the bitstream.
      
      Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
      14272052
  30. 11 Oct, 2011 2 commits
    • John Koleszar's avatar
      Bump ABI version number for temporal scalability · 6505adf2
      John Koleszar authored
      Commit 217591fd modified the encoder ABI without incrementing the version number.
      
      Change-Id: I74de01597dadcdcd96f6b817e4ec69d9ab535e4c
      6505adf2
    • 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
  31. 28 Jul, 2011 1 commit
    • John Koleszar's avatar
      Convert rc_max_intra_bitrate_pct to control · 1654ae9a
      John Koleszar authored
      Since this is the only ABI incompatible change since the last release,
      convert it to use the control interface instead. The member of the
      configuration struct is replaced with the VP8E_SET_MAX_INTRA_BITRATE_PCT
      control.
      
      More significant API changes were expected to be forthcoming when this
      control was first introduced, and while they continue to be expected,
      it's not worth breaking compatibility for only this change.
      
      Change-Id: I799d8dbe24c8bc9c241e0b7743b2b64f81327d59
      1654ae9a
  32. 19 Jul, 2011 1 commit
    • John Koleszar's avatar
      Revert "Disable __longjmp_chk protection" · d98a5ed4
      John Koleszar authored
      This reverts commit b73a3693.
      
      This version of the check doesn't work with generic-gnu, and figuring
      out the correct symbol version at configure time is probably more work
      than this is worth. May revisit in the future.
      
      Change-Id: I6c75e88bd3bd82a4b21e09a25780fe53aacb7d70
      d98a5ed4
  33. 13 Jul, 2011 1 commit
    • John Koleszar's avatar
      Disable __longjmp_chk protection · b73a3693
      John Koleszar authored
      glibc implements some checking on longjmp() calls by replacing it with
      an internal function __longjmp_chk(), when FORTIFY_SOURCE is defined.
      This can be problematic when compiling the library under one version of
      glibc and running it under another. Work around this issue for the one
      symbol affected for now, before taking out the undef hammer.
      
      Fixes http://code.google.com/p/webm/issues/detail?id=166
      
      Change-Id: Ifc5e25cdec17915e394711f2185b3e9214572d10
      b73a3693
  34. 28 Jun, 2011 1 commit
    • Johann's avatar
      use relative include path · 4e4f8352
      Johann authored
      Files are already in vpx/
      
      Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
      4e4f8352