Skip to content
Snippets Groups Projects
  1. Apr 24, 2012
    • Deb Mukherjee's avatar
      Differential encoding of probability updates · c6f1bf43
      Deb Mukherjee authored
      Adds differential encoding of prob updates using a subexponential
      code centered around the previous probability value.
      Also searches for the most cost-effective update, and breaks
      up the coefficient updates into smaller groups.
      
      Small gain on Derf: 0.2%
      
      Change-Id: Ie0071e3dc113e3d0d7ab95b6442bb07a89970030
      c6f1bf43
  2. Apr 11, 2012
    • Adrian Grange's avatar
      Superblock encoding order · 9daf3154
      Adrian Grange authored
      This is the first patch to add superblock (32x32) coding
      order capabilities. It does not yet do any mode selection
      at the SB level, that will follow in a further patch.
      
      This patch encodes rows of SBs rather than
      MBs, each SB contains 2x2 MBs.
      
      Two intra prediction modes have been disabled since they
      require reconstructed data for the above-right MB which
      may not have been encoded yet (e.g. for the bottom right
      MB in each SB).
      
      Results on the one test clip I have tried (720p GIPS clip)
      suggest that it is somewhere around 0.2dB worse than the
      baseline version, so there may be bugs.
      
      It has been tested with no experiments enabled and with
      the following 3 experiments enabled:
        --enable-enhanced_interp
        --enable-high_precision_mv
        --enable-sixteenth_subpel_uv
      in each case the decode buffer matches the recon buffer
      (using "cmp" to compare the dumped/decoded frames).
      Note: Testing these experiments individually created
      errors.
      
      Some problems were found with other experiments but it
      is unclear what state these experiments are in:
        --enable-comp_intra_pred
        --enable-newentropy
        --enable-uvintra
      
      This code has not been extensively tested yet, so there
      is every likelihood that further bugs remain. I also
      intend to do some code cleanup & refactoring in tandem
      with the next patch that adds the 32x32 modes.
      
      Change-Id: I1eba7f740a70b3510df58db53464535ef881b4d9
      9daf3154
  3. Mar 21, 2012
  4. Mar 07, 2012
    • Paul Wilkins's avatar
      Snapshot candidate · 68033ca4
      Paul Wilkins authored
      Pulled out super block code for the snapshot as this
      is not quite ready and will need an extensive re-merge.
      
      Change-Id: I436369b511257447a7b0ea064016cb63f5011849
      68033ca4
  5. Feb 29, 2012
  6. Feb 28, 2012
    • Paul Wilkins's avatar
      Merge new loop filter. · 19b9d28f
      Paul Wilkins authored
      Merge of the NEWLPF configuration experiment so it is always on.
      
      Change-Id: I7054772b6eab28bad1ff807bfa54d98f83de9308
      19b9d28f
  7. Feb 23, 2012
    • Deb Mukherjee's avatar
      Supporting high precision 1/8-pel motion vectors · 18e90d74
      Deb Mukherjee authored
      This is the initial patch for supporting 1/8th pel
      motion. Currently if we configure with enable-high-precision-mv,
      all motion vectors would default to 1/8 pel. Encode and
      decode syncs fine with the current code. In the next phase
      the code will be refactored so that we can choose the 1/8
      pel mode adaptively at a frame/segment/mb level.
      
      Derf results:
      http://www.corp.google.com/~debargha/vp8_results/enhinterp_hpmv.html
      (about 0.83% better than 8-tap interpoaltion)
      
      Patch 3: Rebased. Also adding 1/16th pel interpolation for U and V
      
      Patch 4: HD results.
      http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd_hpmv.html
      Seems impressive (unless I am doing something wrong).
      
      Patch 5: Added mmx/sse for bilateral filtering, as well as enforced
      use of c-versions of subpel filters with 8-taps and 1/16th pel;
      Also redesigned the 8-tap filters to reduce the cut-off in order to
      introduce a denoising effect. There is a new configure option
      sixteenth-subpel-uv which will use 1/16 th pel interpolation for
      uv, if the motion vectors have 1/8 pel accuracy.
      
      With the fixes the results are promising on the derf set. The enhanced
      interpolation option with 8-taps alone gives 3% improvement over thei
      derf set:
      http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html
      
      Results on high precision mv and on the hd set are to follow.
      
      Patch 6: Adding a missing condition for CONFIG_SIXTEENTH_SUBPEL_UV in
      vp8/common/x86/x86_systemdependent.c
      
      Patch 7: Cleaning up various debug messages.
      
      Patch 8: Merge conflict
      
      Change-Id: I5b1d844457aefd7414a9e4e0e06c6ed38fd8cc04
      18e90d74
  8. Feb 15, 2012
    • Paul Wilkins's avatar
      Experimental code base simplification. · 46f9ad2c
      Paul Wilkins authored
      Remove error concealment code.
      
      Change-Id: I882705174fbfea212e96f7f684e47a671dbe5c67
      46f9ad2c
    • Yaowu Xu's avatar
      moved segment based LPF level selection under CONFIG_FEATUREUPDATES · d327dcf3
      Yaowu Xu authored
      This commit moved segment based loop filter level selection into
      the experiment of CONFIG_FEATUREUPDATES. As previous commit noted,
      the segment based loop filter selection helps the compression by
      ~0.1% on cif set, the ongoing experiment CONFIG_FEATUREUPDATES
      made encoding updates of the segment based LPF level more efficient,
      hence, another .04% gain on cif set. The commit also fixed an issue
      previously where encoder/decoder may use different loop filter level
      for one of the segments.
      
      Change-Id: Ia978b14aae95bb107d561ba53a7a2bb6ff01faf3
      d327dcf3
  9. Feb 14, 2012
  10. Feb 13, 2012
    • Jim Bankoski's avatar
      vp8 - config_featureupdates · af8f1928
      Jim Bankoski authored
      Added a bit to signify that the feature changed since
      the last time we sent it, or not so that we don't need
      to send all the databits for every feature change.
      
      added config
      
      Change-Id: I8d3064ce90d4500bf0d5c6b87c664e46138dfcac
      af8f1928
  11. Feb 10, 2012
  12. Feb 02, 2012
    • Adrian Grange's avatar
      Added encoding in Superblock Order · 5d0b5a17
      Adrian Grange authored
      As a precursor to encoding 32x32 blocks this cl adds the
      ability to encode the frame superblock (=32x32 block) at
      a time. Within a SB the 4 indiviual MBs are encoded in
      raster-order (NW,NE,SW,SE).
      
      This functionality is added as an experiment which can be
      enabled by ispecifying --enable-superblocks in the
      command line specified to configure (CONFIG_SUPERBLOCKS
      macro in the code).
      
      To make this work I had to disable the two intra
      prediction modes that use data from the top-right of the
      MB.
      
      On the tests that I have run the results produce
      almost exactly the same PSNRs & SSIMs with a very
      slightly higher average data rate (and slightly higher
      data rate than just disabling the two intra modes in
      the original code).
      
      NOTE: This will also break the multi-threaded code.
      
      This replaces the abandoned change:
      Iebebe0d1a50ce8c15c79862c537b765a2f67e162
      
      Change-Id: I1bc1a00f236abc1a373c7210d756e25f970fcad8
      5d0b5a17
  13. Jan 31, 2012
    • Paul Wilkins's avatar
      Added common prediction modules. · b2f64dff
      Paul Wilkins authored
      This function adds the common prediction modules,  some data structures
      and a config option but does not use them.
      
      It also corrects a bug in clearing down  the MODE_INFO border and introduces
      a new element that indicates if an entry corresponds to an "in image" macro block
      or is part of the border.
      
      Change-Id: Ib69eec0876173ebe9d1de9df9537d0b2447702e0
      b2f64dff
  14. Jan 26, 2012
  15. Jan 18, 2012
    • Yaowu Xu's avatar
      new loop filter functions for macroblock boundaries · 5e7d7d3d
      Yaowu Xu authored
      The commit adds a new set of loop filter for macroblock edge filtering.
      The new loop filter has a mask to detect so-called "flat" regions. The
      detection checks 5 pixels of each side of an edge. If the all pixels
      have value with +/-1 from the edge pixel on the same side, the region
      is treated as a "flat" region. For such case, a 7 tap filter is used
      to change 3 pixel values on each side. The 7 taps are:
                     [1, 1, 1, 2, 1, 1, 1]/8
      The furthest away pixels used as input are +/-5 away from edge. For
      non-flat region, we fall back to old filtering. It should be noted
      here that the thresholds and filter taps may require more optimization
      for best possible results.
      
      Tests on a set of hd clips showed consistent gains:
      http://www.corp.google.com/~yaowu/no_crawl/mblpf_hd.html
      (avg psnr: .83% glb psnr: .77% ssim: .82%)
      
      Tests on derf set also showed consistent gains:
      http://www.corp.google.com/~yaowu/no_crawl/mblpf_derf.html
      (avg psnr: .24% glb psnr: .22% ssim: .48%)
      
      Change-Id: I0855b1ff48e79e1175c20b81967137e18b2af352
      5e7d7d3d
  16. Dec 07, 2011
    • Yaowu Xu's avatar
      Removed #if CONFIG_MULCONTEXT · b70f23ca
      Yaowu Xu authored
      This commit removed the macro CONFIG_MULCONTEXT, which was used to
      indicate the experiment code for using separate context for altref
      and normal frames. This commit made the change fully merged in.
      
      Change-Id: I525f927f68e2365d37b340ef23b836a136a4f70b
      b70f23ca
    • Yaowu Xu's avatar
      Removed #if CONFIG_I8X8 · d37cd976
      Yaowu Xu authored
      This commit removed the macro CONFIG_I8X8, which was used to indicate
      the 8x8 intra prediction experiment, made the change fully merged in.
      
      Change-Id: Iafa4443781ce6e83f5591c12ba615a0e92ce0ea0
      d37cd976
  17. Dec 06, 2011
    • Ronald S. Bultje's avatar
      Dual 16x16 inter prediction. · 60cb39da
      Ronald S. Bultje authored
      This patch introduces the concept of dual inter16x16 prediction. A
      16x16 inter-predicted macroblock can use 2 references instead of 1,
      where both references use the same mvmode (new, near/est, zero). In the
      case of newmv, this means that two MVs are coded instead of one. The
      frame can be encoded in 3 ways: all MBs single-prediction, all MBs dual
      prediction, or per-MB single/dual prediction selection ("hybrid"), in
      which case a single bit is coded per-MB to indicate whether the MB uses
      single or dual inter prediction.
      
      In the future, we can (maybe?) get further gains by mixing this with
      Adrian's 32x32 work, per-segment dual prediction settings, or adding
      support for dual splitmv/8x8mv inter prediction.
      
      Gain (on derf-set, CQ mode) is ~2.8% (SSIM) or ~3.6% (glb PSNR). Most
      gain is at medium/high bitrates, but there's minor gains at low bitrates
      also. Output was confirmed to match between encoder and decoder.
      
      Note for optimization people: this patch introduces a 2nd version of
      16x16/8x8 sixtap/bilin functions, which does an avg instead of a
      store. They may want to look and make sure this is implemented to
      their satisfaction so we can optimize it best in the future.
      
      Change-ID: I59dc84b07cbb3ccf073ac0f756d03d294cb19281
      60cb39da
  18. Dec 02, 2011
    • Yaowu Xu's avatar
      changed configure script to enable new experimental options · 8a40d2f5
      Yaowu Xu authored
      Added two experimental options to the configure script:
      1. newnear:
         new scheme of doing mv encoding that include a motion vector from
         last frame in nearest and near mv search
      2. mulcontext:
         tracks entropy context separately for regular frames and alt ref
         frames.
      
      Change-Id: If6e0d5d593351707b497a26eb6a763e080f77e6f
      8a40d2f5
  19. Nov 04, 2011
    • Yaowu Xu's avatar
      make uv intra mode coding adaptive to Y mode · 2bbde250
      Yaowu Xu authored
      This commit tries to do UV intra mode coding adaptive to Y intra mode.
      Entropy context is defined as conditional PDF of uv intra mode given
      the Y mode. All constants are normalized with 256 to be fit in 8 bits.
      
      This provides further coding efficiency beyond the quantizer adaptive
      y intra mode coding. Consistent gains were observed on all clips and
      all bit rates for HD all key encoding tests.
      
      To test, configure with
      --enable-experimental --enable-uvintra
      
      Change-Id: I2d78d73f143127f063e19bd0bac3b68c418d756a
      2bbde250
  20. Sep 30, 2011
  21. Sep 16, 2011
    • Yaowu Xu's avatar
      add quantizer adaptive intra mb mode encoding · aac2c126
      Yaowu Xu authored
      make intra mode coding entropy distribution adaptive to baseQindex, an
      encoding test on hd clips with all key frame shows universal gain on
      all clips in both .2%(psnr) and (ssim).3%.
      
      To build and test, configure with
      --enable-experimental --enable-qimode
      
      Change-Id: Iaa69241b984d4fdd8baa6d77ee78c0140f5ac00a
      aac2c126
    • Yaowu Xu's avatar
      add 8x8 intra prediction modes · ca6b85aa
      Yaowu Xu authored
      Patch 1 to Patch 3 is an initial implementation of 8x8 intra prediction
      modes, here are with the following assumptions:
      a. 8x8 has 4 prediction modes DC, H, V and TM
      b. UV 4x4 block use the same mode as corresponding 8x8 area
      c. i8x8 modes are enabled for key frame only for now
      Patch 4:
      d. removed debug code from previous patches
      Patch 5:
      e. added stats code to collect entropy stats and further cleaned up
      Patch 6:
      f. changed mode stats code to collect finer stats of modes
      Patch 7:
      g. normalized i8x8 modes distribution to total at 256 (8bits).
      Patch 8:
      h. fixed a bug in decoder and removed debug printf output.
      Patch 9:
      i. more cleanups to address paul's comment
      Patch 10:
      j. messy rebase/merges to bring the commit up to date.
      
      Tests on HD clips encoded with all key frame showing consistent gain
      on all clips and all metrics:~0.5%(psnr) and 0.6%(ssim):
      http://www.corp.google.com/~yaowu/no_crawl/i8x8hd_allkey_fixedq.html
      
      To build and test, configure with:
      --enable-experimental --enable-i8x8
      
      Change-Id: I9813fe07ae48cab5fdb5d904bca022514ad01e7f
      ca6b85aa
  22. Jul 25, 2011
  23. Jul 20, 2011
  24. Jun 23, 2011
    • 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
  25. May 19, 2011
    • 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
  26. Apr 29, 2011
  27. Apr 10, 2011
  28. Mar 31, 2011
    • 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
  29. Feb 22, 2011
  30. Feb 11, 2011
  31. Feb 04, 2011
    • 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
  32. Jan 28, 2011
    • 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
  33. Jan 20, 2011
    • 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
  34. Jan 19, 2011
    • 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
Loading