1. 23 Apr, 2014 1 commit
  2. 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
  3. 11 Dec, 2012 1 commit
  4. 05 Dec, 2012 1 commit
  5. 04 Dec, 2012 1 commit
  6. 07 Nov, 2012 1 commit
  7. 06 Nov, 2012 1 commit
  8. 02 Nov, 2012 1 commit
  9. 16 Oct, 2012 1 commit
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 02 Aug, 2012 1 commit
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 11 May, 2012 1 commit
  23. 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
  24. 26 Mar, 2012 1 commit
  25. 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
  26. 13 Mar, 2012 1 commit
  27. 06 Mar, 2012 1 commit
  28. 28 Feb, 2012 1 commit
    • 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
  29. 16 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Code simplification · 79d330d7
      Paul Wilkins authored
      Removal of the pickinter.c and .h files and calls to this
      code.
      
      Removal of some code relating to real time and one pass
      settings  though there is more to be done in this regard.
      
      However,  vp8_set_speed_features() now
      only supports modes 0 and 1 and speeds up to 3
      so rd should always be set.
      
      Change-Id: I62c0c1b6154ab499785baef310536080e87bc4d8
      79d330d7
  30. 10 Feb, 2012 1 commit
  31. 09 Feb, 2012 2 commits
    • Paul Wilkins's avatar
      Removal of SEGFEATURES placeholder comments · d90f0eb4
      Paul Wilkins authored
      This commit only involves the removal of placeholder comments
      //#if CONFIG_SEGFEATURES.
      
      Change-Id: I94b350daaf998ee0cfdde5aa25b1d3b0522ab816
      d90f0eb4
    • Paul Wilkins's avatar
      Merge COMPRED · cf8af867
      Paul Wilkins authored
      Merged in most of the current common prediction changes
      that were under the #if CONFIG_COMPRED option.
      
      Change-Id: If4e6f61dbe7b86dd449f6effbe93b5eb7e893885
      cf8af867
  32. 06 Feb, 2012 1 commit
    • Paul Wilkins's avatar
      Merged NEWNEAR experiment · 9c9300f5
      Paul Wilkins authored
      This commit merges the NEWNEAR experiment such that it
      is effectively always on.
      
      The fact that there were changes in the threading code again
      highlights the need to strip out such features during the
      bitstream development phase as trying to maintain this code
      (especially as it is not being tested) slows the development cycle.
      
      Change-Id: I8b34950a1333231ced9928aa11cd6d6459984b65
      9c9300f5
  33. 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
  34. 02 Feb, 2012 2 commits
    • Scott LaVarnway's avatar
      Moved ref_frame_cost from MACROBLOCKD to MACROBLOCK · d8ebdcd8
      Scott LaVarnway authored
      Change-Id: I05788522e9cde4322cfb12032483bdbf184bdf0b
      d8ebdcd8
    • 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
  35. 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