1. 07 Jun, 2013 1 commit
    • Deb Mukherjee's avatar
      Cleans up mbskip encoding · 869a39ba
      Deb Mukherjee authored
      Refactors mbskip coding to be compatible with coding of the rest of
      the symbols. Adds forward/backward adaptation and removes a lot of
      the legacy code.
      
      Results:
      fast50: +1.6%
      derfraw300: +0.317%
      
      Change-Id: I395a2976d15af044d3b8ded5acfa45f6f065f980
      869a39ba
  2. 18 Dec, 2012 1 commit
  3. 30 Nov, 2012 1 commit
  4. 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
  5. 01 Nov, 2012 1 commit
  6. 31 Oct, 2012 2 commits
  7. 30 Oct, 2012 1 commit
  8. 17 Jul, 2012 1 commit
  9. 19 Jun, 2012 1 commit
  10. 04 May, 2012 1 commit
    • Attila Nagy's avatar
      Make global data const · f039a85f
      Attila Nagy authored
      Removes all runtime initialization of global data. This commit is a
      squashed version of the following series cherry-picked from master.
      This is necessary because of a change that was merged to the tester
      that depends on the scaler being moved to the RTCD framework, which
      is a worthwhile thing to include in Eider anyway.
      
        - a91b42f0 Makes all global data in entropy.c const
        - b35a0db0 Makes all global data in tokenize.c const
        - 441cac8e Makes all mode token tables const
        - 5948a021 Ports vpx_xcaler to new RTCD method
        - 317d4244 Makes all mode token tables const part 2
      
      Change-Id: Ifeaea24df2b731e7c509fa6c6ef6891a374afc26
      f039a85f
  11. 17 Apr, 2012 1 commit
    • Attila Nagy's avatar
      Makes all global data in entropy.c const · a91b42f0
      Attila Nagy authored
      Removes all runtime initialization of global data in entropy.c.
      Precalculated values are used for initializing all entropy related
      tabels.
      
      First patch in a series to make sure code is reentrant.
      
      Change-Id: I9aac91a2a26f96d73c6470d772a343df63bfe633
      a91b42f0
  12. 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
  13. 29 Feb, 2012 1 commit
    • 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
  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. 20 Jan, 2012 1 commit
    • Fritz Koenig's avatar
      Disconnect ARM tgt_isa from dsp extensions · 89210284
      Fritz Koenig authored
      A processor with ARMv7 instructions does not
      necessarily have NEON dsp extensions.  This CL
      has the added side effect of allowing the ability
      to enable/disable the dsp extensions cleanly.
      
      Change-Id: Ie1e879b8fe131885bc3d4138a0acc9ffe73a36df
      89210284
  16. 23 Nov, 2011 1 commit
    • Attila Nagy's avatar
      Fix encoder partitioned output on ARM · 97259b46
      Attila Nagy authored
      API was not returning correct partition sizes on arm targets.
      The armv5 token packing functions were not storing the information to the
      partition size table.
      As a fix, have one boolcoder instance allocated for each partition so
      that partition sizes are internally available after all partitions
      were encoded. This will also allow more flexibility in producing
      several partitions in parallel.
      
      Use buffer validation (overflow check) in all ARM bitpacking
      functions.
      
      Change-Id: I31c8a11d8a7613676f0ff50928cb2a2ab14fd169
      97259b46
  17. 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
  18. 25 Oct, 2010 1 commit
    • Timothy B. Terriberry's avatar
      Add runtime CPU detection support for ARM. · b71962fd
      Timothy B. Terriberry authored
      The primary goal is to allow a binary to be built which supports
       NEON, but can fall back to non-NEON routines, since some Android
       devices do not have NEON, even if they are otherwise ARMv7 (e.g.,
       Tegra).
      The configure-generated flags HAVE_ARMV7, etc., are used to decide
       which versions of each function to build, and when
       CONFIG_RUNTIME_CPU_DETECT is enabled, the correct version is chosen
       at run time.
      In order for this to work, the CFLAGS must be set to something
       appropriate (e.g., without -mfpu=neon for ARMv7, and with
       appropriate -march and -mcpu for even earlier configurations), or
       the native C code will not be able to run.
      The ASFLAGS must remain set for the most advanced instruction set
       required at build time, since the ARM assembler will refuse to emit
       them otherwise.
      I have not attempted to make any changes to configure to do this
       automatically.
      Doing so will probably require the addition of new configure options.
      
      Many of the hooks for RTCD on ARM were already there, but a lot of
       the code had bit-rotted, and a good deal of the ARM-specific code
       is not integrated into the RTCD structs at all.
      I did not try to resolve the latter, merely to add the minimal amount
       of protection around them to allow RTCD to work.
      Those functions that were called based on an ifdef at the calling
       site were expanded to check the RTCD flags at that site, but they
       should be added to an RTCD struct somewhere in the future.
      The functions invoked with global function pointers still are, but
       these should be moved into an RTCD struct for thread safety (I
       believe every platform currently supported has atomic pointer
       stores, but this is not guaranteed).
      
      The encoder's boolhuff functions did not even have _c and armv7
       suffixes, and the correct version was resolved at link time.
      The token packing functions did have appropriate suffixes, but the
       version was selected with a define, with no associated RTCD struct.
      However, for both of these, the only armv7 instruction they actually
       used was rbit, and this was completely superfluous, so I reworked
       them to avoid it.
      The only non-ARMv4 instruction remaining in them is clz, which is
       ARMv5 (not even ARMv5TE is required).
      Considering that there are no ARM-specific configs which are not at
       least ARMv5TE, I did not try to detect these at runtime, and simply
       enable them for ARMv5 and above.
      
      Finally, the NEON register saving code was completely non-reentrant,
       since it saved the registers to a global, static variable.
      I moved the storage for this onto the stack.
      A single binary built with this code was tested on an ARM11 (ARMv6)
       and a Cortex A8 (ARMv7 w/NEON), for both the encoder and decoder,
       and produced identical output, while using the correct accelerated
       functions on each.
      I did not test on any earlier processors.
      
      Change-Id: I45cbd63a614f4554c3b325c45d46c0806f009eaa
      b71962fd
  19. 09 Sep, 2010 1 commit
  20. 18 Jun, 2010 1 commit
    • John Koleszar's avatar
      cosmetics: trim trailing whitespace · 94c52e4d
      John Koleszar authored
      When the license headers were updated, they accidentally contained
      trailing whitespace, so unfortunately we have to touch all the files
      again.
      
      Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
      94c52e4d
  21. 04 Jun, 2010 1 commit
  22. 18 May, 2010 1 commit