1. 11 May, 2012 1 commit
  2. 04 May, 2012 3 commits
    • John Koleszar's avatar
      fix vp8_ namespace issues · 14d827f4
      John Koleszar authored
      Make functions only referenced from one translation unit static. Other
      symbols with extern linkage get a vp8/vpx prefix.
      
      Change-Id: I928c7e0d0d36e89ac78cb54ff8bb28748727834f
      14d827f4
    • John Koleszar's avatar
      Formalize encodeframe.c forward delclarations · 22f56b93
      John Koleszar authored
      Change If4321cc5 fixed a bug caused by forward declarations not being
      kept in sync across C files, resulting in a function call with the
      wrong arguments. The commit moves the affected function declarations
      into a header file, along with the other symbols from encodeframe.c
      that were being sloppily shared.
      
      Change-Id: I76a7b4c66d4fe175f9cbef7e52148655e4bb9ba1
      22f56b93
    • 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
  3. 02 May, 2012 1 commit
    • 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
  4. 25 Apr, 2012 1 commit
    • Attila Nagy's avatar
      Fix loopfilter race condition in multithreaded encoder · 3939e85b
      Attila Nagy authored
      Race was introduced by https://gerrit.chromium.org/gerrit/15563.
      
      If loopfilter related config params were changed between frames, or
      after a KEY frame, there could be a mismatch between encoder's and
      decoder's recontructed image. In worst case, when frame buffers are
      reallocated because of a size change, the loopfilter could
      do an invalid data access (segmentation fault).
      
      Fixes:
      Sync with the loopfilter before applying any encoder changes in
      vp8_change_config().
      Moved the loopfilter synching to the top of
      encode_frame_to_data_rate() so that it's done before any alteration of
      the encoder.
      
      Change-Id: Ide5245d2a2aeed78752de750c0110bc4b46f5b7b
      3939e85b
  5. 23 Apr, 2012 2 commits
    • Attila Nagy's avatar
      Shares one set of RD costs tables between all encoding threads · b41c17d6
      Attila Nagy authored
      RD costs were local to MACROBLOCK data and had to be copied all the
      time to each thread's MACROBLOCK data. Tables moved to a common place
      and only pointers are setup for each encoding thread.
      
      vp8_cost_tokens() generates 'int' costs so changed all types to be
      int (i.e. removed unsigned).
      
      NOTE: Could do some more cleaning in vp8cx_init_mbrthread_data().
      
      Change-Id: Ifa4de4c6286dffaca7ed3082041fe5af1345ddc0
      b41c17d6
    • Scott LaVarnway's avatar
      Removed mcomp_filter_type · 11876faa
      Scott LaVarnway authored
      and replaced with use_bilinear_mc_filter.
      
      Change-Id: Ie9e9f0bccca4ab7d3e23ae045aefed33536103ff
      11876faa
  6. 20 Apr, 2012 1 commit
    • John Koleszar's avatar
      vp8_change_config: don't force kf with spatial resampling · 8e858f90
      John Koleszar authored
      Look for changes in the codec's configured w/h instead of its active
      w/h when forcing keyframes. Otherwise calls to vp8_change_config()
      will force a keyframe when spatial resampling is active.
      
      Change-Id: Ie0d20e70507004e714ad40b640aa5b434251eb32
      8e858f90
  7. 19 Apr, 2012 2 commits
    • Attila Nagy's avatar
      Ports vpx_xcaler to new RTCD method · 5948a021
      Attila Nagy authored
      We can get rid of all remaining global initializers now:
       vp8_scale_machine_specific_config()
       vp8_initialize()
       vp8dx_initialize()
      
      Change-Id: I2825cea5d1c01ad9f6c45df49a0f86d803bfeb69
      5948a021
    • Attila Nagy's avatar
      Makes all mode token tables const · 441cac8e
      Attila Nagy authored
      Mode token tabels precalculated in entropymode.c.
      Removes vp8_initialize_common()as all common global data
      is precalculated const now.
      
      Change-Id: I9b2ccc883e4f618069e1bc180dad3a823394eb73
      441cac8e
  8. 17 Apr, 2012 1 commit
    • Attila Nagy's avatar
      Makes all global data in tokenize.c const · b35a0db0
      Attila Nagy authored
      Removes all runtime initialization of global data in tokenize.c.
      DCT token and cost tabels are pre-generated.
      
      Second patch in a series to make sure code is reentrant.
      
      Change-Id: Iab48b5fe290129823947b669413101f22a1bcac0
      b35a0db0
  9. 16 Apr, 2012 1 commit
    • John Koleszar's avatar
      correct alt-ref contribution to frame rate · 21173e19
      John Koleszar authored
      When producing an invisible ARF, the time stamp counters aren't
      updated since the last time stamp is seen by the codec twice. The
      prior code was trapping this case with refresh_alt_ref, but this isn't
      correct for other uses of the ARF. Instead, use the show_frame flag.
      
      Change-Id: If67fff7c6c66a3606698e34e2fb5731f56b4a223
      21173e19
  10. 22 Mar, 2012 1 commit
    • Deb Mukherjee's avatar
      Miscellaneous changes in mfqe and postproc modules · 66ba79f5
      Deb Mukherjee authored
      Adds logic to disable mfqe for the first frame after a configuration
      change such as change in resolution. Also adds some missing
      if CONFIG_POSTPROC macro checks.
      
      Change-Id: If29053dad50b676bd29189ab7f9fe250eb5d30b3
      66ba79f5
  11. 21 Mar, 2012 1 commit
  12. 16 Mar, 2012 1 commit
    • Yunqing Wang's avatar
      Add motion search skipping in first pass · 6a819ce4
      Yunqing Wang authored
      This change added a motion search skipping mechanism similar
      to what we did in second pass. For a macroblock that is very
      similar to the macroblock at same location on last frame,
      we can set its mv to be zero, and skip motion search. This
      improves first-pass performance for slide shows and video
      conferencing clips with a slight PSNR loss.
      
      Change-Id: Ic73f9ef5604270ddd6d433170091d20361dfe229
      6a819ce4
  13. 13 Mar, 2012 1 commit
  14. 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
  15. 27 Feb, 2012 1 commit
    • James Berry's avatar
      bugfix: use oxcf width/height for reinit check · e2c6b05f
      James Berry authored
      use oxcf instead of common in check to Reinit the
      lookahead buffer if the frame size changes
      prior behavior would cause assertion fail/crash
      
      first observed in:
      support changing resolution with vpx_codec_enc_config_set
      
      Change-Id: Ib669916ca9b4f206d4cc3caab5107e49d39a36aa
      e2c6b05f
  16. 16 Feb, 2012 1 commit
    • Attila Nagy's avatar
      Multithreaded encoder, late sync loopfilter · 78071b3b
      Attila Nagy authored
      Second shot at this...
      
      Sync with loopfilter thread as late as possible, usually just at the
      beginning of next frame encoding. This returns control to application
      faster and allows a better multicore scaling.
      
      When PSNR packets are generated the final filtered frame is needed
      imediatly so we cannot delay the sync. Same has to be done when
      internal frame is previewed.
      
      Change-Id: I64e110c8b224dd967faefffd9c93dd8dbad4a5b5
      78071b3b
  17. 09 Feb, 2012 1 commit
  18. 08 Feb, 2012 1 commit
  19. 30 Jan, 2012 9 commits
    • John Koleszar's avatar
      RTCD: finalize removal of old RTCD system · 8aae2460
      John Koleszar authored
      This is the final commit in the series converting to the new RTCD
      system. It removes the encoder csystemdependent files and the remaining
      global function pointers that didn't conform to the old RTCD system.
      
      Change-Id: I9649706f1bb89f0cbf431ab0e3e7552d37be4d8e
      8aae2460
    • John Koleszar's avatar
      RTCD: add arnr functions · 109b69a7
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system. It removes the last of the VP8_ENCODER_RTCD struct references.
      
      Change-Id: I2a44f52d7cccf5177e1ca98a028ead570d045395
      109b69a7
    • John Koleszar's avatar
      RTCD: add motion search functions · 0b0bc8d0
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: Ia5828b7ecc80db55b21916704aa3d54cbb98f625
      0b0bc8d0
    • John Koleszar's avatar
      RTCD: add quantizer functions · 61311e61
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: Iba9df4c03a508e51c37201c621be43523fae87d9
      61311e61
    • John Koleszar's avatar
      RTCD: add FDCT functions · 510e0ab4
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: I3f9c07db65eb206f6363d21bdb80e871570da767
      510e0ab4
    • John Koleszar's avatar
      RTCD: add variance functions · 83a91e78
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: Ie5c1aa480637e98dc3918fb562ff45c37a66c538
      83a91e78
    • John Koleszar's avatar
      RTCD: add subpixel functions · f103dcef
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: I6c519ab61e4f4e0ebcc796f2df061f945c48cefe
      f103dcef
    • John Koleszar's avatar
      RTCD: add postproc functions · 2a8f57f5
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: If54eb5cb5d1b0cac6c4c0633a9e99c93ca860ba2
      2a8f57f5
    • John Koleszar's avatar
      New RTCD implementation · a910049a
      John Koleszar authored
      This is a proof of concept RTCD implementation to replace the current
      system of nested includes, prototypes, INVOKE macros, etc. Currently
      only the decoder specific functions are implemented in the new system.
      Additional functions will be added in subsequent commits.
      
      Overview:
        RTCD "functions" are implemented as either a global function pointer
        or a macro (when only one eligible specialization available).
        Functions which have RTCD specializations are listed using a simple
        DSL identifying the function's base name, its prototype, and the
        architecture extensions that specializations are available for.
      
      Advantages over the old system:
        - No INVOKE macros. A call to an RTCD function looks like an ordinary
          function call.
        - No need to pass vtables around.
        - If there is only one eligible function to call, the function is
          called directly, rather than indirecting through a function pointer.
        - Supports the notion of "required" extensions, so in combination with
          the above, on x86_64 if the best function available is sse2 or lower
          it will be called directly, since all x86_64 platforms implement
          sse2.
        - Elides all references to functions which will never be called, which
          could reduce binary size. For example if sse2 is required and there
          are both mmx and sse2 implementations of a certain function, the
          code will have no link time references to the mmx code.
        - Significantly easier to add a new function, just one file to edit.
      
      Disadvantages:
        - Requires global writable data (though this is not a new requirement)
        - 1 new generated source file.
      
      Change-Id: Iae6edab65315f79c168485c96872641c5aa09d55
      a910049a
  20. 24 Jan, 2012 1 commit
    • John Koleszar's avatar
      Revert "Multithreaded encoder, late sync loopfilter" · 630d3b95
      John Koleszar authored
      This commit is incomplete, as it does not synchronize the loop filter
      before returning a handle to the reconstructed frame in
      vpx_codec_get_preview_frame(), which can cause (false?) failures
      when running the test_reconstruct_buffer test.
      
      This may be related to a bug that does cause visible artifacts, which
      is also under investigation.
      
      This reverts commit 380d64ec.
      
      Change-Id: Iad710941e7731d44fc2bde63bc63d6763cc4629e
      630d3b95
  21. 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
  22. 18 Jan, 2012 1 commit
    • Jeff Faust's avatar
      Simplify an assignment statement · 15c29afe
      Jeff Faust authored
      Separated a double assignment that looked suspiciously like an
      assignment and equality typo.
      
      Change-Id: I7813979e9d7ea2539afb3c8ae6074f9df5ebdf52
      15c29afe
  23. 14 Jan, 2012 1 commit
    • Adrian Grange's avatar
      Fixed bugs in multi-layer code related to changing params · e479379a
      Adrian Grange authored
      When running multi-layer (ML) encodes and dynamically
      changing coding parameters on the fly (e.g. frame
      duration/rate, bandwidths allocated to each layer)
      the encoder would not produce sensible output.
      
      In certain cases the rate targeting would be
      hideously inaccurate.
      
      These fixes make it possible to change these coding
      parameters correctly and to maintain accurate control
      of the rate targeting.
      
      I also added the specification of the input timebase
      into the test program, vp8_scalable_patterns.c.
      
      Patch 2: Moved declaration to appease MS compiler)
      
      Change-Id: Ic8bb5a16daa924bb64974e740696e040d07ae363
      e479379a
  24. 22 Dec, 2011 4 commits
    • John Koleszar's avatar
      Remove unnecessary ternary constructs · 0c2b2c79
      John Koleszar authored
      The code had a number of constructs like (condition)?1:0,
      which is redundant with C's semantics. In the cases where a boolean
      operator was used in the condition, simply remove the ternary part.
      Otherwise adjust the surrounding expression to remove the condition
      (eg, for rounding up. See pickinter.c and rdopt.c)
      
      Change-Id: Icb2372defa3783cf31857d90b2630d06b2c7e1be
      0c2b2c79
    • John Koleszar's avatar
      Remove legacy integer types · f56918ba
      John Koleszar authored
      Remove BOOL, INTn, UINTn, etc, in favor of C99-style fixed width
      types.
      
      Change-Id: I396636212fb5edd6b347d43cc940186d8cd1e7b5
      f56918ba
    • John Koleszar's avatar
      Use lookup tables for mode_check_freq · aa8650dd
      John Koleszar authored
      Mostly cosmetic. Trying for a more compact representation of speed
      selection thresholds.
      
      Change-Id: I339e7840049b91ad569aabbdc9c702a496110d3b
      aa8650dd
    • John Koleszar's avatar
      Use lookup tables for thresh_mult · efb4783d
      John Koleszar authored
      Mostly cosmetic. Trying for a more compact representation of speed
      selection thresholds.
      
      Change-Id: Icaebea632c7bb71ca8e07b4def04a046d4515e27
      efb4783d
  25. 21 Dec, 2011 1 commit
    • John Koleszar's avatar
      Remove useless g_common.h · 0c2f8e77
      John Koleszar authored
      This file declared a bunch of nonexistent, unreferenced global
      function pointers.
      
      Change-Id: Ic26bb8c7712deba754c49fc01f383b53afc9e728
      0c2f8e77