1. 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
  2. 21 Feb, 2012 1 commit
  3. 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
  4. 30 Jan, 2012 5 commits
    • John Koleszar's avatar
      RTCD: add arnr functions · 109b69a7
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system. It removes the last of the VP8_ENCODER_RTCD struct references.
      
      Change-Id: I2a44f52d7cccf5177e1ca98a028ead570d045395
      109b69a7
    • John Koleszar's avatar
      RTCD: add subpixel functions · f103dcef
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: I6c519ab61e4f4e0ebcc796f2df061f945c48cefe
      f103dcef
    • John Koleszar's avatar
      RTCD: add recon functions · fdb61a45
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: I9bfcf9bef65c3d4ba0fb9a3e1532bad1463a10d6
      fdb61a45
    • John Koleszar's avatar
      RTCD: add remaining IDCT functions · ab77b4e8
      John Koleszar authored
      This commit continues the process of converting to the new RTCD
      system.
      
      Change-Id: I03c4dbf30dfd3558b0e256ff9d3ff4c012aadc80
      ab77b4e8
    • John Koleszar's avatar
      New RTCD implementation · a910049a
      John Koleszar authored
      This is a proof of concept RTCD implementation to replace the current
      system of nested includes, prototypes, INVOKE macros, etc. Currently
      only the decoder specific functions are implemented in the new system.
      Additional functions will be added in subsequent commits.
      
      Overview:
        RTCD "functions" are implemented as either a global function pointer
        or a macro (when only one eligible specialization available).
        Functions which have RTCD specializations are listed using a simple
        DSL identifying the function's base name, its prototype, and the
        architecture extensions that specializations are available for.
      
      Advantages over the old system:
        - No INVOKE macros. A call to an RTCD function looks like an ordinary
          function call.
        - No need to pass vtables around.
        - If there is only one eligible function to call, the function is
          called directly, rather than indirecting through a function pointer.
        - Supports the notion of "required" extensions, so in combination with
          the above, on x86_64 if the best function available is sse2 or lower
          it will be called directly, since all x86_64 platforms implement
          sse2.
        - Elides all references to functions which will never be called, which
          could reduce binary size. For example if sse2 is required and there
          are both mmx and sse2 implementations of a certain function, the
          code will have no link time references to the mmx code.
        - Significantly easier to add a new function, just one file to edit.
      
      Disadvantages:
        - Requires global writable data (though this is not a new requirement)
        - 1 new generated source file.
      
      Change-Id: Iae6edab65315f79c168485c96872641c5aa09d55
      a910049a
  5. 06 Jan, 2012 1 commit
  6. 21 Dec, 2011 1 commit
  7. 16 Dec, 2011 1 commit
    • Scott LaVarnway's avatar
      Fixed mb_skip_coeff bug · 0ccefd2c
      Scott LaVarnway authored
      When mb_skip_coeff is set, the idct is not necessary.  Prior
      to this patch, the code would call idcts based on leftover
      eob information.  This patch will now skip the idct for
      SPLIT_MV and clear out the eobs for B_PRED, forcing the idct
      to be skipped.
      
      Change-Id: If5b0d2ed3ebd07789d30ec5160df927485fcaa17
      0ccefd2c
  8. 15 Dec, 2011 1 commit
    • Scott LaVarnway's avatar
      Moved dequant idct into common · a53d5a4c
      Scott LaVarnway authored
      These functions are now used by the encoder.
      This is WIP with the goal of creating a common idct/add for
      the encoder and decoder.  A boost of 1.8% was seen for
      the HD rt test clip used.
      
      [Tero] Added needed changes to ARM side.
      
      Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
      a53d5a4c
  9. 25 Nov, 2011 1 commit
    • Scott LaVarnway's avatar
      Modified the inverse walsh to output directly · 4a91541c
      Scott LaVarnway authored
      to the dqcoeff or qcoeff buffer.  The encoder would
      populate the dc coeffs of the y blocks as a separate
      stage (recon_dcblock) and the decoder would use a special
      version of the idct.  This change eliminates the extra copy
      and reduces the code footprint.
      
      [Tero] Added needed changes to armv6 and NEON assembly.
      
      Change-Id: I83202ffdbaf83f6e5dd69f4ba2519fcf0b13b3ba
      4a91541c
  10. 21 Nov, 2011 1 commit
  11. 09 Nov, 2011 1 commit
    • Tero Rintaluoma's avatar
      ARMv6 optimized Intra4x4 prediction · 5a2fd63a
      Tero Rintaluoma authored
      Added ARM optimized intra 4x4 prediction
       - 2x faster on Profiler compared to C-code compiled with -O3
       - Function interface changed a little to improve BLOCKD structure
         access
      
      Change-Id: I9bc2b723155943fe0cf03dd9ca5f1760f7a81f54
      5a2fd63a
  12. 01 Nov, 2011 1 commit
    • Stefan Holmer's avatar
      Changing decoder input partition API to input fragments. · 14272052
      Stefan Holmer authored
      Adding support for several partitions within one input fragment.
      This is necessary to fully support all possible packetization
      combinations in the VP8 RTP profile. Several partitions can
      be transmitted in the same packet, and they can only be split
      by reading the partition lengths from the bitstream.
      
      Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
      14272052
  13. 25 Oct, 2011 1 commit
    • Johann's avatar
      remove uninitialized variable warning · 9409af20
      Johann authored
      Restructure if statement to clarify the error condition. Trigger the
      error before clobbering pc-> variables.
      
      Change-Id: Id01cab798a341ce9899078fdcec265a0e942a0b7
      9409af20
  14. 18 Oct, 2011 1 commit
    • Scott LaVarnway's avatar
      Remove usage of predict buffer for decode · ed9c66f5
      Scott LaVarnway authored
      Instead of using the predict buffer, the decoder now writes
      the predictor into the recon buffer.  For blocks with eob=0,
      unnecessary idcts can be eliminated.  This gave a performance
      boost of ~1.8% for the HD clips used.
      
      Tero: Added needed changes to ARM side and scheduled some
            assembly code to prevent interlocks.
      
      Patch Set 6:  Merged (I1bcdca7a95aacc3a181b9faa6b10e3a71ee24df3)
      into this commit because of similarities in the idct
      functions.
      Patch Set 7: EC bug fix.
      
      Change-Id: Ie31d90b5d3522e1108163f2ac491e455e3f955e6
      ed9c66f5
  15. 19 Sep, 2011 1 commit
    • Stefan Holmer's avatar
      Fix necessary for input partitions iface to match the RTP profile · e529a825
      Stefan Holmer authored
      These changes fixes a glitch between the RTP profile and the input
      partitions interface. Since there's no way for the user to know the
      actual number of partitions, the decoder have to read the
      multi_token_paritition bits also when input partitions mode is
      enabled.
      
      Included are also a couple of fixes for issues with independent
      partitions and uninitialized memory reads.
      
      Change-Id: I6f93b15287d291169ed681898ed3fbcc5dc81837
      e529a825
  16. 16 Sep, 2011 1 commit
    • Scott LaVarnway's avatar
      clamp_mvs() using the wrong motion vector information · c0ee870b
      Scott LaVarnway authored
      In the "Removed bmi copy to/from BLOCKD" commit, the copy
      to the bmi in BLOCKD was eliminated.  The clamp_mvs() used
      the bmi in BLOCKD, which now contains incorrect values.  This
      patch fixes this problem.
      
      Change-Id: I8eca1eaf4015052b0b63e90876f7ad321aba7cff
      c0ee870b
  17. 24 Aug, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed bmi copy to/from BLOCKD · b870947d
      Scott LaVarnway authored
      for SPLITMV and B_PRED modes.  Modified code to use the bmi
      found in mode_info_context instead of BLOCKD.  On the decode
      side, the uvmvs are calculated only when required, instead of
      every macroblock.  This is WIP. (bmi should eventually be
      removed from BLOCKD)
      Small performance gains noticed for RT encodes and decodes.(VGA)
      
      Change-Id: I2ed7f0fd5ca733655df684aa82da575c77a973e7
      b870947d
  18. 12 Aug, 2011 3 commits
    • Stefan Holmer's avatar
      Disable error concealment until first key frame is decoded · a609be56
      Stefan Holmer authored
      When error concealment is enabled the first key frame must
      be successfully received before error concealment is activated.
      Error concealment will be activated when the delta following
      delta frame is received.
      
      Also fixed a couple of bugs related to error tracking in
      multi-threading. And avoiding decoding corrupt residual
      when we have multiple non-resilient partitions.
      
      Change-Id: I45c4bb296e2f05f57624aef500a874faf431a60d
      a609be56
    • John Koleszar's avatar
      Fix potential OOB read with Error Concealment · cdae03a4
      John Koleszar authored
      This patch fixes an OOB read when error concealment is enabled and the
      partition sizes are corrupt. The partition size read from the bitstream
      was not being validated in EC mode.
      
      Change-Id: Ia81dfd4bce1ab29ee78e42320abe52cee8318974
      cdae03a4
    • Stefan Holmer's avatar
      Disable error concealment until first key frame is decoded · 3e10be93
      Stefan Holmer authored
      When error concealment is enabled the first key frame must
      be successfully received before error concealment is activated.
      Error concealment will be activated when the delta following
      delta frame is received.
      
      Also fixed a couple of bugs related to error tracking in
      multi-threading. And avoiding decoding corrupt residual
      when we have multiple non-resilient partitions.
      
      Change-Id: I45c4bb296e2f05f57624aef500a874faf431a60d
      3e10be93
  19. 11 Aug, 2011 1 commit
    • John Koleszar's avatar
      Fix potential OOB read with Error Concealment · 810a06b1
      John Koleszar authored
      This patch fixes an OOB read when error concealment is enabled and the
      partition sizes are corrupt. The partition size read from the bitstream
      was not being validated in EC mode.
      
      Change-Id: Ia81dfd4bce1ab29ee78e42320abe52cee8318974
      810a06b1
  20. 22 Jul, 2011 1 commit
    • Johann's avatar
      fix sharpness bug and clean up · a04ed0e8
      Johann authored
      sharpness was not recalculated in vp8cx_pick_filter_level_fast
      
      remove last_filter_type. all values are calculated, don't need to update
      the lfi data when it changes.
      
      always use cm->sharpness_level. the extra indirection was annoying.
      
      don't track last frame_type or sharpness_level manually. frame type
      only matters for motion search and sharpness_level is taken care of in
      frame_init
      
      move function declarations to their proper header
      
      Change-Id: I7ef037bd4bf8cf5e37d2d36bd03b5e22a2ad91db
      a04ed0e8
  21. 28 Jun, 2011 3 commits
    • John Koleszar's avatar
      Use MAX_ENTROPY_TOKENS and ENTROPY_NODES more consistently · b32da7c3
      John Koleszar authored
      There were many instances in the code of vp8_coef_tokens and
      vp8_coef_tokens-1, which was a preprocessor macro despite the naming
      convention. Replace these with MAX_ENTROPY_TOKENS and ENTROPY_NODES,
      respectively.
      
      Change-Id: I72c4f6c7634c94e1fa066cd511471e5592c748da
      b32da7c3
    • Gaute Strokkenes's avatar
      Simplify decode_macroblock. · 81c05464
      Gaute Strokkenes authored
      Change-Id: Ieb2f3827ae7896ae594203b702b3e8fa8fb63d37
      81c05464
    • Stefan Holmer's avatar
      New ways of passing encoded data between encoder and decoder. · 7296b3f9
      Stefan Holmer authored
      With this commit frames can be received partition-by-partition
      from the encoder and passed partition-by-partition to the
      decoder.
      
      At the encoder-side this makes it easier to split encoded
      frames at partition boundaries, useful when packetizing
      frames. When VPX_CODEC_USE_OUTPUT_PARTITION is enabled,
      several VPX_CODEC_CX_FRAME_PKT packets will be returned
      from vpx_codec_get_cx_data(), containing one partition
      each. The partition_id (starting at 0) specifies the decoding
      order of the partitions. All partitions but the last has
      the VPX_FRAME_IS_FRAGMENT flag set.
      
      At the decoder this opens up the possibility of decoding partition
      N even though partition N-1 was lost (given that independent
      partitioning has been enabled in the encoder) if more info
      about the missing parts of the stream is available through
      external signaling.
      
      Each partition is passed to the decoder through the
      vpx_codec_decode() function, with the data pointer pointing
      to the start of the partition, and with data_sz equal to the
      size of the partition. Missing partitions can be signaled to
      the decoder by setting data != NULL and data_sz = 0. When
      all partitions have been given to the decoder "end of data"
      should be signaled by calling vpx_codec_decode() with
      data = NULL and data_sz = 0.
      
      The first partition is the first partition according to the
      VP8 bitstream + the uncompressed data chunk + DCT address
      offsets if multiple residual partitions are used.
      
      Change-Id: I5bc0682b9e4112e0db77904755c694c3c7ac6e74
      7296b3f9
  22. 27 Jun, 2011 1 commit
    • Stefan Holmer's avatar
      Adding support for error concealment in multi-threaded decoding · ba0822ba
      Stefan Holmer authored
      Also includes a couple of error concealment bug fixes:
      - the segment_id wasn't properly initialized when missing
      - when interpolating and no neighbors are found, set to zero
      - clear the qcoef buffer when concealing an MB
      
      Change-Id: Id79c876b41d78b559a2241e9cd0fd2cae6198f49
      ba0822ba
  23. 14 Jun, 2011 1 commit
    • James Zern's avatar
      fix corrupt frame leak · 532c30c8
      James Zern authored
      If setup_token_decoder reported an internal error the memory allocated
      there would not be freed in the resulting call to _remove_decompressor.
      
      Change-Id: Ib459de222d76b1910d6f449cdcd01663447dbdf6
      532c30c8
  24. 02 Jun, 2011 1 commit
    • Scott LaVarnway's avatar
      Removed B_MODE_INFO · 773768ae
      Scott LaVarnway authored
      Declared the bmi in BLOCKD as a union instead of B_MODE_INFO.
      Then removed B_MODE_INFO completely.
      
      Change-Id: Ieb7469899e265892c66f7aeac87b7f2bf38e7a67
      773768ae
  25. 24 May, 2011 2 commits
    • Scott LaVarnway's avatar
      Removed unused variable warnings · cfab2cae
      Scott LaVarnway authored
      Change-Id: I6e5e921f03dc15a72da89a457848d519647677a3
      cfab2cae
    • Scott LaVarnway's avatar
      MODE_INFO size reduction · e11f21af
      Scott LaVarnway authored
      Declared the bmi in MODE_INFO as a union instead of B_MODE_INFO.
      This reduced the memory footprint by 518,400 bytes for 1080
      resolutions.  The decoder performance improved by ~4% for the
      clip used and the encoder showed very small improvements. (0.5%)
      This reduction was first mentioned to me by John K. and in a
      later discussion by Yaowu.
      This is WIP.
      
      Change-Id: I8e175fdbc46d28c35277302a04bee4540efc8d29
      e11f21af
  26. 19 May, 2011 1 commit
    • Stefan Holmer's avatar
      Adding error-concealment to the decoder. · d04f8523
      Stefan Holmer authored
      The error-concealer is plugged in after any motion vectors have been
      decoded. It tries to estimate any missing motion vectors from the
      motion vectors of the previous frame. Intra blocks with missing
      residual are replaced with inter blocks with estimated motion vectors.
      
      This feature was developed in a separate sandbox
      (sandbox/holmer/error-concealment).
      
      Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
      d04f8523
  27. 28 Apr, 2011 1 commit
  28. 27 Apr, 2011 1 commit
    • Ronald S. Bultje's avatar
      SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}(). · 1083fe49
      Ronald S. Bultje authored
      decoding
      
      before
      10.425
      10.432
      10.423
      =10.426
      
      after:
      10.405
      10.416
      10.398
      =10.406, 0.2% faster
      
      encoding
      
      before
      14.252
      14.331
      14.250
      14.223
      14.241
      14.220
      14.221
      =14.248
      
      after
      14.095
      14.090
      14.085
      14.095
      14.064
      14.081
      14.089
      =14.086, 1.1% faster
      
      Change-Id: I483d3d8f0deda8ad434cea76e16028380722aee2
      1083fe49
  29. 26 Apr, 2011 1 commit
    • Scott LaVarnway's avatar
      Test vector mismatch fix · 7a2b9c50
      Scott LaVarnway authored
      Fixed test vector mismatch that was introduced
      in the "Removed dc_diff from MB_MODE_INFO"
      (Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931)
      
      Change-Id: I98fa509b418e757b5cdc4baa71202f4168dc14ec
      7a2b9c50
  30. 21 Apr, 2011 2 commits
    • Scott LaVarnway's avatar
      Removed unnecessary frame type checks · 6f6cd3ab
      Scott LaVarnway authored
      ref_frame is set to INTRA_FRAME for keyframes.  The B_PRED
      mode is only used in intra frames.
      
      Change-Id: I9bac8bec7c736300d47994f3cb570329edf11ec0
      6f6cd3ab
    • Scott LaVarnway's avatar
      Removed dc_diff from MB_MODE_INFO · 3698c1f6
      Scott LaVarnway authored
      The dc_diff flag is used to skip loopfiltering.  Instead
      of setting this flag in the decoder/encoder, we now check
      for this condition in the loopfilter.
      
      Change-Id: Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931
      3698c1f6