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
      instructions.
      
      Change-Id: I61da2c3a44c06044225461f46bf487d83cba6c16
      08a668af
  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.
      
      BUG=chromium:98319
      
      Change-Id: Iefc1706152a549d8c4ae774c917596bf1c9492d8
      e4b3f03c
    • 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
      f2ad5234
  3. 01 Dec, 2017 1 commit
  4. 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
      acb94609
  5. 17 Oct, 2017 1 commit
  6. 12 Oct, 2017 1 commit
  7. 11 Oct, 2017 1 commit
  8. 26 Sep, 2017 1 commit
  9. 14 Sep, 2017 2 commits
  10. 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
      761f2f5c
  11. 02 Sep, 2017 1 commit
  12. 01 Sep, 2017 1 commit
    • 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
      practice).
      
      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
      d42e8761
  13. 04 Aug, 2017 1 commit
  14. 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
      b9577e07
  15. 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.
      
      Refer:
        vsx:
          vpx_tm_predictor_4x4_vsx @ third_party/libvpx/git_root/vpx_dsp/ppc/intrapred_vsx.c
        neon:
          vpx_tm_predictor_4x4_neon @ third_party/libvpx/git_root/vpx_dsp/arm/intrapred_neon_asm.asm
        sse2:
          tm_predictor_4x4 @ third_party/libvpx/git_root/vpx_dsp/x86/intrapred_sse2.asm
      
      BUG=b/63112600
      
      Tested:
        asan tests passed.
      
      Change-Id: I5f74b56e35c05b67851de8b5530aece213f2ce9d
      b72d3e8a
  16. 23 Jun, 2017 1 commit
  17. 22 Jun, 2017 2 commits
  18. 16 Jun, 2017 1 commit
    • Jerome Jiang's avatar
      Enable 8x8 skin detection for vp8. · a36017e0
      Jerome Jiang authored
      If 2 or more 8x8 blocks are identified as skin, the macroblock will be
      labeled as skin.
      
      Change-Id: I596542c81a2df9e96270cab39d920bbfeb02bc6e
      a36017e0
  19. 13 Jun, 2017 2 commits
  20. 10 Jun, 2017 1 commit
  21. 08 Jun, 2017 1 commit
  22. 01 Jun, 2017 1 commit
  23. 31 May, 2017 1 commit
  24. 30 May, 2017 1 commit
  25. 25 May, 2017 1 commit
  26. 17 May, 2017 1 commit
  27. 16 May, 2017 1 commit
    • Johann Koenig's avatar
      Revert "Add visibility="protected" attribute for global variables referenced in asm files." · 2300e166
      Johann Koenig authored
      This reverts commit 0d88e154.
      
      Reason for revert: chromium builds are failing to locate vpx_rv during dlopen()
      
      dlopen failed: cannot locate symbol "vpx_rv" referenced by "libstandalonelibwebviewchromium.so"
      
      Original change's description:
      > Add visibility="protected" attribute for global variables referenced in asm files.
      >
      > During aosp builds with binutils-2.27, we're seeing linker error
      > messages of this form:
      > libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible
      > symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared
      > object
      >
      > subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm".
      > Other messages refer to symbol references from deblock_sse2.o and
      > subpixel_sse2.o, also assembled from asm files.
      >
      > This change marks such symbols as having "protected" visibility. This
      > satisfies the linker as the symbols are not preemptible fr...
      2300e166
  28. 12 May, 2017 1 commit
    • Rahul Chaudhry's avatar
      Add visibility="protected" attribute for global variables referenced in asm files. · 0d88e154
      Rahul Chaudhry authored
      During aosp builds with binutils-2.27, we're seeing linker error
      messages of this form:
      libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible
      symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared
      object
      
      subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm".
      Other messages refer to symbol references from deblock_sse2.o and
      subpixel_sse2.o, also assembled from asm files.
      
      This change marks such symbols as having "protected" visibility. This
      satisfies the linker as the symbols are not preemptible from outside
      the shared library now, which I think is the original intent anyway.
      
      Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452
      0d88e154
  29. 25 Mar, 2017 1 commit
  30. 09 Mar, 2017 1 commit
  31. 08 Mar, 2017 1 commit
  32. 14 Feb, 2017 1 commit
  33. 12 Jan, 2017 1 commit
  34. 16 Dec, 2016 1 commit
    • Jim Bankoski's avatar
      vp8 : use threading mutex's for tsan only. · 318a1ff5
      Jim Bankoski authored
      To avoid decode performance hit of 2% when running on hyperthreaded
      cores.
      
      This patch only uses the mutex's when we are running tsan.
      
      This is safe because 32 bit operations like read and store are atomic
      on all the platforms we care about. Tsan warns about race situations,
      but in this case either situation ( read occurs before write or write
      before read) the worst case is that we go around one extra time in the
      loop.  So the ordering doesn't really matter.
      
      That said a few other things have been tried :
      
      for instance as per here:
      webrtc/base/atomicops.h#52
      
      In this patch they use:
      __atomic_load_n(i, __ATOMIC_ACQUIRE);
      __atomic_store_n(i, value, __ATOMIC_RELEASE);
      
      This code works on gcc, clang ( replacing protected write and read), and
      avoids tsan errors. Incurring no penalty in performance.  In C11 its
      replaced by straight atomic operands.
      
      However there is no equivalent in the visual studio's we support as
      int32 on all windows platforms is already atomic.  To avoid tsan like
      warnings on windows we'd need to use interlocked exchange and the
      end result doesn't gain us any thing.
      
      Change-Id: I2066e3c7f42641ebb23d53feb1f16f23f85bcf59
      318a1ff5
  35. 13 Dec, 2016 1 commit
  36. 22 Nov, 2016 1 commit