History

Add sad arm64 code to processing.

zhiliang wang committed 12 years ago

Commit 3139fe71 parent 11bf5755 files · +67 −0Browse files

Showing the changes to codec/processing/src (3 of 5 files). Show all

Unified · Split

3 files
  1. codec/processing/src/arm64/pixel_sad_aarch64_neon.S +50 −0
  2. codec/processing/src/common/common.h +6 −0
  3. codec/processing/src/scenechangedetection/SceneChangeDetection.h +6 −0
codec/processing/src/arm64/pixel_sad_aarch64_neon.S+50−0
@@ -0,0 +1,50 @@
1+/*!
2+ * \copy
3+ * Copyright (c) 2013, Cisco Systems
4+ * All rights reserved.
5+ *
6+ * Redistribution and use in source and binary forms, with or without
7+ * modification, are permitted provided that the following conditions
8+ * are met:
9+ *
10+ * * Redistributions of source code must retain the above copyright
11+ * notice, this list of conditions and the following disclaimer.
12+ *
13+ * * Redistributions in binary form must reproduce the above copyright
14+ * notice, this list of conditions and the following disclaimer in
15+ * the documentation and/or other materials provided with the
16+ * distribution.
17+ *
18+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29+ * POSSIBILITY OF SUCH DAMAGE.
30+ *
31+ */
32+
33+#ifdef HAVE_NEON_AARCH64
34+.text
35+#include "arm_arch64_common_macro.S"
36+
37+WELS_ASM_AARCH64_FUNC_BEGIN WelsProcessingSampleSad8x8_AArch64_neon
38+ ld1 {v0.8b}, [x0], x1
39+ ld1 {v1.8b}, [x2], x3
40+ uabdl v2.8h, v0.8b, v1.8b
41+.rept 7
42+ ld1 {v0.8b}, [x0], x1
43+ ld1 {v1.8b}, [x2], x3
44+ uabal v2.8h, v0.8b, v1.8b
45+.endr
46+ saddlv s2, v2.8h
47+ fmov w0, s2
48+WELS_ASM_AARCH64_FUNC_END
49+
50+#endif
codec/processing/src/common/common.h+6−0
@@ -69,6 +69,12 @@ int32_t WelsProcessingSampleSad8x8_neon (uint8_t*, int32_t, uint8_t*, int32_t); · 68 unmodified lines
6969 WELSVP_EXTERN_C_END
7070 #endif
7171
72+#ifdef HAVE_NEON_AARCH64
73+WELSVP_EXTERN_C_BEGIN
74+int32_t WelsProcessingSampleSad8x8_AArch64_neon (uint8_t*, int32_t, uint8_t*, int32_t);
75+WELSVP_EXTERN_C_END
76+#endif
77+
7278 WELSVP_NAMESPACE_END
7379
7480 #endif
codec/processing/src/scenechangedetection/SceneChangeDetection.h+6−0
@@ -83,6 +83,12 @@ class CSceneChangeDetectorVideo { · 82 unmodified lines
8383 }
8484 #endif
8585
86+#ifdef HAVE_NEON_AARCH64
87+ if (iCpuFlag & WELS_CPU_NEON) {
88+ m_pfSad = WelsProcessingSampleSad8x8_AArch64_neon;
89+ }
90+#endif
91+
8692 m_fSceneChangeMotionRatioLarge = SCENE_CHANGE_MOTION_RATIO_LARGE_VIDEO;
8793 m_fSceneChangeMotionRatioMedium = SCENE_CHANGE_MOTION_RATIO_MEDIUM;
8894 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t