1. 15 Dec, 2017 1 commit
    • Shiyou Yin's avatar
      vp8: [loongson] optimize loopfilter v2. · 08a668af
      Shiyou Yin authored
      Optimize function vp8_mbloop_filter_vertical_edge_mmi and
      function vp8_mbloop_filter_horizontal_edge_mmi.
      Make full use of memory loading delay slot and reduce unnecessary
      Change-Id: I61da2c3a44c06044225461f46bf487d83cba6c16
  2. 14 Dec, 2017 2 commits
    • Johann's avatar
      add copyright to rtcd files · e4b3f03c
      Johann authored
      Allows them to pass the license check in chromium.
      Change-Id: Iefc1706152a549d8c4ae774c917596bf1c9492d8
    • Shiyou Yin's avatar
      vp8: [loongson] optimize sixtab predict v2. · f2ad5234
      Shiyou Yin authored
      1. Delete unnecessary zero setting process.
      2. Optimize the method of calculating SSE in vpx_varianceWxH.
      Change-Id: I8bab801416e7f4958c28c6d080e3cf785a50f82b
  3. 07 Dec, 2017 1 commit
  4. 06 Dec, 2017 1 commit
  5. 01 Dec, 2017 1 commit
  6. 29 Nov, 2017 2 commits
  7. 08 Nov, 2017 1 commit
    • paulwilkins's avatar
      CVBR command line option. · 93e83fd7
      paulwilkins authored
      Added command line control of Corpus VBR.
      The new corpus vbr mode is a variant of standard
      VBR (end-usage=0) where the complexity distribution
      mid point is passed in rather than calculated for a specific
      clip or chunk.
      The new variant is enabled by setting a new command line
      parameter --corpus-complexity to a zero value. Omitting
      this parameter or setting it to 0 will cause the codec to use
      standard vbr mode.
      The correct value for a given corpus needs to be derived
      experimentally using a training set such that the average
      rate for the corpus is close to the target value.
      For example our using our low res test set with upper and lower
      vbr limits of 50%-150% and a corpus complexity value of 650
      gives a similar average data rate across the set to using standard
      vbr. However, with the corpus mode easier clips will be allocated
      fewer bits and harder clips more bits rather than having the same
      rate target for all.
      Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
  8. 27 Oct, 2017 1 commit
    • James Zern's avatar
      vp8: correct if/else '{' placement · acb94609
      James Zern authored
      swap '{' and c-style comments removing a few redundant ones along the
      way; covers most leftovers from the clang-tidy run against an
      x86_64-linux config.
      Change-Id: I67a45596f80a12389faca49c5be440875092a7df
  9. 17 Oct, 2017 2 commits
    • Jerome Jiang's avatar
      vp8: Enable use of ROI map. · dbb8926b
      Jerome Jiang authored
      Disable cyclic refresh if ROI is used and add flag to properly handle
      the static_thresh deltas.
      Remove the ROI test for cyclic refresh (it's allowed but disabled if ROI
      is used).
      Add an example in vpx_temporal_svc_encoder.c. Turned off by default.
      Change-Id: Ief9ba1d7f967bc00511b412b491c3f70943bfbda
    • Shiyou Yin's avatar
      vp8: [loongson] optimize idct with mmi · 577d4fa7
      Shiyou Yin authored
      1. vp8_dequant_idct_add_y_block_mmi
      2. vp8_dequant_idct_add_uv_block_mmi
      Change-Id: I9987147be2685ac79d4b045d1d56f6709ee1223c
  10. 12 Oct, 2017 1 commit
  11. 11 Oct, 2017 1 commit
  12. 26 Sep, 2017 1 commit
  13. 20 Sep, 2017 1 commit
  14. 14 Sep, 2017 2 commits
  15. 11 Sep, 2017 1 commit
    • Shiyou Yin's avatar
      vp8: [loongson] optimize loopfilter with mmi · 761f2f5c
      Shiyou Yin authored
      1. vp8_loop_filter_horizontal_edge_mmi
      2. vp8_loop_filter_vertical_edge_mmi
      3. vp8_mbloop_filter_horizontal_edge_mmi
      4. vp8_mbloop_filter_vertical_edge_mmi
      5. vp8_loop_filter_simple_horizontal_edge_mmi
      6. vp8_loop_filter_simple_vertical_edge_mmi
      Change-Id: Ie34bbff3a16cff64e39a50798afd2b7dac9bcdc3
  16. 02 Sep, 2017 1 commit
  17. 01 Sep, 2017 3 commits
    • clang-format's avatar
      apply clang-format · 7587a975
      clang-format authored
      Change-Id: If4c3e8a396d0fcb304f407b44e28cac3219f038c
    • Peter Boström's avatar
      Prevent data race from low-pass filter. · 9ab4d9df
      Peter Boström authored
      Makes main thread wait for the filter level to be picked to avoid a race
      between the LPF thread and update_reference_frames(). This also
      re-enables the failing tests under thread_sanitizer where this data race
      was detected.
      Change-Id: I7f5797142ea0200394309842ce3e91a480be4fbc
    • Peter Boström's avatar
      Add atomics to vp8 synchronization primitives. · d42e8761
      Peter Boström authored
      Fixes issue on iPad Pro 10.5 (and probably other places) where threads
      are not properly synchronized. On x86 this data race was benign as load
      and store instructions are atomic, they were being atomic in practice as
      the program hasn't been observed to be miscompiled.
      Such guarantees are not made outside x86, and real problems manifested
      where libvpx reliably reproduced a broken bitstream for even just the
      initial keyframe. This was detected in WebRTC where this device started
      using multithreading (as its CPU count is higher than earlier devices,
      where the problem did not manifest as single-threading was used in
      This issue was not detected under thread-sanitizer bots as mutexes were
      conditionally used under this platform to simulate the protected read
      and write semantics that were in practice provided on x86 platforms.
      This change also removes several mutexes, so encoder/decoder state is
      lighter-weight after this change and we do not need to initialize so
      many mutexes (this was done even on non-thread-sanitizer platforms where
      they were unused).
      Change-Id: If41fcb0d99944f7bbc8ec40877cdc34d672ae72a
  18. 15 Aug, 2017 1 commit
    • Jerome Jiang's avatar
      Clean up writing YUV files for debug purpose. · a153080b
      Jerome Jiang authored
      Change legacy vp8/9_write_yuv_frame to vpx_write_yuv_files.
      Delete some flags that can be enabled during build.
      To enable writing denoised YUV, use the following command line:
      CFLAGS='-DOUTPUT_YUV_DENOISED' ./configure
      For skinmap, use CFLAGS='-DOUTPUT_YUV_SKINMAP'
      Change-Id: I236974ac8b3cf279d20c4dc7f6162d8b480b6528
  19. 11 Aug, 2017 1 commit
  20. 04 Aug, 2017 1 commit
  21. 02 Aug, 2017 1 commit
    • Marco's avatar
      vp8: Drop due to overshoot for non-screen content. · b9577e07
      Marco authored
      For 1 pass CBR mode:
      Apply the logic for dropping (and re-adjusting rate control)
      due to large overshoot to the case of non-screen content when
      drop_frames_allowed is enabled.
      For the non-screen content case: add additional condition that
      rate correction factor is close to minimum state, and flag to
      constrain the frequency of the dropping.
      Also handle the case of temporal layers and multi-res encoding.
      Add some flags/counters to the layer context for temporal layers.
      For multi-res: drop due to overshoot is checked on lowest stream,
      and if overshoot is detected we force drops on all upper streams
      for that frame.
      This feature is to avoid large frame sizes on big content
      changes following low content period.
      No change in behavior for screen_content_mode = 2.
      Change-Id: I797ab236cbbf3b15cad439e9a227fbebced632e6
  22. 26 Jul, 2017 1 commit
  23. 19 Jul, 2017 1 commit
    • Han Shen's avatar
      Earmark extra space for VSX. · b72d3e8a
      Han Shen authored
      Backend specific optimization for PPC VSX reads 16 bytes, whereas arm neon /
      sse2 only reads <= 8 bytes. Although the extra bytes read are actually never
      used, this is not a warrant for groping around.  Fixed by allocating more when
      building for VSX. This is reported by asan.
      Also note - PPC does have assembly that loads 64-bit content from memory - lxsdx
      loads one 64-bit doubleword (whereas lxvd2x loads two 64-bit doubleword) from
      memory. However, we only have "vec_vsx_ld" builtins that mapped to lxvd2x, no
      builtins to lxsdx. The only way to access lxsdx is through inline assembly,
      which does not fit well in the origin paradigm.
          vpx_tm_predictor_4x4_vsx @ third_party/libvpx/git_root/vpx_dsp/ppc/intrapred_vsx.c
          vpx_tm_predictor_4x4_neon @ third_party/libvpx/git_root/vpx_dsp/arm/intrapred_neon_asm.asm
          tm_predictor_4x4 @ third_party/libvpx/git_root/vpx_dsp/x86/intrapred_sse2.asm
        asan tests passed.
      Change-Id: I5f74b56e35c05b67851de8b5530aece213f2ce9d
  24. 23 Jun, 2017 3 commits
  25. 22 Jun, 2017 8 commits