1. 29 Oct, 2012 2 commits
    • Yaowu Xu's avatar
      fixed a build issue · d8bd0246
      Yaowu Xu authored
      Two head files dct.h and dct_x86.h were removed in a previous commit,
      this commit removed the build's dependency on the two files.
      
      Change-Id: Idd33712470912d39d42f133dc30b710cab6fa832
      d8bd0246
    • Jim Bankoski's avatar
      invoke macro removal encodemb · 1838d877
      Jim Bankoski authored
      Change-Id: I321280abcf48f3dc16e194d29bde2bd3baec6006
      1838d877
  2. 22 Oct, 2012 1 commit
  3. 16 Oct, 2012 1 commit
  4. 14 Oct, 2012 2 commits
  5. 21 Aug, 2012 1 commit
    • John Koleszar's avatar
      remove rotation experiment · 5055a161
      John Koleszar authored
      This is being reimplemented more generically in terms of affine
      transforms.
      
      Change-Id: I9300bfde5f8b93c708c64f59427087720f8ed782
      5055a161
  6. 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
  7. 12 Mar, 2012 1 commit
    • Yaowu Xu's avatar
      fixed .mk files to reflect add/remove of a header file · 3f5feb7d
      Yaowu Xu authored
      In a previous commit, the duplicate of headerfile defaultcoefcounts.h
      was identified. This commit updates the .mk file to ensure configure
      and make works properly for all platforms.
      
      Change-Id: I31a39c809a734ba438ee53db700f252e9a03eddd
      3f5feb7d
  8. 16 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Code simplification · 79d330d7
      Paul Wilkins authored
      Removal of the pickinter.c and .h files and calls to this
      code.
      
      Removal of some code relating to real time and one pass
      settings  though there is more to be done in this regard.
      
      However,  vp8_set_speed_features() now
      only supports modes 0 and 1 and speeds up to 3
      so rd should always be set.
      
      Change-Id: I62c0c1b6154ab499785baef310536080e87bc4d8
      79d330d7
  9. 14 Feb, 2012 1 commit
  10. 10 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Removal of threading code. · 2615ca5d
      Paul Wilkins authored
      For the experimental branch we are trying to slim the codebase
      down removing features such as threading for now which complicate
      the process of development and testing.
      
      Change-Id: I657c0246aef4d1fa8c8ffc6a1adfeee45bce8e24
      2615ca5d
  11. 24 Jan, 2012 1 commit
    • Jim Bankoski's avatar
      vpn common -> implicit segmentation · 91325b8f
      Jim Bankoski authored
      This introduces base functions for introducing implicit segmentation.
      The code that actually stores the results to the segment map isn't
      here yet.   This just prints out the segmentation map results
      if you call it.
      
      Uses connected component labeling technique on mbmi info so that only
      if 2 mbs are horizontally or vertically touching do they get the same
      segment.
      
      vp8next - plumbing for rotation
      
      code to produce taps for rotation ( tapify. py ),  code
      for predicting using rotation ( predict_rotated.c ) ,  code
      for finding the best rotation find_rotation.c.
      
      didn't checkin code that uses this in the codec.   still work
      in progress.
      
      Fixed copyright notice
      
      Change-Id: I450c13cfa41ab2fcb699f3897760370b4935fdf8
      91325b8f
  12. 24 Oct, 2011 1 commit
    • Paul Wilkins's avatar
      Further segment feature extensions. · 01ce04bc
      Paul Wilkins authored
      This quite large check in includes the following:
      
      Merge in some code from Ronald (mbgraph.c) that scans a Gf/arf group.
      This is used as a basis for a simple segmentation for the normal frames
      in a gf/arf group. This code also uses satd functions from Yaowu.
      
      Adds functionality for coding the latest possible position of an EOB for
      blocks in the segment. (Currently 0-15 only, hence just for 4x4 dct).
      Where the EOB position is 0 this acts like "skip" and the normal coding
      of skip at the per mb level is disabled.
      
      Added functions (seg_common.c) for setting and reading segment feature
      elements. These may want to be optimized away at some point but while the
      mecahnism is in a state of flux they provide a single location for making
      changes and keep things a bit cleaner.
      
      This is still proof of concept code. Currently the tested feature set:-
      
      Quantizer,
      Loop Filter level,
      Reference frame,
      Prediction Mode,
      EOB end stop.
      
      TBD:-
      
      Add functions for setting and reading the feature data with range
      and validity checking.
      
      Handling of signed and unsigned feature data. At the moment all is assumed
      to be signed and a sign bit is coded but many cannot be negative.
      
      Correct handling of EOB feature with intra coded blocks.
      
      Testing/trapping of legal/illegal ref frame and mode combinations.
      
      Transform size switch plus merge and test with 8c8 DCT work
      
      Merge and test with Sumans Segmenation coding optimizations
      
      Change-Id: Iee12e83661c7abbd1e0ce6810915eb4ec35e2d8e
      01ce04bc
  13. 16 Aug, 2011 1 commit
    • Scott LaVarnway's avatar
      Faster vp8_default_coef_probs · 19987dcb
      Scott LaVarnway authored
      Copies from a generated table instead of building the
      default coeff probabilities during runtime.
      
      Change-Id: I4d9551ea3a2d7d4a4f7ce9eda006495221a8de50
      19987dcb
  14. 29 Apr, 2011 1 commit
  15. 21 Apr, 2011 1 commit
    • Johann's avatar
      keep values in registers during quantization · 508ae1b3
      Johann authored
      add an sse4 quantizer so we can use pinsrw/pextrw and keep values in xmm
      registers instead of proxying through the stack. and as long as we're
      bumping up, use some ssse3 instructions in the EOB detection (see ssse3
      fast quantizer)
      pick up about a percent on 32bit and about two on 64bit.
      
      Change-Id: If15abba0e8b037a1d231c0edf33501545c9d9363
      508ae1b3
  16. 13 Apr, 2011 1 commit
    • John Koleszar's avatar
      Refactor lookahead ring buffer · 88841f10
      John Koleszar authored
      This patch cleans up the source buffer storage and copy mechanism to
      allow access through a standard push/pop/peek interface. This approach
      also avoids an extra copy in the case where the source is not a
      multiple of 16, fixing issue #102.
      
      Change-Id: I05808c39f5743625cb4c7af54cc841b9b10fdbd9
      88841f10
  17. 28 Mar, 2011 1 commit
    • Johann's avatar
      add asm_enc_offsets.c for all targets · 4be062bb
      Johann authored
      now that we need asm_enc_offsets.c for x86 and arm and it is
      harmless to build it for other targets, add it unconditionally
      
      Change-Id: I320c5220afd94fee2b98bda9ff4e5e34c67062f3
      4be062bb
  18. 11 Mar, 2011 2 commits
  19. 08 Mar, 2011 1 commit
    • Yunqing Wang's avatar
      Write SSSE3 sub-pixel filter function · 244e2e14
      Yunqing Wang authored
      1. Process 16 pixels at one time instead of 8.
      2. Add check for both xoffset =0 and yoffset=0, which happens
         during motion search.
      This change gave encoder 1%~3% performance gain.
      
      Change-Id: Idaa39506b48f4f8b2fbbeb45aae8226fa32afb3e
      244e2e14
  20. 22 Feb, 2011 1 commit
  21. 10 Feb, 2011 1 commit
    • John Koleszar's avatar
      Fix relative include paths · 02321de0
      John Koleszar authored
      Allow compiling without adding vp8/{common,encoder,decoder} to the
      include paths.
      
      Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
      02321de0
  22. 09 Feb, 2011 1 commit
  23. 06 Jan, 2011 1 commit
    • Johann's avatar
      x86 sse2 temporal_filter_apply · 8b0cf5f7
      Johann authored
      count can be reduced to short because the max number of filtered frames
      is set to 15. the max value for any frame is 32 (modifier = 16,
      filter_weight = 2). 15*32 = 480 which requires 9 bits
      
      this function goes from about 7000 us / 1000 iterations for the C code
      to < 275 us / 1000 iterations for sse2 for block_size = 16 and from
      about 1800 us / 1000 iters to < 100 us / 1000 iters for block_size = 8
      
      Change-Id: I64a32607f58a2d33c39286f468b04ccd457d9e6e
      8b0cf5f7
  24. 01 Nov, 2010 1 commit
    • Scott LaVarnway's avatar
      SSSE3 version of fast quantizer · ff4a71f4
      Scott LaVarnway authored
      (test clip: tulip)
      For good quality mode with speed=1, this gave the encoder
      a small (2 - 3%) performance boost.
      
      Change-Id: I8a1d4269465944ac0819986c2f0be4b0a2ee0b35
      ff4a71f4
  25. 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
  26. 25 Oct, 2010 1 commit
    • Johann's avatar
      isolate new temporal filtering code · e81e30c2
      Johann authored
      onyx_if is getting pretty big. split out the temporal code to make it
      easier to look at.
      
      Change-Id: I207c3a94c90e91b32e3ea5e1836a53b7a990fabd
      e81e30c2
  27. 18 Oct, 2010 1 commit
    • Yunqing Wang's avatar
      Add SSE2 subtract functions · 4db20765
      Yunqing Wang authored
      Instead of doing 8-bit data unpack and 16-bit subtraction, use
      psubb to do 16 8-bit subtractions and pcmpgtb to preserve the
      sign information. This does not bring noticable gain since
      these functions are not called frequently.
      
      Change-Id: I90a0dfaa3db9d422e4ada324076596ffb178548e
      4db20765
  28. 09 Sep, 2010 1 commit
  29. 02 Sep, 2010 1 commit
    • James Zern's avatar
      encoder: remove postproc dependency · 76640f85
      James Zern authored
      Remove the dependency on postproc.c for the encoder in general, the only
      unchecked need for it is when CONFIG_PSNR is enabled. All other cases
      are already wrapped in CONFIG_POSTPROC. In the CONFIG_PSNR case the file
      will still be included.
      
      Additionally, when VP8_SET_POSTPROC is used with the encoder when post
      processing has been disabled an error will be returned.
      
      This addresses issue #153.
      
      Change-Id: Ia6dfe20167f7077734a6058cbd1d794550346089
      76640f85
  30. 13 Aug, 2010 1 commit
    • John Koleszar's avatar
      move segmentation_common to encoder · 80d3923a
      John Koleszar authored
      vp8_update_gf_useage_maps() is only used by the encoder. This patch
      fixes the ability to build in decode-only or encode-only
      configurations.
      
      Change-Id: I3a5211428e539886ba998e09e8abd747ac55c9aa
      80d3923a
  31. 22 Jul, 2010 1 commit
    • John Koleszar's avatar
      msvs: fix install of codec sources · 4d86ef35
      John Koleszar authored
      The libs.mk file must be installed for the vpx.vcproj file to be
      generated. It was being installed, but not in the src/ directory as
      expected.
      
      Also missed include files yasm.rules, quantize_x86.h
      
      Change-Id: Ic1a6f836e953bfc954d6e42a18c102a0114821eb
      4d86ef35
  32. 24 Jun, 2010 2 commits
    • Scott LaVarnway's avatar
      Added first-pass sse2 version of Yaowu's new fdct. · f1a3b1e0
      Scott LaVarnway authored
      Change-Id: Ib479210067510162879c368428b92690591120b2
      f1a3b1e0
    • Yaowu Xu's avatar
      Redo the forward 4x4 dct · d0dd01b8
      Yaowu Xu authored
      The new fdct lowers the round trip sum squared error for a
      4x4 block ~0.12. or ~0.008/pixel. For reference, the old
      matrix multiply version has average round trip error 1.46
      for a 4x4 block.
      
      Thanks to "derf" for his suggestions and references.
      
      Change-Id: I5559d1e81d333b319404ab16b336b739f87afc79
      d0dd01b8
  33. 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
  34. 14 Jun, 2010 1 commit
    • Scott LaVarnway's avatar
      sse2 version of vp8_regular_quantize_b · 48c84d13
      Scott LaVarnway authored
      Added sse2 version of vp8_regular_quantize_b which improved encode
      performance(for the clip used) by ~10% for 32 bit builds and ~3% for
      64 bit builds.
      
      Also updated SHADOW_ARGS_TO_STACK to allow for more than 9 arguments.
      
      Change-Id: I62f78eabc8040b39f3ffdf21be175811e96b39af
      48c84d13
  35. 11 Jun, 2010 1 commit
    • John Koleszar's avatar
      require --enable-psnr to build ssim · 9099fc0d
      John Koleszar authored
      ssim.c comiles in a huge (512M) amount of global scratch space. Allocating
      this data on the heap would be a better solution, but this file doesn't
      need to be built at all in most cases, so as a first pass, disable it
      except when doing opsnr.stt output (--enable-psnr).
      
      Change-Id: I320d812f6d652a12516a16b52295ebff20b5bd42
      9099fc0d
  36. 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