History

add new c and assembly functions to optimize downsampler when downscale equal 1:3/1:4

Guangwei Wang committed 11 years ago

Commit 64657d31 parent 69a62ea9 files · +1125 −8Browse files

Showing the changes to codec/processing/src/downsample/downsample.h (1 of 9 files). Show all

Unified · Split

codec/processing/src/downsample/downsample.h+32−5
@@ -54,20 +54,29 @@ typedef void (HalveDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride, · 53 unmodified lines
54 uint8_t* pSrc, const int32_t kiSrcStride,54 uint8_t* pSrc, const int32_t kiSrcStride,
55 const int32_t kiSrcWidth, const int32_t kiSrcHeight);55 const int32_t kiSrcWidth, const int32_t kiSrcHeight);
56 56
57typedef void (SpecificDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride,
58 uint8_t* pSrc, const int32_t kiSrcStride,
59 const int32_t kiSrcWidth, const int32_t kiHeight);
60
57typedef void (GeneralDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,61typedef void (GeneralDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
58 const int32_t kiDstHeight,62 const int32_t kiDstHeight,
59 uint8_t* pSrc, const int32_t kiSrcStride, const int32_t kiSrcWidth, const int32_t kiSrcHeight);63 uint8_t* pSrc, const int32_t kiSrcStride, const int32_t kiSrcWidth, const int32_t kiSrcHeight);
60 64
61typedef HalveDownsampleFunc* PHalveDownsampleFunc;65typedef HalveDownsampleFunc* PHalveDownsampleFunc;
66typedef SpecificDownsampleFunc* PSpecificDownsampleFunc;
62typedef GeneralDownsampleFunc* PGeneralDownsampleFunc;67typedef GeneralDownsampleFunc* PGeneralDownsampleFunc;
63 68
64HalveDownsampleFunc DyadicBilinearDownsampler_c;69HalveDownsampleFunc DyadicBilinearDownsampler_c;
65GeneralDownsampleFunc GeneralBilinearFastDownsampler_c;70GeneralDownsampleFunc GeneralBilinearFastDownsampler_c;
66GeneralDownsampleFunc GeneralBilinearAccurateDownsampler_c;71GeneralDownsampleFunc GeneralBilinearAccurateDownsampler_c;
72SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_c;
73SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_c;
67 74
68typedef struct {75typedef struct {
69 // align_index: 0 = x32; 1 = x16; 2 = x8; 3 = common case left;76 // align_index: 0 = x32; 1 = x16; 2 = x8; 3 = common case left;
70 PHalveDownsampleFunc pfHalfAverage[4];77 PHalveDownsampleFunc pfHalfAverage[4];
78 PSpecificDownsampleFunc pfOneThirdDownsampler;
79 PSpecificDownsampleFunc pfQuarterDownsampler;
71 PGeneralDownsampleFunc pfGeneralRatioLuma;80 PGeneralDownsampleFunc pfGeneralRatioLuma;
72 PGeneralDownsampleFunc pfGeneralRatioChroma;81 PGeneralDownsampleFunc pfGeneralRatioChroma;
73} SDownsampleFuncs;82} SDownsampleFuncs;
@@ -93,10 +102,19 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_sse4; · 19 unmodified lines
93GeneralDownsampleFunc GeneralBilinearFastDownsamplerWrap_sse2;102GeneralDownsampleFunc GeneralBilinearFastDownsamplerWrap_sse2;
94GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_sse2;103GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_sse2;
95 104
105SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_ssse3;
106SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_sse4;
107SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_sse;
108SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_ssse3;
109SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_sse4;
110
96void GeneralBilinearFastDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,111void GeneralBilinearFastDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
97 const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);112 const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX,
113 const uint32_t kuiScaleY);
98void GeneralBilinearAccurateDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,114void GeneralBilinearAccurateDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
99 const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);115 const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX,
116 const uint32_t kuiScaleY);
117
100WELSVP_EXTERN_C_END118WELSVP_EXTERN_C_END
101#endif119#endif
102 120
@@ -109,6 +127,10 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_neon; · 6 unmodified lines
109 127
110GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_neon;128GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_neon;
111 129
130SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_neon;
131
132SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_neon;
133
112void GeneralBilinearAccurateDownsampler_neon (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,134void GeneralBilinearAccurateDownsampler_neon (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
113 const int32_t kiDstHeight,135 const int32_t kiDstHeight,
114 uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);136 uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
@@ -125,8 +147,13 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_AArch64_neon; · 10 unmodified lines
125 147
126GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_AArch64_neon;148GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_AArch64_neon;
127 149
128void GeneralBilinearAccurateDownsampler_AArch64_neon (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth, const int32_t kiDstHeight,150SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_AArch64_neon;
129 uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);151
152SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_AArch64_neon;
153
154void GeneralBilinearAccurateDownsampler_AArch64_neon (uint8_t* pDst, const int32_t kiDstStride,
155 const int32_t kiDstWidth, const int32_t kiDstHeight,
156 uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
130 157
131WELSVP_EXTERN_C_END158WELSVP_EXTERN_C_END
132#endif159#endif

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