1. 19 Apr, 2012 1 commit
    • 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
  2. 17 Apr, 2012 2 commits
    • 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
    • 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
  3. 29 Mar, 2012 1 commit
  4. 26 Mar, 2012 1 commit
  5. 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
  6. 21 Mar, 2012 2 commits
  7. 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
  8. 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
  9. 13 Mar, 2012 1 commit
  10. 12 Mar, 2012 1 commit
  11. 06 Mar, 2012 2 commits
  12. 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
  13. 01 Mar, 2012 2 commits
  14. 29 Feb, 2012 2 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
  15. 28 Feb, 2012 2 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
    • 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
  16. 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
  17. 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
  18. 21 Feb, 2012 1 commit
  19. 17 Feb, 2012 3 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
    • Attila Nagy's avatar
      Remove redundant init of segment_counts in vp8_encode_frame · 565d0e6f
      Attila Nagy authored
      segment_counts was zero init twice in the beginning of vp8_encode_frame.
      
      Change-Id: Ibc29f6896dabd9aab1d0993f3941cf6876022e70
      565d0e6f
  20. 16 Feb, 2012 3 commits
    • Johann's avatar
      Clarify 'max_sad' usage · 6b151d43
      Johann authored
      Depending on implementation the optimized SAD functions may return early
      when the calculated SAD exceeds max_sad.
      
      Change-Id: I05ce5b2d34e6d45fb3ec2a450aa99c4f3343bf3a
      6b151d43
    • Attila Nagy's avatar
      Consolidate C version of token packing functions · d02e74a0
      Attila Nagy authored
      Replace inner loops of pack_mb_row_tokens_c and
      pack_tokens_into_partitions_c with a call to pack_tokens_c.
      
      Change-Id: I0341554fb154a14a5dadb63f8fc78010724c2c33
      d02e74a0
    • 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
  21. 10 Feb, 2012 1 commit
  22. 09 Feb, 2012 2 commits
    • Scott LaVarnway's avatar
      x_motion_minq table reduction · 768ae275
      Scott LaVarnway authored
      Reduced by 4080 bytes.
      
      Change-Id: I037b55bc9684bf4a54bce238be00e8c4db3f643e
      768ae275
    • Johann's avatar
      Fix variance overflow · fea3556e
      Johann authored
      In the variance calculations the difference is summed and later squared.
      When the sum exceeds sqrt(2^31) the value is treated as a negative when
      it is shifted which gives incorrect results.
      
      To fix this we cast the result of the multiplication as unsigned.
      
      The alternative fix is to shift sum down by 4 before multiplying.
      However that will reduce precision.
      
      For 16x16 blocks the maximum sum is 65280 and sqrt(2^31) is 46340 (and
      change).
      
      PPC change is untested.
      
      Change-Id: I1bad27ea0720067def6d71a6da5f789508cec265
      fea3556e
  23. 08 Feb, 2012 1 commit
  24. 03 Feb, 2012 1 commit
    • Yunqing Wang's avatar
      Allow to skip highest-resolution encoding in multi-resolution encoder · fa1a9290
      Yunqing Wang authored
      Sometimes, a user doesn't have enough bandwidth to send high-resolution
      (i.e. HD) video even though the camera catches HD video. This change
      allowed users to skip highest-resolution encoding by setting that level's
      target bit rate to 0.
      
      To test it, modify the following line in vp8_multi_resolution_encoder.c.
          unsigned int  target_bitrate[NUM_ENCODERS]={1400, 500, 100};
      To skip the highest-resolution level, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 500, 100};
      To skip the first and second highest resolution levels, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 0, 100};
      
      This change also fixed a small problem in mapping, which slightly helped
      quality and performance.
      
      Change-Id: I977bae9a9fbfba85c8be4bd5af01539f2b84bc81
      fa1a9290
  25. 02 Feb, 2012 3 commits
  26. 31 Jan, 2012 1 commit
    • Scott LaVarnway's avatar
      BLOCKD structure cleanup · 749bc986
      Scott LaVarnway authored
      Removed redundancies.  All of the information can be
      found in the MACROBLOCKD structure.
      
      Change-Id: I7556392c6f67b43bef2a5e9932180a737466ef93
      749bc986