History

Add arm asm code for processing.

Licai Guo committed 12 years ago

Commit e7cc8c21 parent 248f32424 files · +4330 −4204Browse files

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

Unified · Split

3 files
  1. codec/processing/src/downsample/downsample.cpp +10 −0
  2. codec/processing/src/downsample/downsample.h +13 −0
  3. codec/processing/src/downsample/downsamplefuncs.cpp +10 −0
codec/processing/src/downsample/downsample.cpp+10−0
@@ -75,6 +75,16 @@ void CDownsampling::InitDownsampleFuncs (SDownsampleFuncs& sDownsampleFunc, int · 74 unmodified lines
7575 }
7676 #endif//X86_ASM
7777
78+#if defined(HAVE_NEON)
79+ if (iCpuFlag & WELS_CPU_NEON) {
80+ sDownsampleFunc.pfHalfAverage[0] = DyadicBilinearDownsamplerWidthx32_neon;
81+ sDownsampleFunc.pfHalfAverage[1] = DyadicBilinearDownsampler_neon;
82+ sDownsampleFunc.pfHalfAverage[2] = DyadicBilinearDownsampler_neon;
83+ sDownsampleFunc.pfHalfAverage[3] = DyadicBilinearDownsampler_neon;
84+ sDownsampleFunc.pfGeneralRatioChroma = GeneralBilinearAccurateDownsamplerWrap_neon;
85+ sDownsampleFunc.pfGeneralRatioLuma = GeneralBilinearAccurateDownsamplerWrap_neon;
86+ }
87+#endif
7888 }
7989
8090 EResult CDownsampling::Process (int32_t iType, SPixMap* pSrcPixMap, SPixMap* pDstPixMap) {
codec/processing/src/downsample/downsample.h+13−0
@@ -103,7 +103,20 @@ void GeneralBilinearAccurateDownsampler_sse2 (uint8_t* pDst, const int32_t kiDst · 102 unmodified lines
103103 WELSVP_EXTERN_C_END
104104 #endif
105105
106+#ifdef HAVE_NEON
107+WELSVP_EXTERN_C_BEGIN
108+// iSrcWidth no limitation
109+HalveDownsampleFunc DyadicBilinearDownsampler_neon;
110+// iSrcWidth = x32 pixels
111+HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_neon;
112+
113+GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_neon;
114+
115+void GeneralBilinearAccurateDownsampler_neon( uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth, const int32_t kiDstHeight,
116+ uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
106117
118+WELSVP_EXTERN_C_END
119+#endif
107120
108121
109122 class CDownsampling : public IStrategy {
codec/processing/src/downsample/downsamplefuncs.cpp+10−0
@@ -229,4 +229,14 @@ void GeneralBilinearAccurateDownsampler_c (uint8_t* pDst, const int32_t kiDstStr · 228 unmodified lines
229229 //}
230230 #endif //X86_ASM
231231
232+#ifdef HAVE_NEON
233+void GeneralBilinearAccurateDownsamplerWrap_neon(uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth, const int32_t kiDstHeight,
234+ uint8_t* pSrc, const int32_t kiSrcStride, const int32_t kiSrcWidth, const int32_t kiSrcHeight) {
235+ const int32_t kiScaleBit = 15;
236+ const uint32_t kuiScale = (1 << kiScaleBit);
237+ uint32_t uiScalex = (uint32_t)((float)kiSrcWidth / (float)kiDstWidth * kuiScale);
238+ uint32_t uiScaley = (uint32_t)((float)kiSrcHeight / (float)kiDstHeight * kuiScale);
239+ GeneralBilinearAccurateDownsampler_neon(pDst, kiDstStride, kiDstWidth, kiDstHeight, pSrc, kiSrcStride, uiScalex, uiScaley);
240+}
241+#endif
232242 WELSVP_NAMESPACE_END

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