1. 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
  2. 25 Jul, 2011 1 commit
  3. 23 Jun, 2011 1 commit
    • Yaowu Xu's avatar
      fix build issues for experimental branch · 7793b386
      Yaowu Xu authored
      experimental branch build was broken from some merge artifacts, this
      commit fixes those issues to enable the experimental branch to build.
      
      Change-Id: Ic52b2d2f1d1b80abb7ecaa4c0927bcf887ac0c2a
      7793b386
  4. 19 May, 2011 1 commit
    • Stefan Holmer's avatar
      Adding error-concealment to the decoder. · d04f8523
      Stefan Holmer authored
      The error-concealer is plugged in after any motion vectors have been
      decoded. It tries to estimate any missing motion vectors from the
      motion vectors of the previous frame. Intra blocks with missing
      residual are replaced with inter blocks with estimated motion vectors.
      
      This feature was developed in a separate sandbox
      (sandbox/holmer/error-concealment).
      
      Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
      d04f8523
  5. 29 Apr, 2011 1 commit
  6. 10 Apr, 2011 1 commit
  7. 31 Mar, 2011 3 commits
    • Attila Nagy's avatar
      Runtime detection of available processor cores. · 297b2765
      Attila Nagy authored
      Detect the number of available cores and limit the thread allocation
      accordingly. On decoder side limit the number of threads to the max
      number of token partition.
      
      Core detetction works on Windows and
      Posix platforms, which define _SC_NPROCESSORS_ONLN or _SC_NPROC_ONLN.
      
      Change-Id: I76cbe37c18d3b8035e508b7a1795577674efc078
      297b2765
    • Ralph Giles's avatar
      Generate a vpx.pc file for pkg-config. · 607f8420
      Ralph Giles authored
      Rules are added to libs.mk to generate a vpx.pc, which is
      installed as pkgconfig/vpx.pc under the target library directory.
      This also requires the install path prefix be exported directly
      in config.mk.
      
      Some systems use a tool called pkg-config to query information
      about intalled libraries or other resources, based on database
      files provided by the packages themselves at install time.
      
      Providing such a file for libvpx simplifies integration with
      other build systems, and provides an easy avenue for developers
      to test against their own builds of the library.
      
      Change-Id: I4e32a8fbb53fc331aa95eb207c63dd70a76d18ed
      607f8420
    • Ralph Giles's avatar
      Export the version string as a makefile variable. · 53e9987b
      Ralph Giles authored
      The configure script exports the major/minor/patch version
      numbers, but didn't make the full version string available
      to Makefile recipes and rules, the way it is available to
      C code from vpx_version.h.
      
      Change-Id: Ic6a9d4c574a6ea66a50c928f4eedeb91d7668eb5
      53e9987b
  8. 22 Feb, 2011 1 commit
    • Johann's avatar
      purge wince configuration · 418f4219
      Johann authored
      this has been broken since the initial release
      
      Change-Id: If0d4deb2de9f7d0c4c05641e2bbf9cc1bf11e171
      418f4219
  9. 11 Feb, 2011 1 commit
    • Johann's avatar
      remove assembly detokenizer · bb6bcbcc
      Johann authored
      hasn't been kept up to date. remove it to avoid confusion.
      
      Change-Id: I52ffde19b59fec5c7a381299ca2e85cb38330be7
      bb6bcbcc
  10. 04 Feb, 2011 1 commit
    • John Koleszar's avatar
      configure: enable unused variable warnings · b601eb8c
      John Koleszar authored
      Only suppress unused function warnings, rather than supprressing all
      unused-* warnings. Unused functions can still be seen with
      --enable-extra-warnings.
      
      Change-Id: Ibca20d859dbffedd76bd082ffe0fa685c3ac198e
      b601eb8c
  11. 28 Jan, 2011 1 commit
    • Tero Rintaluoma's avatar
      Adds "armvX-none-rvct" targets · 11a222f5
      Tero Rintaluoma authored
      Adds following targets to configure script to support RVCT compilation
      without operating system support (for Profiler or bare metal images).
       - armv5te-none-rvct
       - armv6-none-rvct
       - armv7-none-rvct
      
      To strip OS specific parts from the code "os_support"-config was added
      to script and CONFIG_OS_SUPPORT flag is used in the code to exclude OS
      specific parts such as OS specific includes and function calls for
      timers and threads etc. This was done to enable RVCT compilation for
      profiling purposes or running the image on bare metal target with
      Lauterbach.
      
      Removed separate AREA directives for READONLY data in armv6 and neon
      assembly files to fix the RVCT compilation. Otherwise
      "ldr <reg>, =label" syntax would have been needed to prevent linker
      errors. This syntax is not supported by older gnu assemblers.
      
      Change-Id: I14f4c68529e8c27397502fbc3010a54e505ddb43
      11a222f5
  12. 20 Jan, 2011 1 commit
    • Attila Nagy's avatar
      Update configure scripts · 41955325
      Attila Nagy authored
      Add --extra-cflags as config parameter for user defined extra CFLAGS.
      Add -g to asflags when debug enabled for arm targets.
      
      Change-Id: Ibdde7cfdda6736c1c1db45e6466bd08504a51f15
      41955325
  13. 19 Jan, 2011 1 commit
    • Yaowu Xu's avatar
      experiment extending the quantizer range · 5b42ae09
      Yaowu Xu authored
      Prior to this change, VP8 min quantizer is 4, which caps the
      highest quality around 51DB. This experimental change extends
      the min quantizer to 1, removes the cap and allows the highest
      quality to be around ~73DB, consistent with the fdct/idct round trip
      error. To test this change, at configure time use options:
      
      --enable-experimental --enable-extend_qrange
      
      The following is a brief log of changes in each of the patch sets
      
      patch set 1:
      In this commit, the quantization/dequantization constants are kept
      unchanged, instead scaling factor 4 is rolled into fdct/idct.
      Fixed Q0 encoding tests on mobile:
        Before:    9560.567kbps Overall PSNR:50.255DB VPXSSIM:98.288
        Now:   18035.774kbps Overall PSNR:73.022DB VPXSSIM:99.991
      
      patch set 2:
      regenerated dc/ac quantizer lookup tables based on the scaling
      factor rolled in the fdct/idct. Also slightly extended the range
      towards the high quantizer end.
      
      patch set 3:
      slightly tweaked the quantizer tables and generated bits_per_mb
      table based on Paul's suggestions.
      
      patch set 4:
      fix a typo in idct, re-calculated tables relating active max Q
      to active min Q
      
      patch set 5:
      added rdmult lookup table based on Q
      
      patch set 6:
      fix rdmult scale: dct coefficient has scaled up by 4
      
      patch set 7:
      make transform coefficients to be within 16bits
      
      patch set 8:
      normalize 2nd order quantizers
      
      patch set 9:
      fix mis-spellings
      
      patch set 10:
      change the configure script and macros to allow experimental code
      to be enabled at configure time with --enable-extend_qrange
      
      patch set 11:
      rebase for merge
      
      Change-Id: Ib50641ddd44aba2a52ed890222c309faa31cc59c
      5b42ae09
  14. 16 Nov, 2010 1 commit
    • tomfinegan's avatar
      Add x86_64-darwin10-gcc target. · faaa57b9
      tomfinegan authored
      Adds native build configuration for Snow Leopard.  Useful when
      users configure without arguments on OSX 10.6.
      
      Change-Id: I0bd63912a25bbfb9d4c8d58a781d0f390792429c
      faaa57b9
  15. 10 Nov, 2010 2 commits
    • Fritz Koenig's avatar
      configure : Incorrect syntax in configure · 692b1085
      Fritz Koenig authored
      Check to see if postproc was enabled when enabling the
      postproc visualizer was wrong.
      
      Fix for bug introduced in Change Ia74f357d
      
      Change-Id: I4bee9ad2caee3cfe3bac6972047f6af7c54cad4e
      692b1085
    • 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
  16. 27 Oct, 2010 1 commit
    • Yunqing Wang's avatar
      Full search SAD function optimization in SSE4.1 · 71ecb5d7
      Yunqing Wang authored
      Use mpsadbw, and calculate 8 sad at once. Function list:
      vp8_sad16x16x8_sse4
      vp8_sad16x8x8_sse4
      vp8_sad8x16x8_sse4
      vp8_sad8x8x8_sse4
      vp8_sad4x4x8_sse4
      
      (test clip: tulip)
      For best quality mode, this gave encoder a 5% performance boost.
      For good quality mode with speed=1, this gave encoder a 3%
      performance boost.
      
      Change-Id: I083b5a39d39144f88dcbccbef95da6498e490134
      71ecb5d7
  17. 25 Oct, 2010 1 commit
    • Aaron Watry's avatar
      Add sparc-solaris-gcc as a build target. · 53f61ce2
      Aaron Watry authored
      Solaris 10 requires -lposix4 to build successfully on gcc. I only have a
      Sparc machine to test with on Solaris 10, but this change leaves
      OpenSolaris x86 in a usable state w/ gnu-generic.
      
      I am of the belief that this change should fix Solaris 10 on Sparc, but
      will leave other Solaris architectures as is. If someone has an x86
      Solaris 10 machine to test on, they may add x86-solaris-gcc to
      libvpx/configure and give it a go.
      
      Change-Id: I17a282028bb4d3e9fd8764159f95665160f7b62a
      53f61ce2
  18. 05 Oct, 2010 1 commit
    • Jan Kratochvil's avatar
      nasm: add configure support · 7be093ea
      Jan Kratochvil authored
      yasm has to be preferred as currently nasm produces marginally less
      efficient code (longer opcodes). Filed for nasm as:
      https://sourceforge.net/tracker/?func=detail&atid=106208&aid=3037462&group_id=6208
      
      OTOH package should be built always the same, no matter which additional
      packages are / are not present on the system. As the package should be
      built with nasm (as yasm may not be available) we should not use yasm
      even if it is possibly available.
      
      nasm >= approx. 2.09 is required for the nasm compilation as the former
      versions had a section alignment bug.
      
      Provide nasm compatibility. No binary change by this patch with yasm on
      {x86_64,i686}-fedora13-linux-gnu. Few longer opcodes with nasm on
      {x86_64,i686}-fedora13-linux-gnu have been checked as safe.
      
      Change-Id: Icb0fe39c64bbcc3bcd7972e392fd03f3273340df
      7be093ea
  19. 24 Sep, 2010 1 commit
    • John Koleszar's avatar
      configure: add --enable-small · f9b2ca5b
      John Koleszar authored
      Build with -O2 rather than -O3, to dissuade the compiler from inlining
      so much. See issue #1.
      
      Change-Id: Iacb8ddb59125d3f01c5fea846b45a1c004c9aee0
      f9b2ca5b
  20. 21 Sep, 2010 1 commit
    • Johann's avatar
      Fix typo · 0511cbff
      Johann authored
      Also, move with other ppc32 options
      
      Change-Id: I0b97413c767909c5682afc9bdd954f3d43401f6c
      0511cbff
  21. 13 Sep, 2010 2 commits
  22. 12 Aug, 2010 1 commit
    • Johann's avatar
      framework for assembly version of the detokenizer · 9602799c
      Johann authored
      adds a compile time option: --enable-arm-asm-detok which pulls in
      vp8/decoder/arm/detokenize.asm
      
      currently about break even speed wise, but changes are pending to
      the fill code (branch and load 3 bytes versus conditionally always
      load one) and the error handling. Currently it doesn't handle zero
      runs or overrunning the buffer.
      
      this is really just so i don't have to rebase my changes all the
      time to run benchmarks - now just need to replace one file!
      
      Change-Id: I56d0e2354dc0ca3811bffd0e88fe1f952fa6c797
      9602799c
  23. 27 Jul, 2010 1 commit
  24. 22 Jul, 2010 2 commits
    • Fritz Koenig's avatar
      Remove CONFIG_NEW_TOKENS files. · 08eed049
      Fritz Koenig authored
      These files were out of date and no longer maintained.
      Token decoding has implemented the no-crash code which
      is incompatible with this arm assembly code.
      
      Change-Id: Ibf729886c56fca48181af60b44bda896c30023fc
      08eed049
    • Tom Finegan's avatar
      Add vs9 targets. · 72d4ba92
      Tom Finegan authored
      Add targets x86-win32-vs9 and x86_64-win64-vs9 for support of Visual
      Studio 2008-- this removes the need to convert the vs8 projects before
      using them within the IDE.
      
      Change-Id: Idb83e2ae701e07d98db1be71638280a493d770a2
      72d4ba92
  25. 24 Jun, 2010 2 commits
    • John Koleszar's avatar
      Remove INLINE/FORCEINLINE · 5e344614
      John Koleszar authored
      These are mostly vestigial, it's up to the compiler to decide what
      should be inlined, and this collided with certain Windows platform SDKs.
      
      Change-Id: I80dd35de25eda7773156e355b5aef8f7e44e179b
      5e344614
    • John Koleszar's avatar
      configure: remove postproc-generic · d1920de2
      John Koleszar authored
      This option is vestigial and is unreferenced.
      
      Change-Id: I8bd27cb674c263e9a86fb43244003a9b9df3ca9c
      d1920de2
  26. 18 Jun, 2010 1 commit
  27. 14 Jun, 2010 1 commit
  28. 05 Jun, 2010 1 commit
    • John Koleszar's avatar
      shared library support (.so) · 7aa97a35
      John Koleszar authored
      This patch adds support for building shared libraries when configured
      with the --enable-shared switch.
      
      Building DLLs would require more invasive changes to the sample
      utilities than I want to make in this patch, since on Windows you can't
      use the address of an imported symbol in a static initializer. The best
      way to work around this is proably to build the codec interface mapping
      table with an init() function, but dll support is of questionable value
      anyway, since most windows users will probably use a media framework
      lib like webmdshow, which links this library in staticly.
      
      Change-Id: Iafb48900549b0c6b67f4a05d3b790b2643d026f4
      7aa97a35
  29. 01 Jun, 2010 1 commit
    • John Koleszar's avatar
      setup experimental infrastructure · 0952acb7
      John Koleszar authored
      This patch creates some basic infrastructure for doing bitstream-
      incompatible changes to the VP8 encoder. The key parts are:
      
       - --enable-experimental configure switch, to enable support for this
         incompatible bitstream. This switch is required to be set to enable
         any "experiments"
      
       - A list for "experiments" which translate into --enable-<experiment>
         options and CONFIG_<experiment> macros.
      
       - The high bit of the "Version" field is used to indicate that the
         bitstream was produced by an experimental encoder. The decoder will
         fail to decode an experimental bitstream without
         --enable-experimental.
      
       - A new "vp8x" encoder interface is created to set the experimental
         bit.
      
       - The vp8x encoder interface is made the default for ivfenc in
         experimental mode.
      
      Change-Id: Idbdd5eae4cec5becf75bb4770837dcd256b2abef
      0952acb7
  30. 28 May, 2010 1 commit
    • John Koleszar's avatar
      configure: update script headers · 0d719655
      John Koleszar authored
      The libvpx build system was influenced by the clever design of the
      FFmpeg configure script. Say so in the script header, and provide a
      little introduction.
      
      Change-Id: I4d134c77f9032d1dde72b852b444e98676b85326
      0d719655
  31. 27 May, 2010 1 commit
    • John Koleszar's avatar
      configure: support --prefix, --libdir · 670af3aa
      John Koleszar authored
      Support --prefix, --libdir as a conventional way of specifying the default
      installation directories. libdir is required to be a subdirectory of prefix
      at this time.
      
      Change-Id: If45d9e3129efcde83c05b7766accc9017988e715
      670af3aa
  32. 25 May, 2010 2 commits
    • John Koleszar's avatar
      install includes in DIST_DIR/include/vpx, move vpx_codec/ to vpx/ · b7492341
      John Koleszar authored
      This renames the vpx_codec/ directory to vpx/, to allow applications
      to more consistently reference these includes with the vpx/ prefix.
      This allows the includes to be installed in /usr/local/include/vpx
      rather than polluting the system includes directory with an
      excessive number of includes.
      
      Change-Id: I7b0652a20543d93f38f421c60b0bbccde4d61b4f
      b7492341
    • John Koleszar's avatar
      make: make install target behave as expected · ee8bcb1a
      John Koleszar authored
      Split the 'make install' target into two: install and dist. dist
      retains the old make install behavior of building a "distribution"
      release, with source files, build system, etc. install does what
      one one expects -- installs into a tree in the filesystem, /usr/local
      by default.
      
      Change-Id: I0805681ac10f853ef94cdc3aa70981c6bea81b45
      ee8bcb1a
  33. 18 May, 2010 1 commit