1. 19 Apr, 2013 5 commits
    • Paul Wilkins's avatar
      Mv ref candidates cut to 2. · de80da39
      Paul Wilkins authored
      Further simplification of mvref search to return
      only the top two candidates. Distance weights removed
      as the test order reflects distance anyway.
      
      Change-Id: I0518cab7280258fec2058670add4f853fab7b855
      de80da39
    • Paul Wilkins's avatar
      Removal of CONFIG_NEW_MVREF experiment. · aa76bf3d
      Paul Wilkins authored
      This experiment has failed to give much benefit but
      does add complexity so deprecated.
      
      Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
      aa76bf3d
    • Paul Wilkins's avatar
      Simplification of MVref search. · 92e8a3f5
      Paul Wilkins authored
      As we are no longer able to sort the candidate
      mvrefs in both encoder and decode and given
      that the cost of explicit signalling has proved
      prohibitive, it no longer makes sense to find more
      than 2 candidates.
      
      This patch:
      
      Modifies and simplifies add_candidate_mv()
      
      Removes the forced addition of a 0 vector in the
      MAX_MV_REF_CANDIDATES-1 position (in preparation
      to reducing MAX_MV_REF_CANDIDATES to 2).
      
      Re-orders the addition of candidates slightly.
      
      This actually gives small gains (circa 0.2% on std-hd)
      
      A subsequent patch will remove NEW_MVREF experiment,
      reduce MAX_MV_REF_CANDIDATES to 2 and remove distance
      weights as these are implicit now in the order.
      
      Change-Id: I3dbe1a6f8a1a18b3c108257069c22a1141a207a4
      92e8a3f5
    • John Koleszar's avatar
      Removing rounding from UV MV calculation · 2987fa1d
      John Koleszar authored
      Consider the previous behavior for the MV 1 3/8 (11/8 pel). In the
      existing code, the fractional part of the MV is considered separately,
      and rounded is applied, giving a result of 6/8. Rounding is not required
      in this case, as we're increasing the precision from a q3 to a q4, and
      the correct value 11/16 can be represented exactly.
      
      Slight gain observed (+.033 average on derf)
      
      Change-Id: I320e160e8b12f1dd66aa0ce7966b5088870fe9f8
      2987fa1d
    • John Koleszar's avatar
      make buid_inter_predictors block size agnostic (luma) · 4924934d
      John Koleszar authored
      This commit converts the luma versions of vp9_build_inter_predictors_sb
      to use a common function. Update the convolution functions to support
      block sizes larger than 16x16, and add a foreach_predicted_block walker.
      
      Next step will be to calculate the UV motion vector and implement SBUV,
      then fold in vp9_build_inter16x16_predictors_mb and SPLITMV.
      
      At the 16x16, 32x32, and 64x64 levels implemented in this commit, each
      plane is predicted with only a single call to vp9_build_inter_predictor.
      This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4
      goes away, then the prediction block walker can go away, since we'll
      always predict the whole bsize in a single step. Implemented using a
      block walker at this stage for SPLITMV, as a 4x4 "prediction block size"
      within the BLOCK_SIZE_MB16X16 macroblock. It would also support other
      rectangular sizes too, if the blocks smaller than 16x16 remain
      implemented as a SPLITMV-like thing. Just using 4x4 for now.
      
      There's also a potential to combine with the foreach_transformed_block
      walker if the logic for calculating the size of the subsampled
      transform is made more straightforward, perhaps as a consequence of
      supporing smaller macroblocks than 16x16. Will watch what happens there.
      
      Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
      4924934d
  2. 18 Apr, 2013 4 commits
    • Dmitry Kovalev's avatar
      Code cleanup inside findnearmv code. · 19e97145
      Dmitry Kovalev authored
      Using predefined clamp function, removing redundant variables, declare and
      init on the same line.
      
      Change-Id: I14636eb242194bac33f8a9d4a273a416d32856fc
      19e97145
    • Jingning Han's avatar
      Make the use of pred buffers consistent in MB/SB · 6f43ff58
      Jingning Han authored
      Use in-place buffers (dst of MACROBLOCKD) for  macroblock prediction.
      This makes the macroblock buffer handling consistent with those of
      superblock. Remove predictor buffer MACROBLOCKD.
      
      Change-Id: Id1bcd898961097b1e6230c10f0130753a59fc6df
      6f43ff58
    • John Koleszar's avatar
      convolve: support larger blocks, fix asm saturation bug · a9ebbcc3
      John Koleszar authored
      Updates the common convoloution code to support blocks larger than
      16x16, and rectangular blocks. This uncovered a bug in the SSSE3
      filtering routines due to the order of application of saturation.
      This commit fixes that bug, adjusts the unit test to bias its
      random values towards the extremes, and adds a test to ensure that
      all filters conform to the expected pairwise addition structure.
      
      Change-Id: I81f69668b1de0de5a8ed43f0643845641525c8f0
      a9ebbcc3
    • Dmitry Kovalev's avatar
      Motion vector decoding code cleanup. · eae38910
      Dmitry Kovalev authored
      Change-Id: I9790baedbd4acb7113575efc6f228b2656c42ff7
      eae38910
  3. 17 Apr, 2013 13 commits
  4. 16 Apr, 2013 7 commits
  5. 15 Apr, 2013 6 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
    • Jingning Han's avatar
      Add rectangular block size variance/sad functions. · aaf33d7d
      Jingning Han authored
      With this, the RD loop properly supports rectangular blocks.
      
      Change-Id: Iece79048fb4e84741ee1ada982da129a7bf00470
      aaf33d7d
    • Dmitry Kovalev's avatar
      Adding mv_joint_vertical and mv_joint_horizontal functions. · fd61b7ea
      Dmitry Kovalev authored
      Change-Id: Ieaec2c48f3752b8558ba051caaf4ba2ab0e9e84d
      fd61b7ea
    • Dmitry Kovalev's avatar
      Code cleanup inside vp9_reconintra4x4.c file. · 64de375e
      Dmitry Kovalev authored
      Using ROUND_POWER_OF_TWO macro, using array initialization syntax for
      less code.
      
      Change-Id: I661453a6b29a9046fcff0a3f18fccb452b5eb39d
      64de375e
    • Scott LaVarnway's avatar
      Removing extra params in dequant functions · 74610b1a
      Scott LaVarnway authored
      Now that the predictor is the dest, we do not need the
      extra parameters.
      
      Change-Id: I78db73d39b5aff62f15303f3d51ad2797eae74b6
      74610b1a
    • 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
  6. 12 Apr, 2013 4 commits
    • Dmitry Kovalev's avatar
      Intra code cleanup. · 78ddf964
      Dmitry Kovalev authored
      Removing redundant code.
      
      Change-Id: I71bfc40a1fb06d8e3149ed5400aa4dfd87a51aac
      78ddf964
    • Jingning Han's avatar
      Enable inter predictor for rectangular block size · 3ba9dd41
      Jingning Han authored
      Combine superblock inter predictors into a unified function that
      allows configurable block width and height. The inter predictions
      of block sizes smaller than 16x16 are handled differently. To be
      continued on merging them later.
      
      Change-Id: I14075959dd5e221f00c205c99ca35c1c31ef728e
      3ba9dd41
    • Yaowu Xu's avatar
      Reorder enum i4X4 predcition modes · c2ad69bc
      Yaowu Xu authored
      To match the order of  directional intra prediction modes for larger
      blocks, also renamed the i4x4 prediction modes to mirror the larger
      variants.
      
      Change-Id: I77cea4d0add6c7758460bf9c7a2fe59aca601f0b
      c2ad69bc
    • Yaowu Xu's avatar
      Rename B_PRED to I4X4_PRED · 7de5edd1
      Yaowu Xu authored
      So it is consistent with I8x8_PRED.
      
      Change-Id: Iefa65124b2419690d83e526c611129c0ede29d11
      7de5edd1
  7. 11 Apr, 2013 1 commit
    • Jingning Han's avatar
      Make intra predictor support rectangular blocks · 815e95fb
      Jingning Han authored
      The intra predictor supports configurable block sizes. It can handle
      intra prediction down to 4x4 sizes, when enabled in BLOCK_SIZE_TYPE.
      
      Change-Id: I7399ec2512393aa98aadda9813ca0c83e19af854
      815e95fb