1. 27 Feb, 2013 11 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
      Test upscaling as well as downscaling · b683eecf
      John Koleszar authored
      Fixes a bug in vp9_set_internal_size() that prevented returning to
      the unscaled state. Updated the ResizeInternalTest to scale both
      down and up. Added a check that all frames are within 2.5% of the
      quality of the initial keyframe.
      
      Change-Id: I3b7ef17cdac144ed05b9148dce6badfa75cff5c8
      b683eecf
    • John Koleszar's avatar
      Use 256-byte aligned filter tables · 6fd7dd1a
      John Koleszar authored
      This avoids duplicating all the filters twice. Includes fixups to the
      convolve routines and associated tests to make this work.
      
      Change-Id: I922f86021594e55072ddb63b42b2313605db6e00
      6fd7dd1a
    • John Koleszar's avatar
      Set scale factors consistently for SPLITMV · 472eeaf0
      John Koleszar authored
      This commit updates the 4x4 prediction to consistently use the
      build_2x1_inter_predictor() method. That function is updated to
      calculate the scale offset, rather than relying on the caller
      to calculate it. In the case that the 2x1 prediction can not
      be used, the scale offset is recalculated for each 1x1 block.
      The idea here is that the offsets are calculated before each
      call to vp9_build_scaled_inter_predictor().
      
      Change-Id: I0ac3343dd54e2846efa3c4195fcd328b709ca04d
      472eeaf0
    • John Koleszar's avatar
      Combined motion compensation with scaled predictors · 77f88e97
      John Koleszar authored
      This patch extends the previous support for using references of a
      different resolution in ZEROMV mode to all inter prediction modes.
      Subpixel based best-mv scoring is disabled when the reference frame
      differs in resolution from the current frame.
      
      Change-Id: Id4dc3e5e6692de98d9857fd56bfad3ac57e944ac
      77f88e97
    • 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
    • Dmitry Kovalev's avatar
    • Ronald S. Bultje's avatar
    • Ronald S. Bultje's avatar
    • Ronald S. Bultje's avatar
      db54e677
    • James Zern's avatar
  2. 26 Feb, 2013 10 commits
  3. 25 Feb, 2013 12 commits
    • Dmitry Kovalev's avatar
      Code cleanup. · 9770d564
      Dmitry Kovalev authored
      Removing switch statements for inverse hybrid transforms. Making code style
      consistent for all similar transform implementations. Renaming shortpitch
      and short_pitch variables to half_pitch.
      
      Change-Id: I875f7a82aae4e8063a58777bf1cc3f1e67b48582
      9770d564
    • Dmitry Kovalev's avatar
      Merge "Code cleanup." into experimental · 3171b69d
      Dmitry Kovalev authored
      3171b69d
    • Dmitry Kovalev's avatar
      Merge "Code cleanup." into experimental · 0287d20a
      Dmitry Kovalev authored
      0287d20a
    • Jingning Han's avatar
    • Dmitry Kovalev's avatar
      Code cleanup. · 20b0cb59
      Dmitry Kovalev authored
      Removing redundant parentheses, better code formatting, introducing
      ROUND_POWER_OF_TWO macro to replace repeated expression.
      
      Change-Id: I91aad7a53ed03482428b2419de4bb99fd92c6771
      20b0cb59
    • Dmitry Kovalev's avatar
      Code cleanup. · ab196b7e
      Dmitry Kovalev authored
      Lower case names of variables. Removing redundant spaces, parentheses,
      casts, and variables.
      
      Change-Id: I55b80c55b7d5adca44c1e8adb40a124c0680f229
      ab196b7e
    • 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
    • Jingning Han's avatar
      Improving the forward 16x16 ADST/DCT accuracy · 65821d66
      Jingning Han authored
      Increase the first stage dynamic range by 4 times, and reduce it
      back with proper rounding before applying the second stage. Hence
      it still fits in the given dynamic range and slightly improves
      the key frame coding performance.
      
      Change-Id: Ia4c5907446f20a95dc3de079c314b3ad1221d8aa
      65821d66
    • Jingning Han's avatar
      clean up forward and inverse hybrid transform · 77a3becf
      Jingning Han authored
      Rebased.
      
      Remove the old matrix multiplication transform computation. The 16x16
      ADST/DCT can be switched on/off and evaluated by setting ACTIVE_HT16
      300/0 in vp9/common/vp9_blockd.h.
      
      Change-Id: Icab2dbd18538987e1dc4e88c45abfc4cfc6e133f
      77a3becf
    • 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
    • Yaowu Xu's avatar
      optimize forward 16x16 DCT for accuracy · 499fe05d
      Yaowu Xu authored
      This commit added pre/post scaling for first half of fDCT16x16 to
      reduce error, by simulation of 100,000 blocks for random inputs,
      the average sse reduced from 2.1/block to 0.0498/block.
      
      also enabled tests for 16x16 fDCT and iDCT
      
      Change-Id: Id2a95f0464c6dd4118797d456237ae90274c0f02
      499fe05d
  4. 23 Feb, 2013 5 commits
    • Ronald S. Bultje's avatar
      Split coefficient token tables intra vs. inter. · 0c9e2e9a
      Ronald S. Bultje authored
      Change-Id: I5416455f8f129ca0f450d00e48358d2012605072
      0c9e2e9a
    • Paul Wilkins's avatar
      Further changes to coefficient contexts. · c17672a3
      Paul Wilkins authored
      This patch alters the balance of context between the
      coefficient bands (reflecting the position of coefficients
      within a transform blocks) and the energy of the previous
      token (or tokens) within a block.
      
      In this case the number of coefficient bands is reduced
      but more previous token energy bands are supported.
      
      Some initial rebalancing of the default tables has been
      by running multiple derf clips at multiple data rates using
      the ENTOPY_STATS macro. Further balancing needs to be
      done using larger image formatsd especially in regard to
      the bigger transform sizes which are not as well represented
      in encodings of smaller image formats.
      
      Change-Id: If9736e95c391e711b04aef6393d26f60f36e1f8a
      c17672a3
    • Yaowu Xu's avatar
    • Yaowu Xu's avatar
      8bf1c4dd
    • Yaowu Xu's avatar
      optimize 8x8 fdct rounding for accuracy · 22012ee9
      Yaowu Xu authored
      The commit added a final rounding choice for 8x8 forward dct to get
      rid of a sign bias at DC position and improve the accuracry in term
      of round trip error for 8x8 fDCT/iDCT.
      
      This commit also enabled forward 8x8 dct test.
      
      Change-Id: Ib67f99b0a24d513e230c7812bc04569d472fdc50
      22012ee9
  5. 22 Feb, 2013 2 commits
    • John Koleszar's avatar
      Merge "Code cleanup." into experimental · 606a2561
      John Koleszar authored
      606a2561
    • Dmitry Kovalev's avatar
      Code cleanup. · 548b4dd5
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords and parentheses, fixing indentation,
      making variable names lower case, using short expressions x *= c
      instead of x = x * c, minor code simplifications.
      
      Change-Id: If6a25fcf306d1db26e90d27e3c24a32735c607de
      548b4dd5