1. 19 Apr, 2013 1 commit
    • Paul Wilkins's avatar
      Adjustments to key frame sizing. · 21ff7bdc
      Paul Wilkins authored
      Adjustments take heavier account of the frame near a kf
      in deciding boost and limit the total number that can contribute.
      Also adjusted the minq calculations such that in most cases we
      generate a smaller key frame.
      Modified the code that accounts for how static the sequence is and
      added some adjustment based on image size. This is still very
      crude but smaller images tend to behave better with a larger
      delta between KF Q and other frames than larger image formats.
      Changes give sizable gains in overall PSNR  on all the test sets but the
      biggest gains (~3%) were on the std-hd set.
      The gains were smaller for SSIM but still significant.
      Average PSNR results are mixed because this metric can very easily
      be altered by having a very good / lossless coding of one or two frames.
      Some of the YT and YT-HD clips in particular have blank lead ins and
      allowing lossless coding of these appears to make a big difference to
      average PSNR but it reality does not help much at all.
      
      Change-Id: I6bfe485a1d330b47c783832f1717c95c535464ec
      21ff7bdc
  2. 17 Apr, 2013 1 commit
  3. 16 Apr, 2013 2 commits
    • Adrian Grange's avatar
      Move configure_arnr_filter function · 9b84d113
      Adrian Grange authored
      This function is now called from configures the ARNR
      filter so it belongs with the other temporal filter
      functions.
      
      Change-Id: I64211875918364b5b8edfb97743e573c6def1663
      9b84d113
    • Adrian Grange's avatar
      Fixed overflow test on boost calculation · 82bbb230
      Adrian Grange authored
      Normalization of the frame boost value was being done
      when it reached the value 1028. The intention was to
      keep to a range of 10 bits, so it should have been
      clipped above 1023.
      
      Change-Id: I0afdddc1d2eb9e7822ec4578903cbe6ec0b33b91
      82bbb230
  4. 15 Apr, 2013 2 commits
    • Dmitry Kovalev's avatar
      Removing TRUE and FALSE macro definitions. · a0d9309e
      Dmitry Kovalev authored
      Using regular 0 and 1 constants now.
      
      Change-Id: Ie763503cbb727847cc8f1d6506cd6f2ee607f056
      a0d9309e
    • Adrian Grange's avatar
      Initial addition of multiple ARF frames · c2876cf0
      Adrian Grange authored
      This is work-in-progress, it implements multiple ARF
      encoding behind an experimental flag.
      
      It adds the ability to insert multiple ARF frames into a
      single ARF group. This patch implements the reordering
      of the coded frames, and implements a fixed-length coding
      pattern. It applies a fixed quantizer strategy based on
      where the frame is in the coding sequence.
      
      Further work to modify the rate control strategy is
      ongoing and will be submitted via a set of future patches.
      
      In this first step, each ARF group is recursively
      bisected and an ARF frame added at that position in the
      sequence. The recursion continues until ARF frames are
      within MIN_GF_INTERVAL frames.
      
      The code sits behind the "multiple-arf" experimental
      flag ("CONFIG_MULTIPLE_ARF"). The experimental flag
      "oneshotq" ("CONFIG_ONESHOTQ") also needs to be enabled
      for this patch to work correctly.
      
      Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
      c2876cf0
  5. 28 Mar, 2013 1 commit
    • Paul Wilkins's avatar
      Adjust mv_ratio_accumulator threshold. · 17ef6a8d
      Paul Wilkins authored
      This threshold effectively limits the amount of motion
      from one end of a GF/ARF group to the other.
      This patch makes the threshold depend on image size.
      
      Change-Id: Id45d1d7bced815f86ddd037be53164894b00b82f
      17ef6a8d
  6. 20 Mar, 2013 1 commit
  7. 18 Mar, 2013 1 commit
    • Paul Wilkins's avatar
      Adapt ARNR filter length and strength. · cdb322dd
      Paul Wilkins authored
      Adjust the filter length and strength for each
      ARF group based on a measure of difficulty (the boost)
      and the active q range.
      
      Remove lower limit on RDMULT value.
      
      Average gains on the different sets in range 0.4%-0.9%.
      However the ARNR changes give a very big boost on a
      few clips.
      
      Eg. Soccer ~5%, in derf set and Cyclist ~ 10% in the std-hd set
      
      Change-Id: I2078d78798e27ad2bcc2b32d703ea37b67412ec4
      cdb322dd
  8. 16 Mar, 2013 1 commit
    • John Koleszar's avatar
      Fix use of NaN in firstpass · db5f2cb5
      John Koleszar authored
      If the second reference is better than the first in the long term,
      it was possible to try to take the fractional exponent of a
      negative number, giving an undefined result.
      
      Change-Id: I1dd08286747ceae960eb03bb5d98a383cc9d253b
      db5f2cb5
  9. 11 Mar, 2013 1 commit
    • Paul Wilkins's avatar
      Changes to maximum gf/arf interval. · 08d2c382
      Paul Wilkins authored
      This patch puts in an adjustment to the maximum gf/arf
      interval based on the active q range.  It sets a fixed
      baseline maximum of 16 but can drop this down to 12 at
      lower q. This required some re-ordering in the first pass
      code to insure we have a Q range estimate before defining
      the first gf sequence.
      
      The main gains seed are int he STD hd set on 50fps clips
      where previously the interval could rise as high as 25.
      On the std hd clip the gains are around 2.8% with limit set
      to 300 frames.
      
      When combined with the one shot rate control flags we get
      combined of:
      
      derf 1.55% (limit300), yt 7.25%, hd 5.17% std-hd 5.84% (limit300)
      
      Change-Id: Ib380d51354511f2ff0f171a8df4e74291c0421f9
      08d2c382
  10. 08 Mar, 2013 1 commit
    • Jingning Han's avatar
      Extend diff MV limit from +/-256 to +/-1024 · 2a5278bd
      Jingning Han authored
      Increase the motion search range by 4x. Change MV_CLASS tree of the
      entropy coding to allow two additional mv classes to cover the
      extended motion vector limit. The codec determines the effective
      motion search range conditioned on the actual frame dimension.
      
      It provides coding gains:
      
      stdhd 0.39%
      yt    0.56%
      hd    0.47%
      
      Major coding performance gains are packed in several sequences with
      intense motion activities, e.g., ped_1080p gains 7% at high bit-rates,
      and on average 3%.
      
      TODO: Need to further tune the rate control and motion search units.
      
      Change-Id: Ib842540a6796fbee5a797809433ef6a477c6d78d
      2a5278bd
  11. 28 Feb, 2013 1 commit
  12. 27 Feb, 2013 2 commits
    • John Koleszar's avatar
      Use ref_frame_map vice active_ref_idx on the encoder · 800ad0b8
      John Koleszar authored
      This patch makes the encoder's use of ref_frame_map and active_ref_idx
      consistent with the decoder. ref_frame_map[] maps a reference buffer
      index to its actual location in the yv12_fb array, since many
      references may share an underlying buffer. active_ref_idx[] mirrors
      cpi->{lst,gld,alt}_fb_idx, holding the active references in each
      slot.
      
      This also fixes a bug in setup_buffer_inter() where the incorrect
      reference was used to populate the scaling factors.
      
      Change-Id: Id3728f6d77cffcd27c248903bf51f9c3e594287e
      800ad0b8
    • John Koleszar's avatar
      Spatial resamping of ZEROMV predictors · eb939f45
      John Koleszar authored
      This patch allows coding frames using references of different
      resolution, in ZEROMV mode. For compound prediction, either
      reference may be scaled.
      
      To test, I use the resize_test and enable WRITE_RECON_BUFFER
      in vp9_onyxd_if.c. It's also useful to apply this patch to
      test/i420_video_source.h:
      
        --- a/test/i420_video_source.h
        +++ b/test/i420_video_source.h
        @@ -93,6 +93,7 @@ class I420VideoSource : public VideoSource {
      
           virtual void FillFrame() {
             // Read a frame from input_file.
        +    if (frame_ != 3)
             if (fread(img_->img_data, raw_sz_, 1, input_file_) == 0) {
               limit_ = frame_;
             }
      
      This forces the frame that the resolution changes on to be coded
      with no motion, only scaling, and improves the quality of the
      result.
      
      Change-Id: I1ee75d19a437ff801192f767fd02a36bcbd1d496
      eb939f45
  13. 25 Feb, 2013 2 commits
    • James Zern's avatar
      vp9: promote gf_group_bits calculation to 64-bit · b2fc3ca0
      James Zern authored
      avoids signed integer overflow
      
      Change-Id: I9ffcdba90b21edb324d1b173fd11d613e0592931
      b2fc3ca0
    • Paul Wilkins's avatar
      Minor rate control refactoring and experiments. · 97da8b8c
      Paul Wilkins authored
      Some minor refactoring code relating to estimates of
      bits per MB at a given Q and estimating the allowed Q range.
      
      Most of the changes here were included in a previous commit.
      This commit seeks to separate out the refactoring from more
      the material changes.
      
      Two #define control flags have been added for experimentation.
      
      ONE_SHOT_Q_ESTIMATE force the two pass encoder to
      use its initial Q range estimate for the whole clip even if this results
      in a miss on the target data rate. In effect this tightens the Q range
      seen at the expense of rate control accuracy.
      
      DISABLE_RC_LONG_TERM_MEM is a related flag that disables the
      long term memory in the rate control. Local adjustments are still
      made to try and better hit the rate target on a per frame basis but
      the impact of rate control misses is not propagated to the remainder
      of the clip. This means that for example an overshoot early on will not
      cause frames later in the clip to be starved of bits. Again the result
      of this relaxation amy be less rate control accuracy especially on short
      clips.
      
      The flags are disabled by default for now.
      
      Change-Id: I7482f980146d8ea033b5d50cc689f772e4bd119e
      97da8b8c
  14. 22 Feb, 2013 2 commits
  15. 16 Jan, 2013 1 commit
    • John Koleszar's avatar
      Start to anonymize reference frames · da832a80
      John Koleszar authored
      Remove lst_fb_idx, gld_fb_idx, alt_fb_idx, refresh_last_frame,
      refresh_golden_frame, refresh_alt_ref_frame from common. Gold/Alt are
      encode side conventions. From the decoder's perspective, we want to be
      dealing with numbered references.
      
      Updates to active_ref 2 signal mode context switches, vestigial from
      refresh_alt_ref_frame. This needs some clean up to make sense with
      increased numbers of reference frames, as well as reimplementing the
      swapping of alt/golden which was previously done using the
      buffer-to-buffer copy mechanism removed in an earlier commit.
      
      Change-Id: I7334445158b7666f9295d2a2dd22aa03f4485f58
      da832a80
  16. 14 Jan, 2013 1 commit
    • John Koleszar's avatar
      Use INT64_MAX instead of LLONG_MAX · 24bc1a71
      John Koleszar authored
      These variables have the type int64_t, not long long. long long could
      be a larger type than 64 bits. Emulate INT64_MAX for older versions of
      MSVC, and remove the unreferenced vpx_ports/vpxtypes.h
      
      Change-Id: Ideaca71838fcd3849d816d5ab17aa347c97d03b0
      24bc1a71
  17. 08 Jan, 2013 1 commit
  18. 26 Dec, 2012 1 commit
  19. 18 Dec, 2012 1 commit
  20. 17 Dec, 2012 2 commits
    • John Koleszar's avatar
      Remove vp9_type_aliases.h · 1306ba76
      John Koleszar authored
      Prefer the standard fixed-size integer typedefs.
      
      Change-Id: Iad75582350669e49a8da3b7facb9c259e9514a5b
      1306ba76
    • Paul Wilkins's avatar
      Problem of over smoothing with intra modes. · d8f5d1b2
      Paul Wilkins authored
      In some cases intra modes in inter frames give
      an over smoothed appearance. Especially with
      noisy but flat content.
      
      Also in some cases there were problems with key
      frame sizing again with very flat but noisy content.
      
      These are temporary changes to help alleviate the
      visual problems but will almost certainly hurt metric
      results especially at the very low data rate end.
      
      Change-Id: I11549179a19277ffc283d9788bc70168f2a8bdc9
      d8f5d1b2
  21. 07 Dec, 2012 1 commit
  22. 06 Dec, 2012 1 commit
  23. 05 Dec, 2012 1 commit
    • Johann's avatar
      Begin to refactor vpx_scale usage in VP9 · 52d350fe
      Johann authored
      Only declare the functions in vpx_scale RTCD and include the relevant
      header.
      
      Remove unused files and functions in vpx_scale to avoid wasting time
      renaming. vpx_scale/win32/scaleopt.c contains functions which have not
      been called in a long time but are potentially optimized.
      
      The 'vp8' functions have not been renamed yet. That is for after the
      cleanup.
      
      Change-Id: I2c325a101d60fa9d27e7dfcd5b52a864b4a1e09c
      52d350fe
  24. 03 Dec, 2012 1 commit
    • Johann's avatar
      Begin to refactor vpx_scale usage in VP9 · c6bd29e2
      Johann authored
      Only declare the functions in vpx_scale RTCD and include the relevant
      header.
      
      Remove unused files and functions in vpx_scale to avoid wasting time
      renaming. vpx_scale/win32/scaleopt.c contains functions which have not
      been called in a long time but are potentially optimized.
      
      The 'vp8' functions have not been renamed yet. That is for after the
      cleanup.
      
      Change-Id: I2c325a101d60fa9d27e7dfcd5b52a864b4a1e09c
      c6bd29e2
  25. 29 Nov, 2012 2 commits
  26. 28 Nov, 2012 1 commit
  27. 27 Nov, 2012 1 commit
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
  28. 25 Nov, 2012 1 commit
  29. 10 Nov, 2012 1 commit
  30. 08 Nov, 2012 1 commit
  31. 06 Nov, 2012 1 commit
    • Yaowu Xu's avatar
      silent a lot of MSVC compiler warnings · 8a336b0d
      Yaowu Xu authored
      there are still a couple type of warning left, which are related to
      double constants assigned to float type. As those would be addressed
      by the conversion of transforms into integer version. This commit
      has left those un-dealt with.
      
      Change-Id: I48fd9b489c0c27ad6b543f4177423419f929f2bb
      8a336b0d
  32. 02 Nov, 2012 2 commits