1. 06 Sep, 2014 1 commit
  2. 05 Sep, 2014 5 commits
    • Yunqing Wang's avatar
      Correct the mode decisions in special cases · 1dd9a639
      Yunqing Wang authored
      The rate costs calculated for inter modes are not precise in some
      cases, which causes NEWMV is chosen instead of NEARESTMV, NEARMV,
      and ZEROMV. This patch added checks for these cases, and corrected
      the mode decisions.
      
      Borg tests at speed 3 showed:
      1. stdhd set: 0.102% PSNR gain and 0.088% SSIM gain.
      2. derf set:  0.147% PSNR gain and 0.132% SSIM gain.
      No speed change.
      
      Change-Id: I35d17684b89ad4734fb610942d707899146426db
      1dd9a639
    • Dmitry Kovalev's avatar
      Removing postproc mmx code. · 1100e262
      Dmitry Kovalev authored
      Removed functions:
      * vp9_post_proc_down_and_across_mmx
      * vp9_mbpost_proc_down_mmx
      * vp9_plane_add_noise_mmx
      
      They all have sse2 equivalent.
      
      Change-Id: I59c1fac12b7c96ca4538d455e4400c2b7875feff
      1100e262
    • James Zern's avatar
      fix x86-darwin* build · a8083449
      James Zern authored
      vp9_variance_sse2.c contains a mix of intrinsics and references to
      assembly which uses x86inc.asm; it's conditionally included as a result.
      
      Change-Id: I254451483a65881c0b8e18e27bf0c3ddef60c4ec
      a8083449
    • James Zern's avatar
      vp9: correct context buffer resize check · bb4950df
      James Zern authored
      allocations within vp9_alloc_context_buffers() rely on mi_rows/mi_cols
      individually, use those to determine whether to realloc rather than
      stride and stride * rows. this fixes a crash with some fuzzed files for
      invalid accesses into last_frame_seg_map and above_context.
      
      Change-Id: I7b9f40dcf170d443890f3bd2acd285507943c7d4
      bb4950df
    • James Zern's avatar
      vp9: fail decode if block/frame refs are corrupt · 440f5097
      James Zern authored
      proceeding using a corrupt (incompletely decoded) frame reference may
      lead to incorrect assumptions about allocation sizes leading to a crash.
      
      Change-Id: I76e74f2e1be127c2e2c7e1174bb3307497dfd23d
      440f5097
  3. 04 Sep, 2014 7 commits
  4. 03 Sep, 2014 10 commits
  5. 02 Sep, 2014 6 commits
    • Dmitry Kovalev's avatar
      Removing MMX SAD calculation code. · 318fc0c3
      Dmitry Kovalev authored
      Removed functions:
      * vp9_sad_16x16_mmx
      * vp9_sad_8x16_mmx
      * vp9_sad_16x8_mmx
      * vp9_sad_8x8_mmx
      * vp9_sad_4x4_mmx
      
      Change-Id: Ic5174b93b64d65d846f0c11e72cab149e9472bc3
      318fc0c3
    • Deb Mukherjee's avatar
      Adds config opt for highbitdepth + misc. vpx · 5acfafb1
      Deb Mukherjee authored
      Adds config parameter vp9_highbitdepth, to support highbitdepth profiles.
      Also includes most vpx level high bit-depth functions. However
      encode/decode in the highbitdepth profiles will not work until
      the rest of the code is in place.
      
      Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
      5acfafb1
    • Dmitry Kovalev's avatar
      Replacing asm 16x16 variance calculation with intrinsics. · 6f6bd282
      Dmitry Kovalev authored
      New code is 20% faster for 64-bit and 15% faster for 32-bit. Compiled
      using clang.
      
      Change-Id: Icfea461238411001fd093561293dbfedfbf8d0bb
      6f6bd282
    • Minghai Shang's avatar
      [svc] Temporal svc with two pass rate control · be3b08da
      Minghai Shang authored
      It's built based on current spatial svc code.
      We only support one spatial two temporal layers at this time.
      Change-Id: I1fdc8584354b910331e626bfae60473b3b701ba1
      be3b08da
    • Jingning Han's avatar
      Skip comp inter mode tests for arf coding · 33176fef
      Jingning Han authored
      This commit skips the compound inter mode prediction check in the
      rate-distortion optimization loop for ARF coding. It reduces the
      runtime for certain test clips at speed 3, at no compression
      performance change:
      
      bus CIF 1000 kbps, 8260 ms -> 8090 ms, 1.8% speed-up
      stockholm 720p 1000 kbps, 74453 ms -> 71826 ms, 2.9% speed-up
      
      No visible speed-up for pedestrian area 1080p at 2000 kbps.
      
      Change-Id: Ic68aa56837159b726563b784e2e3729e846465ad
      33176fef
    • Dmitry Kovalev's avatar
      Cleaning up vp9_variance_avx2.c. · 5c937db0
      Dmitry Kovalev authored
      Change-Id: I75eb47dd21f87015efd673dbd2aa71f4386afdf5
      5c937db0
  6. 30 Aug, 2014 2 commits
  7. 29 Aug, 2014 7 commits
    • Jingning Han's avatar
      Fix int64_t to unsigned int conversion warnings · 6ddf1e15
      Jingning Han authored
      Use unsigned int type to store the sse in the pixel domain. The
      precision is sufficient to handle sse of block size up to 64x64.
      The transform domain version however needs int64_t, since there is
      a transfer gain applied in the forward transformation that might
      cause unsigned int overflow.
      
      Change-Id: Ifef97c38597e426262290f35341fbb093cf0a079
      6ddf1e15
    • Yunqing Wang's avatar
      Minor fix in vp9_encoder.h · 96c43e8a
      Yunqing Wang authored
      Added the missing "int".
      
      Change-Id: I7c8af3dee700837b40f010d53e1431a59370ae3a
      96c43e8a
    • James Zern's avatar
      vp9: fix m/t loop filter invalid free · fec40f92
      James Zern authored
      store the number of allocated rows in VP9LfSync, the calculated values
      can not be relied on when dealing with corrupt material.
      
      Change-Id: I13b8bcec9738c299a71df726772ab7ac05511e5b
      fec40f92
    • Dmitry Kovalev's avatar
      Removing variance MMX code. · 12cd6f42
      Dmitry Kovalev authored
      Removed functions:
      * vp9_mse16x16_mmx
      * vp9_get_mb_ss_mmx
      * vp9_get4x4var_mmx
      * vp9_get8x8var_mmx
      * vp9_variance4x4_mmx
      * vp9_variance8x8_mmx
      * vp9_variance16x16_mmx
      * vp9_variance16x8_mmx
      * vp9_variance8x16_mmx
      
      They all have SSE2 equivalent.
      
      Change-Id: I3796f2477c4f59b35b4828f46a300c16e62a2615
      12cd6f42
    • Jingning Han's avatar
      Skip intra mode tests depending on inter residuals · 4282955e
      Jingning Han authored
      This commit allows encoder to skip intra coding mode test, when
      the known inter residual is less than the source variance. It
      reduces the runtime of speed 3 for test clips:
      bus cif 1000 kbps: 8587 ms -> 8260 ms, 3.8% speed-up
      pedestrian 1080p 2000 kbps: 161381 ms -> 155241 ms, 3.7% speed-up.
      
      The compression performance is down by
      derf   -0.36%
      stdhd  -0.25%
      
      Change-Id: I75ce1e035b4da2153cb1ac14111d1a07c05a735d
      4282955e
    • Jingning Han's avatar
      Extend block level sse to support multiple txfm blocks · 02e6ecdc
      Jingning Han authored
      This commit extends the sse and forward transform computation flag
      to support the case 64x64 blocks where there are 4 32x32 2D-DCT
      blocks.
      
      Change-Id: I86a3e805dfaa0f3abd812f590520c71aa0e40473
      02e6ecdc
    • James Zern's avatar
      vp9: sync workers at the start of decode_tiles_mt() · dbdff12b
      James Zern authored
      prevents any problems resuming decode after decoding a corrupt frame
      
      Change-Id: Ib7eb1b5c062aebe71074fef1ece32a32822c16be
      dbdff12b
  8. 28 Aug, 2014 2 commits
    • Dmitry Kovalev's avatar
      Implementing 4x4 variance calculation with SSE2. · dcac083c
      Dmitry Kovalev authored
      New SSE2 function is three times faster than MMX one.
      
      Change-Id: I4f387ce9f75b88379176ec7bdc62d86eb5f70fbe
      dcac083c
    • Dmitry Kovalev's avatar
      Removing alg_priv from vpx_codec_priv struct. · 73edeb03
      Dmitry Kovalev authored
      In order to understand memory layout consider the declaration of the
      following structs. The first one is a part of our API:
      
      struct vpx_codec_ctx {
        // ...
        struct vpx_codec_priv *priv;
      };
      
      The second one is defined in vpx_codec_internal.h:
      
      struct vpx_codec_priv {
        // ...
      };
      
      The following struct is defined 4 times for encoder/decoder VP8/VP9:
      
      struct vpx_codec_alg_priv {
        struct vpx_codec_priv base;
        // ... 
      };
      
      Private data allocation for the given ctx:
      
      struct vpx_codec_ctx *ctx = <get>
      struct vpx_codec_alg_priv *alg_priv = <allocate>
      ctx->priv = (struct vpx_codec_priv *)alg_priv;
      
      The cast works because vpx_codec_alg_priv has a
      vpx_codec_priv instance as a first member 'base'.
      
      Change-Id: I10d1afc8c9a7dfda50baade8c7b0296678bdb0d0
      73edeb03