1. 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
  2. 12 Apr, 2012 1 commit
    • Scott LaVarnway's avatar
      loopfilter improvements · e0a80519
      Scott LaVarnway authored
      Local variable offsets are now consistent for the functions,
      removed unused parameters, reworked the assembly to eliminate
      stalls/instructions.
      
      Change-Id: Iaa37668f8a9bb8754df435f6a51c3a08d547f879
      e0a80519
  3. 10 Apr, 2012 1 commit
    • Deb Mukherjee's avatar
      Fixes to disable MFQE when there is motion. · 6b33ca39
      Deb Mukherjee authored
      This patch includes:
      1. fixes to disable block based termporal mixing when motion
      is detected (because this version of mfqe only handles zero motion).
      2. The criterion used for determining whether to mix or
      not are changed to use squared differences rather than
      absolute differences.
      3. Additional checks on color mismatch and excessive block
      flatness added. If the block as decoded has very low activity
      it is unlikely to yield benefits for mixing.
      
      Change-Id: I07331e5ab5ba64844c56e84b1a4b7de823eac6cb
      6b33ca39
  4. 03 Apr, 2012 1 commit
    • John Koleszar's avatar
      MFQE: apply threshold to subblocks and chroma. · 8106df8f
      John Koleszar authored
      In cases where you have a flat background occluded by a moving object
      of similar luminosity in the foreground, it was likely that the
      foreground blocks would persist for a few frames after the background
      is uncovered. This is particularly noticable when the object has a
      different color than the background, so add the chroma planes in as an
      additional check.
      
      In addition, for block sizes of 8 and 16, the luma threshold is
      applied on four subblocks independently, which helps when only part of
      the background in the block has been uncovered.
      
      This fixes issue #392, which includes a test clip to reproduce the
      issue.
      
      BUG=392
      
      Change-Id: I2bd7b2b0e25e912dcac342e5ad6e8914f5afd302
      8106df8f
  5. 02 Apr, 2012 1 commit
    • Johann's avatar
      Move variance and SAD RTCD definitions · 21ac3c8f
      Johann authored
      When the functions were moved from encoder/ to common/ the RTCD file was
      not updated.
      
      Change-Id: I1c98715ed51adf1a95aa2492949d8552aec88d1f
      21ac3c8f
  6. 29 Mar, 2012 3 commits
    • John Koleszar's avatar
      remove unused BOOL_CODER::value · 3f834946
      John Koleszar authored
      Change-Id: Ic7782707afed38c3ec7e996a4a11dc2d55226691
      3f834946
    • Scott LaVarnway's avatar
      MB_MODE_INFO size reduction · 31322c5f
      Scott LaVarnway authored
      Reduced the size of the struct by 8 bytes, which would be
      a memory savings of 64800 bytes for 1080 resolutions.  Had
      an extra byte, so created an is_4x4 for B_PRED or SPLITMV
      modes.  This simplified the mode checks in
      vp8_reset_mb_tokens_context and vp8_decode_mb_tokens.
      
      Change-Id: Ibec27784139abdc34d4d01f73c09f43e9e10e0f5
      31322c5f
    • Scott LaVarnway's avatar
      Updated vp8_build_intra_predictors_mby_s(sse2/ssse3) · a3377256
      Scott LaVarnway authored
      to work with the latest code.
      
      Patch Set 2: aligned the above_row buffers to fix crash
      
      Change-Id: I7a6992a20ed079ccd302f8c26215cf3057f8b70c
      a3377256
  7. 26 Mar, 2012 2 commits
  8. 23 Mar, 2012 2 commits
  9. 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
  10. 21 Mar, 2012 3 commits
  11. 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
  12. 14 Mar, 2012 1 commit
    • John Koleszar's avatar
      fix potential use of uninitialized rate_y · 20cd3e6b
      John Koleszar authored
      This issue likely doesn't appear in the unmodified encoder, but
      sufficient hacking on the mode selection loop can expose it.
      
      Change-Id: I8a35831e8f08b549806d0c2c6900d42af883f78f
      20cd3e6b
  13. 13 Mar, 2012 1 commit
  14. 12 Mar, 2012 1 commit
  15. 08 Mar, 2012 1 commit
    • Scott LaVarnway's avatar
      threading.c refactoring · 9ed87471
      Scott LaVarnway authored
      Added recon above/left to MACROBLOCKD
      Reworked decode_macroblock
      
      Change-Id: I9c26870af75797134f410acbd02942065b3495c1
      9ed87471
  16. 06 Mar, 2012 3 commits
    • Johann's avatar
      RFC: Reorganize MFQE loops · fd903902
      Johann authored
      Break MFQE code into it's own file.
      
      It is currently only valid for 16x16 and 8x8 Y blocks. It also filters
      4x4 U/V blocks.
      
      Refactor filtering and add associated assembly. Limited test cases show
      --mfqe introduces a penalty of ~20% with HD content. The assembly
      reduces the penalty to ~15%
      
      Change-Id: I4b8de6b5cdff5413037de5b6c42f437033ee55bf
      fd903902
    • Jim Bankoski's avatar
      vp8e - RDLambda fix · 154b4b41
      Jim Bankoski authored
      Last commit went the wrong way.
      
      Change-Id: I5e47ee6c25b0893dfa84318229b93c57dfeec24e
      154b4b41
    • Johann's avatar
      Move SAD and variance functions to common · e50f96a4
      Johann authored
      The MFQE function of the postprocessor depends on these
      
      Change-Id: I256a37c6de079fe92ce744b1f11e16526d06b50a
      e50f96a4
  17. 05 Mar, 2012 1 commit
    • Jim Bankoski's avatar
      vp8e - fix coefficient costing · 88869909
      Jim Bankoski authored
      Coefficient costing failed to take account of the first branch
      being skipped ( 0 vs eob) if the previous token is 0.
      
      Fixed rd to account for slightly increased token cost & cleaned up
      warning message
      
      Change-Id: I56140635d9f48a28dded5a816964e973a53975ef
      88869909
  18. 01 Mar, 2012 2 commits
  19. 29 Feb, 2012 3 commits
    • 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
    • Jim Bankoski's avatar
      vp8e - attempt to lessen blockiness · b8fa2839
      Jim Bankoski authored
      applies a penalty to intra blocks in order to cut down on blockiness in
      easy sections.
      
      Change-Id: Ia9e5df16328b0bf01bf0f2e6e61abcb687316c12
      b8fa2839
    • Scott LaVarnway's avatar
      Decoder loops refactoring · 2578b767
      Scott LaVarnway authored
      Eliminated some mb branches along with other code cleanups.
      This is part of an ongoing effort to remove cut/paste
      code in the decoder.
      
      Change-Id: Ifabb0f67cafa6922b5a0e89a0d03a9b34e9e5752
      2578b767
  20. 28 Feb, 2012 3 commits
    • Scott LaVarnway's avatar
      Eliminated reconintra_mt.c · bcba86e2
      Scott LaVarnway authored
      Reworked the code to use vp8_build_intra_predictors_mby_s,
      vp8_intra_prediction_down_copy, and vp8_intra4x4_predict_d_c
      functions instead.  vp8_intra4x4_predict_d_c is a decoder-only
      version of vp8_intra4x4_predict.  Future commits will fix this
      code duplication.
      
      Change-Id: Ifb4507103b7c83f8b94a872345191c49240154f5
      bcba86e2
    • Scott LaVarnway's avatar
      Removed duplicate code in threading.c · 9a4052a4
      Scott LaVarnway authored
      Change-Id: Id7e44950ceda67b280e410e541510106ef02f1da
      9a4052a4
    • Yunqing Wang's avatar
      Only do uv intra-mode evaluation when intra mode is checked · 019384f2
      Yunqing Wang authored
      When we encode slide-show clips, for the majority of the time,
      only ZEROMV mode is checked, and all other modes are skipped.
      This change delayed uv intra-mode evaluation until intra mode is
      actually checked. This gave big performance gain for slide-show
      video encoding (2nd pass gain: 18% to 28%). But, this change
      doesn't help other types of videos.
      
      Also, zbin_mode_boost is adjusted in mode-checking loop, which
      causes bitstream mismatch before/after this change when --best
      or --good with --cpu-used=0 are used.
      
      Change-Id: I582b3e69fd384039994360e870e6e059c36a64cc
      019384f2
  21. 27 Feb, 2012 2 commits
    • 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
    • Yunqing Wang's avatar
      Fix skippable evaluation in mode decision · 84be08b0
      Yunqing Wang authored
      Yaowu fixed the skippable evaluation by correcting 2nd order
      block's eob.
      
      Change-Id: Id47930cbc74a90a046c0c0e324efb03477639ee0
      84be08b0
  22. 22 Feb, 2012 1 commit
    • Marco Paniconi's avatar
      Remove the frame rate factor for key frame size. · 507ee87e
      Marco Paniconi authored
      When temporal layers is used (i.e., number_of_layers > 1),
      we don't use the frame rate boost for setting the key
      frame target size. The factor was forcing the target size to be
      always at its minimum (2* per_frame_bandwidth) for low frame rates
      (i.e., base layer frame rate).
      
      Generally we should modify or remove this frame rate factor;
      for now we turn if off for number_of_layers > 1.
      
      Change-Id: Ia5acf406c9b2f634d30ac2473adc7b9bf2e7e6c6
      507ee87e
  23. 21 Feb, 2012 2 commits
  24. 17 Feb, 2012 2 commits
    • Yunqing Wang's avatar
      Fix incorrect use of uv eobs in intra modes · 04b9e0d7
      Yunqing Wang authored
      In vp8_rd_pick_inter_mode(), if total of eobs is zero, rate needs
      to be adjusted since there are no non-zero coefficients for
      transmission. The uv intra eobs calculated in
      rd_pick_intra_mbuv_mode() need to be saved before they are
      overwritten by inter-mode eobs.
      
      Change-Id: I41dd04fba912e8122ef95793d4d98a251bc60e58
      04b9e0d7
    • Attila Nagy's avatar
      Update encoder mb_skip_coeff and prob_skip_false calculation · ce42e79a
      Attila Nagy authored
      mode_info_context->mbmi.mb_skip_coeff has to always reflect the
      existence or not of coeffs for a certain MB. The loopfilter needs this
      info.
      mb_skip_coeff is either set by the vp8_tokenize_mb or has to be set to
      1 when the MB is skipped by mode selection. This has to be done
      regardless of the mb_no_coeff_skip value.
      
      prob_skip_false is needed just when mb_no_coeff_skip is 1. No need to
      keep count of both skip_false and skip_true as they are complementary
      (skip_true+skip_false = total_mbs)
      
      Change-Id: I3c74c9a0ee37bec10de7bb796e408f3e77006813
      ce42e79a