1. 04 Dec, 2014 1 commit
  2. 13 Oct, 2014 1 commit
  3. 08 Oct, 2014 1 commit
    • Marco's avatar
      vp8: Suppress denoising with respect to old reference frames. · 3b789d36
      Marco authored
      If the GOLDEN or ALTREF frame was last updated > x frames in the past,
      don't use them for denoising (only consider LAST). Using an old reference
      frame for denoising, e.g., if it is a long-term reference or the last key frame,
      can cause some visible artifacts, in particular in the aggressive denoising mode.
      
      Change-Id: I239c9fbb092c36cba7e95328f1fa67a58d6a7ed9
      3b789d36
  4. 02 Sep, 2014 1 commit
  5. 14 Aug, 2014 1 commit
    • Marco's avatar
      vp8: Modify to use closest reference in zero_mv bias. · 21a0dade
      Marco authored
      Modify zero_mv bias condition to include check that "closest" reference is last_frame.
      This is needed for temporal layers, where the last_frame is not always the closest reference.
      Also, constain zeromv_count to be for last_frame reference.
      
      Change-Id: I7af54a809ebf01ef43b9933c9d4095b6cb189390
      21a0dade
  6. 08 Aug, 2014 1 commit
  7. 29 Jul, 2014 1 commit
  8. 15 Jul, 2014 1 commit
  9. 13 Jun, 2014 1 commit
    • Marco Paniconi's avatar
      Allow for deblocking temporal-denoised signal. · d08b2ba1
      Marco Paniconi authored
      Allow for an option to selectively apply the deblocking loop filter to the denoised
      raw block, based on the denoised state (no-filter, filter with zero motion, or filter with non-zero motion)
      of the current block and its upper and left denoised block.
      This helps to reduce some blocking artifacts from the motion-compensated denoising.
      
      Change-Id: I0ac4e70076df69a98c5391979e739a2681e24ae6
      d08b2ba1
  10. 04 Jun, 2014 1 commit
  11. 16 May, 2014 1 commit
  12. 23 Apr, 2014 1 commit
  13. 12 Apr, 2013 1 commit
    • Marco Paniconi's avatar
      Fix for multi-res-encoding: · 282c9639
      Marco Paniconi authored
      Use local variable for setting the improved prediction mode.
      cpi->sf.improved_mv_pred is set/fixed at the frame level
      and should not be changed inside pick_inter_mode.
      
      Change-Id: Ie28d9171ac000e631af0e30204970e3d4fff3078
      282c9639
  14. 11 Dec, 2012 1 commit
  15. 05 Dec, 2012 1 commit
  16. 04 Dec, 2012 1 commit
  17. 07 Nov, 2012 1 commit
  18. 06 Nov, 2012 1 commit
  19. 02 Nov, 2012 1 commit
  20. 16 Oct, 2012 1 commit
  21. 09 Oct, 2012 2 commits
    • John Koleszar's avatar
      multi-res: disable intra on forced ref frames · d21070a5
      John Koleszar authored
      If a reference frame is forced because of low dissimilarity, then
      shut off the search of intra modes. This change has mixed results. On
      one clip (QVGA), it hurt quality by ~1.5% with negligible speed impact.
      On another (VGA) it had negligible affect on quality, but a ~0.2% speed
      impact.
      
      Change-Id: Ic8b07648979d732f489de5f094957e140f84d2eb
      d21070a5
    • John Koleszar's avatar
      multi-res: add parent_ref_valid flag · 4de7aed6
      John Koleszar authored
      Rather than overloading the parent_ref_frame value to shut off the
      search in some cases, add a new validity flag. This cleans up some
      of the duplicated mr_encoder_id && mr_low_res_mv_avail checks as
      well, for readability.
      
      Change-Id: Iddad93a27066c3d85ff2f25a361ac113b288ab7b
      4de7aed6
  22. 08 Oct, 2012 1 commit
    • John Koleszar's avatar
      multi-res: work around reference mismatch · 30d8ba54
      John Koleszar authored
      In some situations, believed to be an interaction between temporal
      scalability and dropped frames, the references available to an
      encoder may not be the same references available to its parent.
      Previously, the code tried to force the reference frame chosen by
      the parent to be used on this frame, even if it was disabled. This
      was preventing the pick mode loop from running even once, which led
      to a crash.
      
      Attempts to reproduce this bug locally were unsuccessful, so it is
      still undetermined what the underlying cause of this issue is. In
      the specific case that was failing, the application did not set
      any flags which influenced the reference selection on that frame.
      ref_frame_flags indicated that the golden frame was disabled,
      believed to be because the last frame updated the last and golden
      frames, so golden was shut off by default. It's not clear why this
      wouldn't have also been true in the lower res encoder, ie, why the
      lower res encoder decided to use and/or was allowed to use the
      golden frame. We weren't able to debug into the non-crashing
      lower res encoder as the crash couldn't be reproduced locally.
      
      Change-Id: Ifb265253d26963ac2afde0e20cf6792788be6af7
      30d8ba54
  23. 03 Oct, 2012 1 commit
    • John Koleszar's avatar
      fix uninitialized value in multi-res encoding · 0e213fb9
      John Koleszar authored
      If a parent mb is available but is intra coded, then parent_ref_mv is
      invalid. Check that the parent is inter coded before trying to access
      the parent_ref_mv. Previously the parent_ref_mv was being read from
      an uninitialized stack allocation, causing potential OOB reads and
      other undefined behavior.
      
      Change-Id: I0c93cd412a19c3a184bcf6decaa145b3a036a6c0
      0e213fb9
  24. 21 Aug, 2012 1 commit
    • Yunqing Wang's avatar
      Add biasing to ZEROMV for videos with static background · 24c346df
      Yunqing Wang authored
      For videos with big static background(such as video conferencing
      clips), the mode decision was biased to ZEROMV in order to
      obtain a stable background. The percentage of ZEROMV on last
      frame was used to predict if there is static area in current frame,
      and checking already-encoded neighboring macroblocks' motion
      vectors to make sure the local area has low motion.
      
      Change-Id: I05b3241d3a56a0bda88b6681e5646c1c8baf2e57
      24c346df
  25. 20 Aug, 2012 1 commit
    • Jim Bankoski's avatar
      static threshold fix for realtime · 985f09fd
      Jim Bankoski authored
      This code allows us to skip encoding if the sse
      is less than the error we could possibly encode.
      
      Change-Id: Iefb590dc0ee30b660495218398c7969f7d5fd19f
      985f09fd
  26. 02 Aug, 2012 1 commit
  27. 01 Aug, 2012 3 commits
    • Johann's avatar
      Rename vp8_intra4x4_predict_d · a497cb59
      Johann authored
      predict_d has become canonical. Remove previous helper function.
      
      Disable ARM assembly pending update.
      
      Change-Id: Idd84ac8a28f9b0221ea97904a77de1e705d06a7d
      a497cb59
    • Johann's avatar
      Use intra4x4_predict_d parameter names · 41aede61
      Johann authored
      Rename the local variables for consistency.
      
      Change-Id: Ic202ff54551332f706d97da9b67b2e0959ee7f61
      41aede61
    • Johann's avatar
      Change vp8_intra4x4_predict call sites · a82c58c4
      Johann authored
      Use the _d variant from the decoder. It moves the pointer calculations
      to the caller.
      
      Change-Id: Iae2a793433ef082980a3ffa0a1cabf0264a6a24d
      a82c58c4
  28. 26 Jul, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: add drop_frame support · 4066c8b2
      Yunqing Wang authored
      Added drop_frame support in multi-resolution encoder.
      
      If one frame is dropped at a lower-resolution level, the next
      upper-resolution level encoder needs to encode that frame
      independently without any lower-resolution level motion
      information.
      
      Another issue is that if one frame is dropped at some but not all
      resolution levels, a frame after that one may use different set
      of reference frames at different resolution levels. This reference
      frame asynchronization could degrade motion search precision in
      upper-resolution level encoding, which uses lower-resolution level
      motion result. This change compares the lower-resolution and upper-
      resolution level's reference frames. If they are not the same, the
      upper-resolution level encoder can not use lower-resolution level
      motion result.
      
      Change-Id: I61afa4f313630e75b7cbdd5742e230e8724a988a
      4066c8b2
  29. 11 Jun, 2012 1 commit
    • John Koleszar's avatar
      Fix pedantic compiler warnings · 0164a1cc
      John Koleszar authored
      Allows building the library with the gcc -pedantic option, for improved
      portabilty. In particular, this commit removes usage of C99/C++ style
      single-line comments and dynamic struct initializers. This is a
      continuation of the work done in commit 97b766a4, which removed most
      of these warnings for decode only builds.
      
      Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
      0164a1cc
  30. 30 May, 2012 1 commit
    • Jim Bankoski's avatar
      fix denoiser for temporal patterns and rd · f78e5a04
      Jim Bankoski authored
      This extends the denoiser to work for temporally scalable
      coding.
      
      I believe this also fixes a very rare but really bad bug in the original
      implementation.
      
      Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
      f78e5a04
  31. 24 May, 2012 1 commit
    • Jim Bankoski's avatar
      fix denoiser for temporal patterns and rd · 57faddb7
      Jim Bankoski authored
      This extends the denoiser to work for temporally scalable
      coding.
      
      I believe this also fixes a very rare but really bad bug in the original
      implementation.
      
      
      Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
      57faddb7
  32. 16 May, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: force Key frame sychronization · 65dd157c
      Yunqing Wang authored
      In multi-resolution encoding, frame_type decision for each frame
      is made by the lowest-resolution encoder. For all other higher-
      resolution encoders, kf_mode is always set to VPX_KF_DISABLED,
      and they are forced to use the same frame_type picked by the
      lowest-resolution encoder.
      
      Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
      65dd157c
  33. 11 May, 2012 1 commit
  34. 23 Apr, 2012 1 commit
    • 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
  35. 26 Mar, 2012 1 commit
  36. 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
  37. 13 Mar, 2012 1 commit