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
75 }75 }
76#endif//X86_ASM76#endif//X86_ASM
77 77
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
78}88}
79 89
80EResult CDownsampling::Process (int32_t iType, SPixMap* pSrcPixMap, SPixMap* pDstPixMap) {90EResult 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
103WELSVP_EXTERN_C_END103WELSVP_EXTERN_C_END
104#endif104#endif
105 105
106#ifdef HAVE_NEON
107WELSVP_EXTERN_C_BEGIN
108// iSrcWidth no limitation
109HalveDownsampleFunc DyadicBilinearDownsampler_neon;
110// iSrcWidth = x32 pixels
111HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_neon;
112
113GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_neon;
114
115void 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);
106 117
118WELSVP_EXTERN_C_END
119#endif
107 120
108 121
109class CDownsampling : public IStrategy {122class 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
229//}229//}
230#endif //X86_ASM230#endif //X86_ASM
231 231
232#ifdef HAVE_NEON
233void 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
232WELSVP_NAMESPACE_END242WELSVP_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